From dd38ab6f9563186af8f0d585ef328f05bb5e451e Mon Sep 17 00:00:00 2001 From: adragusin Date: Tue, 28 Apr 2020 17:57:45 +0300 Subject: [PATCH] Updated AsMapInterface method for DiameterAgent/Added test --- config/diametercfg.go | 18 +++++++++++++-- config/diametercfg_test.go | 46 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/config/diametercfg.go b/config/diametercfg.go index d58725047..82117ffcb 100644 --- a/config/diametercfg.go +++ b/config/diametercfg.go @@ -18,7 +18,11 @@ along with this program. If not, see package config -import "github.com/cgrates/cgrates/utils" +import ( + "strings" + + "github.com/cgrates/cgrates/utils" +) type DiameterAgentCfg struct { Enabled bool // enables the diameter agent: @@ -141,12 +145,22 @@ func (ds *DiameterAgentCfg) AsMapInterface(separator string) map[string]interfac requestProcessors[i] = item.AsMapInterface(separator) } + sessionSConns := make([]string, len(ds.SessionSConns)) + for i, item := range ds.SessionSConns { + buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaSessionS) + if item == buf { + sessionSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaSessionS, utils.EmptyString) + } else { + sessionSConns[i] = item + } + } + return map[string]interface{}{ utils.EnabledCfg: ds.Enabled, utils.ListenNetCfg: ds.ListenNet, utils.ListenCfg: ds.Listen, utils.DictionariesPathCfg: ds.DictionariesPath, - utils.SessionSConnsCfg: ds.SessionSConns, + utils.SessionSConnsCfg: sessionSConns, utils.OriginHostCfg: ds.OriginHost, utils.OriginRealmCfg: ds.OriginRealm, utils.VendorIdCfg: ds.VendorId, diff --git a/config/diametercfg_test.go b/config/diametercfg_test.go index 3c99009fa..90f23dd4a 100644 --- a/config/diametercfg_test.go +++ b/config/diametercfg_test.go @@ -72,3 +72,49 @@ func TestDiameterAgentCfgloadFromJsonCfg(t *testing.T) { t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(dacfg)) } } + +func TestDiameterAgentCfgAsMapInterface(t *testing.T) { + var dacfg DiameterAgentCfg + cfgJSONStr := `{ + "diameter_agent": { + "enabled": false, + "listen": "127.0.0.1:3868", + "dictionaries_path": "/usr/share/cgrates/diameter/dict/", + "sessions_conns": ["*internal"], + "origin_host": "CGR-DA", + "origin_realm": "cgrates.org", + "vendor_id": 0, + "product_name": "CGRateS", + "synced_conn_requests": true, + "templates":{}, + "request_processors": [], + }, +}` + eMap := map[string]interface{}{ + "asr_template": "", + "concurrent_requests": 0, + "dictionaries_path": "/usr/share/cgrates/diameter/dict/", + "enabled": false, + "forced_disconnect": "", + "listen": "127.0.0.1:3868", + "listen_net": "", + "origin_host": "CGR-DA", + "origin_realm": "cgrates.org", + "product_name": "CGRateS", + "rar_template": "", + "sessions_conns": []string{"*internal"}, + "synced_conn_requests": true, + "vendor_id": 0, + "templates": map[string][]map[string]interface{}{}, + "request_processors": []map[string]interface{}{}, + } + if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + t.Error(err) + } else if jsnDaCfg, err := jsnCfg.DiameterAgentJsonCfg(); err != nil { + t.Error(err) + } else if err = dacfg.loadFromJsonCfg(jsnDaCfg, utils.INFIELD_SEP); err != nil { + t.Error(err) + } else if rcv := dacfg.AsMapInterface(utils.EmptyString); !reflect.DeepEqual(eMap, rcv) { + t.Errorf("Expected: %+v,\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } +}