From eaa8147633c00115c982d4deda02d78180bb38fc Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 7 Jan 2019 13:11:13 +0200 Subject: [PATCH] Added code to load diameter dictionaries only once --- agents/diam_it_test.go | 5 +---- agents/diamclient.go | 8 +++++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/agents/diam_it_test.go b/agents/diam_it_test.go index 9db362f09..a3983dfc9 100644 --- a/agents/diam_it_test.go +++ b/agents/diam_it_test.go @@ -63,7 +63,7 @@ var sTestsDiam = []func(t *testing.T){ testDiamItKillEngine, } -//Test start here +// Test start here func TestDiamItTcp(t *testing.T) { diamConfigDIR = "diamagent" for _, stest := range sTestsDiam { @@ -131,9 +131,6 @@ func testDiamItStartEngine(t *testing.T) { } func testDiamItConnectDiameterClient(t *testing.T) { - if diamConfigDIR == "diamsctpagent" || diamConfigDIR == "diamagentmaxconn" { - daCfg.DiameterAgentCfg().DictionariesPath = "" - } diamClnt, err = NewDiameterClient(daCfg.DiameterAgentCfg().Listen, "INTEGRATION_TESTS", daCfg.DiameterAgentCfg().OriginRealm, daCfg.DiameterAgentCfg().VendorId, daCfg.DiameterAgentCfg().ProductName, utils.DIAMETER_FIRMWARE_REVISION, diff --git a/agents/diamclient.go b/agents/diamclient.go index aa83caf28..e3383c3b4 100644 --- a/agents/diamclient.go +++ b/agents/diamclient.go @@ -22,6 +22,7 @@ import ( "fmt" "net" "strings" + "sync" "time" "github.com/cgrates/cgrates/utils" @@ -31,6 +32,8 @@ import ( "github.com/fiorix/go-diameter/diam/sm" ) +var dictOnce sync.Once + func NewDiameterClient(addr, originHost, originRealm string, vendorId int, productName string, firmwareRev int, dictsDir string, network string) (*DiameterClient, error) { cfg := &sm.Settings{ @@ -74,7 +77,10 @@ func NewDiameterClient(addr, originHost, originRealm string, vendorId int, produ }, } if len(dictsDir) != 0 { - if err := loadDictionaries(dictsDir, "DiameterClient"); err != nil { + var err error + err = nil + dictOnce.Do(func() { err = loadDictionaries(dictsDir, "DiameterClient") }) + if err != nil { return nil, err } }