From 30b348d694a2b1dbf98d3e1aa3f269a70143da46 Mon Sep 17 00:00:00 2001 From: porosnicuadrian Date: Wed, 16 Sep 2020 17:40:03 +0300 Subject: [PATCH] Updated stordbcfg AsMapInterface method --- config/stordbcfg.go | 24 ++++++++++-------- config/stordbcfg_test.go | 53 ++++++++++++++++++++++------------------ 2 files changed, 43 insertions(+), 34 deletions(-) diff --git a/config/stordbcfg.go b/config/stordbcfg.go index 5f25ec255..2c528420f 100644 --- a/config/stordbcfg.go +++ b/config/stordbcfg.go @@ -109,23 +109,27 @@ func (dbcfg *StorDbCfg) Clone() *StorDbCfg { } } -func (dbcfg *StorDbCfg) AsMapInterface() map[string]interface{} { - items := make(map[string]interface{}) - for key, item := range dbcfg.Items { - items[key] = item.AsMapInterface() - } - dbPort, _ := strconv.Atoi(dbcfg.Port) - - return map[string]interface{}{ +func (dbcfg *StorDbCfg) AsMapInterface() (initialMP map[string]interface{}) { + initialMP = map[string]interface{}{ utils.DataDbTypeCfg: utils.Meta + dbcfg.Type, utils.DataDbHostCfg: dbcfg.Host, - utils.DataDbPortCfg: dbPort, utils.DataDbNameCfg: dbcfg.Name, utils.DataDbUserCfg: dbcfg.User, utils.DataDbPassCfg: dbcfg.Password, utils.StringIndexedFieldsCfg: dbcfg.StringIndexedFields, utils.PrefixIndexedFieldsCfg: dbcfg.PrefixIndexedFields, - utils.ItemsCfg: items, utils.OptsCfg: dbcfg.Opts, } + if dbcfg.Items != nil { + items := make(map[string]interface{}) + for key, item := range dbcfg.Items { + items[key] = item.AsMapInterface() + } + initialMP[utils.ItemsCfg] = items + } + if dbcfg.Port != utils.EmptyString { + dbPort, _ := strconv.Atoi(dbcfg.Port) + initialMP[utils.DataDbPortCfg] = dbPort + } + return } diff --git a/config/stordbcfg_test.go b/config/stordbcfg_test.go index b42afb6b2..01dd7acae 100644 --- a/config/stordbcfg_test.go +++ b/config/stordbcfg_test.go @@ -171,33 +171,38 @@ func TestStorDbCfgAsMapInterface(t *testing.T) { }` eMap := map[string]interface{}{ - "db_type": "*mysql", - "db_host": "127.0.0.1", - "db_port": 3306, - "db_name": "cgrates", - "db_user": "cgrates", - "db_password": "", - "string_indexed_fields": []string{}, - "prefix_indexed_fields": []string{}, - "opts": map[string]interface{}{ - "max_open_conns": 100., - "max_idle_conns": 10., - "conn_max_lifetime": 0., - "query_timeout": "10s", - "sslmode": "disable", + utils.DataDbTypeCfg: "*mysql", + utils.DataDbHostCfg: "127.0.0.1", + utils.DataDbPortCfg: 3306, + utils.DataDbNameCfg: "cgrates", + utils.DataDbUserCfg: "cgrates", + utils.DataDbPassCfg: "", + utils.StringIndexedFieldsCfg: []string{}, + utils.PrefixIndexedFieldsCfg: []string{}, + utils.OptsCfg: map[string]interface{}{ + utils.MaxOpenConnsCfg: 100., + utils.MaxIdleConnsCfg: 10., + utils.ConnMaxLifetimeCfg: 0., + utils.QueryTimeoutCfg: "10s", + utils.SSLModeCfg: "disable", }, - "items": map[string]interface{}{ - "session_costs": map[string]interface{}{"remote": false, "replicate": false}, - "cdrs": map[string]interface{}{"remote": false, "replicate": false}, + utils.ItemsCfg: map[string]interface{}{ + utils.SessionCostsTBL: map[string]interface{}{utils.RemoteCfg: false, utils.ReplicateCfg: false}, + utils.CdrsCfg: map[string]interface{}{utils.RemoteCfg: false, utils.ReplicateCfg: false}, }, } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + if cfgCgr, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) - } else if jsnStoreDbCfg, err := jsnCfg.DbJsonCfg(STORDB_JSN); err != nil { - t.Error(err) - } else if err = dbcfg.loadFromJsonCfg(jsnStoreDbCfg); err != nil { - t.Error(err) - } else if rcv := dbcfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { - t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } else { + rcv := cfgCgr.storDbCfg.AsMapInterface() + if !reflect.DeepEqual(eMap[utils.ItemsCfg].(map[string]interface{})[utils.SessionSConnsCfg], + rcv[utils.ItemsCfg].(map[string]interface{})[utils.SessionSConnsCfg]) { + t.Errorf("Expected %+v, received %+v", eMap[utils.ItemsCfg].(map[string]interface{})[utils.SessionSConnsCfg], + rcv[utils.ItemsCfg].(map[string]interface{})[utils.SessionSConnsCfg]) + } else if !reflect.DeepEqual(eMap[utils.OptsCfg], rcv[utils.OptsCfg]) { + t.Errorf("Expected %+v \n, received %+v", eMap[utils.OptsCfg], rcv[utils.OptsCfg]) + } else if !reflect.DeepEqual(eMap[utils.PrefixIndexedFieldsCfg], rcv[utils.PrefixIndexedFieldsCfg]) { + t.Errorf("Expected %+v \n, received %+v", eMap[utils.PrefixIndexedFieldsCfg], rcv[utils.PrefixIndexedFieldsCfg]) + } } }