From 47ffcf2caa214a4f8a3cde3aee67266e3fd1e6ac Mon Sep 17 00:00:00 2001 From: porosnicuadrian Date: Tue, 22 Sep 2020 10:12:48 +0300 Subject: [PATCH] Updated kamagent AsMapInterface method and added a new type(Timezone) in KamAgentJsonCfg stuct --- config/config_json_test.go | 3 +- config/kamagentcfg.go | 49 +++++++++++++---------- config/kamagentcfg_test.go | 82 +++++++++++++++----------------------- config/libconfig_json.go | 1 + 4 files changed, 63 insertions(+), 72 deletions(-) diff --git a/config/config_json_test.go b/config/config_json_test.go index 2e76c34a2..858cce495 100755 --- a/config/config_json_test.go +++ b/config/config_json_test.go @@ -711,11 +711,12 @@ func TestKamAgentJsonCfg(t *testing.T) { Reconnects: utils.IntPointer(5), }, }, + Timezone: utils.StringPointer(utils.EmptyString), } if cfg, err := dfCgrJSONCfg.KamAgentJsonCfg(); err != nil { t.Error(err) } else if !reflect.DeepEqual(eCfg, cfg) { - t.Errorf("Expecting: %s, received: %s: ", + t.Errorf("Expecting: %s \n, received: %s: ", utils.ToJSON(eCfg), utils.ToJSON(cfg)) } } diff --git a/config/kamagentcfg.go b/config/kamagentcfg.go index 854d3c180..f352eda69 100644 --- a/config/kamagentcfg.go +++ b/config/kamagentcfg.go @@ -47,12 +47,13 @@ func (self *KamConnCfg) loadFromJsonCfg(jsnCfg *KamConnJsonCfg) error { return nil } -func (kamCfg *KamConnCfg) AsMapInterface() map[string]interface{} { - return map[string]interface{}{ +func (kamCfg *KamConnCfg) AsMapInterface() (initialMP map[string]interface{}) { + initialMP = map[string]interface{}{ utils.AliasCfg: kamCfg.Alias, utils.AddressCfg: kamCfg.Address, utils.ReconnectsCfg: kamCfg.Reconnects, } + return } // SM-Kamailio config section @@ -92,31 +93,35 @@ func (ka *KamAgentCfg) loadFromJsonCfg(jsnCfg *KamAgentJsonCfg) error { ka.EvapiConns[idx].loadFromJsonCfg(jsnConnCfg) } } + if jsnCfg.Timezone != nil { + ka.Timezone = *jsnCfg.Timezone + } return nil } -func (ka *KamAgentCfg) AsMapInterface() map[string]interface{} { - evapiConns := make([]map[string]interface{}, len(ka.EvapiConns)) - for i, item := range ka.EvapiConns { - evapiConns[i] = item.AsMapInterface() +func (ka *KamAgentCfg) AsMapInterface() (initialMP map[string]interface{}) { + initialMP = map[string]interface{}{ + utils.EnabledCfg: ka.Enabled, + utils.CreateCdrCfg: ka.CreateCdr, + utils.TimezoneCfg: ka.Timezone, } - - 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 + if ka.EvapiConns != nil { + evapiConns := make([]map[string]interface{}, len(ka.EvapiConns)) + for i, item := range ka.EvapiConns { + evapiConns[i] = item.AsMapInterface() } + initialMP[utils.EvapiConnsCfg] = evapiConns } - - return map[string]interface{}{ - utils.EnabledCfg: ka.Enabled, - utils.SessionSConnsCfg: sessionSConns, - utils.CreateCdrCfg: ka.CreateCdr, - utils.EvapiConnsCfg: evapiConns, - utils.TimezoneCfg: ka.Timezone, + if ka.SessionSConns != nil { + sessionSConns := make([]string, len(ka.SessionSConns)) + for i, item := range ka.SessionSConns { + if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaSessionS) { + sessionSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaSessionS, utils.EmptyString) + } else { + sessionSConns[i] = item + } + } + initialMP[utils.SessionSConnsCfg] = sessionSConns } - + return } diff --git a/config/kamagentcfg_test.go b/config/kamagentcfg_test.go index 42262fc98..cfbde4147 100644 --- a/config/kamagentcfg_test.go +++ b/config/kamagentcfg_test.go @@ -90,64 +90,48 @@ func TestKamConnCfgloadFromJsonCfg(t *testing.T) { } func TestKamAgentCfgAsMapInterface(t *testing.T) { - var kamagcfg KamAgentCfg cfgJSONStr := `{ "kamailio_agent": { - "enabled": false, - "sessions_conns": [""], - "create_cdr": false, - "timezone": "", + "sessions_conns": ["*conn1","*conn2"], + "create_cdr": true, + "timezone": "UTC", "evapi_conns":[ - {"address": "127.0.0.1:8448", "reconnects": 5} + {"address": "127.0.0.1:8448", "reconnects": 5, "alias": ""} ], }, }` 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": ""}, + utils.EnabledCfg: false, + utils.SessionSConnsCfg: []string{"*conn1", "*conn2"}, + utils.CreateCdrCfg: true, + utils.TimezoneCfg: "UTC", + utils.EvapiConnsCfg: []map[string]interface{}{ + {utils.AddressCfg: "127.0.0.1:8448", utils.ReconnectsCfg: 5, utils.AliasCfg: ""}, }, } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(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)) + } else if rcv := cgrCfg.kamAgentCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) { + t.Errorf("Expected %+v \n, received %+v", eMap, rcv) + } +} + +func TestKamAgentCfgAsMapInterface1(t *testing.T) { + cfgJSONStr := `{ + "kamailio_agent": {}, +}` + eMap := map[string]interface{}{ + utils.EnabledCfg: false, + utils.SessionSConnsCfg: []string{"*internal"}, + utils.CreateCdrCfg: false, + utils.TimezoneCfg: "", + utils.EvapiConnsCfg: []map[string]interface{}{ + {utils.AddressCfg: "127.0.0.1:8448", utils.ReconnectsCfg: 5, utils.AliasCfg: ""}, + }, + } + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { + t.Error(err) + } else if rcv := cgrCfg.kamAgentCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) { + t.Errorf("Expected %+v \n, received %+v", eMap, rcv) } } diff --git a/config/libconfig_json.go b/config/libconfig_json.go index b331cd290..c9d4d6cbd 100755 --- a/config/libconfig_json.go +++ b/config/libconfig_json.go @@ -314,6 +314,7 @@ type KamAgentJsonCfg struct { Sessions_conns *[]string Create_cdr *bool Evapi_conns *[]*KamConnJsonCfg + Timezone *string } // Represents one connection instance towards Kamailio