Added code to load diameter dictionaries only once

This commit is contained in:
Trial97
2019-01-07 13:11:13 +02:00
committed by Dan Christian Bogos
parent 067fd96e60
commit eaa8147633
2 changed files with 8 additions and 5 deletions

View File

@@ -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,

View File

@@ -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
}
}