From d2f1ce6cfd7a49db07ed705cd803c3c1bfb409c7 Mon Sep 17 00:00:00 2001 From: adragusin Date: Tue, 28 Apr 2020 17:58:14 +0300 Subject: [PATCH] Updated AsMapInterface method for KamAgent/Added test --- config/kamagentcfg.go | 18 +++++++++-- config/kamagentcfg_test.go | 63 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 2 deletions(-) diff --git a/config/kamagentcfg.go b/config/kamagentcfg.go index 418995c0c..854d3c180 100644 --- a/config/kamagentcfg.go +++ b/config/kamagentcfg.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" +) // Represents one connection instance towards Kamailio type KamConnCfg struct { @@ -97,9 +101,19 @@ func (ka *KamAgentCfg) AsMapInterface() map[string]interface{} { evapiConns[i] = item.AsMapInterface() } + sessionSConns := make([]string, len(ka.SessionSConns)) + for i, item := range ka.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: ka.Enabled, - utils.SessionSConnsCfg: ka.SessionSConns, + utils.SessionSConnsCfg: sessionSConns, utils.CreateCdrCfg: ka.CreateCdr, utils.EvapiConnsCfg: evapiConns, utils.TimezoneCfg: ka.Timezone, diff --git a/config/kamagentcfg_test.go b/config/kamagentcfg_test.go index fc29bd368..42262fc98 100644 --- a/config/kamagentcfg_test.go +++ b/config/kamagentcfg_test.go @@ -88,3 +88,66 @@ func TestKamConnCfgloadFromJsonCfg(t *testing.T) { t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(kamcocfg)) } } + +func TestKamAgentCfgAsMapInterface(t *testing.T) { + var kamagcfg KamAgentCfg + cfgJSONStr := `{ + "kamailio_agent": { + "enabled": false, + "sessions_conns": [""], + "create_cdr": false, + "timezone": "", + "evapi_conns":[ + {"address": "127.0.0.1:8448", "reconnects": 5} + ], + }, + }` + eMap := map[string]interface{}{ + "enabled": false, + "sessions_conns": []string{""}, + "create_cdr": false, + "timezone": "", + "evapi_conns": []map[string]interface{}{ + {"address": "127.0.0.1:8448", "reconnects": 5, "alias": ""}, + }, + } + if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + t.Error(err) + } else if jsnKamAgCfg, err := jsnCfg.KamAgentJsonCfg(); err != nil { + t.Error(err) + } else if err = kamagcfg.loadFromJsonCfg(jsnKamAgCfg); err != nil { + t.Error(err) + } else if rcv := kamagcfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { + t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } + + cfgJSONStr = `{ + "kamailio_agent": { + "enabled": false, + "sessions_conns": ["*internal"], + "create_cdr": false, + "timezone": "", + "evapi_conns":[ + {"address": "127.0.0.1:8448", "reconnects": 5} + ], + }, +}` + eMap = map[string]interface{}{ + "enabled": false, + "sessions_conns": []string{"*internal"}, + "create_cdr": false, + "timezone": "", + "evapi_conns": []map[string]interface{}{ + {"address": "127.0.0.1:8448", "reconnects": 5, "alias": ""}, + }, + } + if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + t.Error(err) + } else if jsnKamAgCfg, err := jsnCfg.KamAgentJsonCfg(); err != nil { + t.Error(err) + } else if err = kamagcfg.loadFromJsonCfg(jsnKamAgCfg); err != nil { + t.Error(err) + } else if rcv := kamagcfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { + t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } +}