Updated configs AsMapInterface method

This commit is contained in:
porosnicuadrian
2020-09-16 15:04:18 +03:00
committed by Dan Christian Bogos
parent 00ecfbee13
commit bebd8f8115
7 changed files with 165 additions and 53 deletions

View File

@@ -106,3 +106,12 @@ func handleConfigSFile(path string, w http.ResponseWriter) {
}
return
}
func (cScfg *ConfigSCfg) AsMapInterface() (initialMP map[string]interface{}) {
initialMP = map[string]interface{}{
utils.EnabledCfg: cScfg.Enabled,
utils.UrlCfg: cScfg.Url,
utils.RootDirCfg: cScfg.RootDir,
}
return
}

64
config/configs_test.go Normal file
View File

@@ -0,0 +1,64 @@
package config
import (
"reflect"
"testing"
"github.com/cgrates/cgrates/utils"
)
func TestConfigsloadFromJsonCfg(t *testing.T) {
jsonCfgs := &ConfigSCfgJson{
Enabled: utils.BoolPointer(true),
Url: utils.StringPointer("/randomURL/"),
Root_dir: utils.StringPointer("/randomPath/"),
}
expectedCfg := &ConfigSCfg{
Enabled: true,
Url: "/randomURL/",
RootDir: "/randomPath/",
}
if cgrCfg, err := NewDefaultCGRConfig(); err != nil {
t.Error(err)
} else if err := cgrCfg.configSCfg.loadFromJsonCfg(jsonCfgs); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(cgrCfg.configSCfg, expectedCfg) {
t.Errorf("Expected %+v, received %+v", expectedCfg, cgrCfg.configSCfg)
}
}
func TestConfigsAsMapInterface(t *testing.T) {
cfgsJSONStr := `{
"configs": {
"enabled": true,
"url": "",
"root_dir": "/var/spool/cgrates/configs"
},
}`
eMap := map[string]interface{}{
utils.EnabledCfg: true,
utils.UrlCfg: "",
utils.RootDirCfg: "/var/spool/cgrates/configs",
}
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgsJSONStr); err != nil {
t.Error(err)
} else if rcv := cgrCfg.configSCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) {
t.Errorf("Expected %+v, received %+v", eMap, rcv)
}
}
func TestConfigsAsMapInterface2(t *testing.T) {
cfgsJSONStr := `{
"configs":{}
}`
eMap := map[string]interface{}{
utils.EnabledCfg: false,
utils.UrlCfg: "/configs/",
utils.RootDirCfg: "/var/spool/cgrates/configs",
}
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgsJSONStr); err != nil {
t.Error(err)
} else if rcv := cgrCfg.configSCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) {
t.Errorf("Expected %+v, received %+v", eMap, rcv)
}
}

View File

@@ -129,25 +129,29 @@ func (dbcfg *DataDbCfg) Clone() *DataDbCfg {
}
}
func (dbcfg *DataDbCfg) AsMapInterface() map[string]interface{} {
items := make(map[string]interface{})
for key, item := range dbcfg.Items {
items[key] = item.AsMapInterface()
}
dbPort, _ := strconv.Atoi(dbcfg.DataDbPort)
return map[string]interface{}{
func (dbcfg *DataDbCfg) AsMapInterface() (initialMP map[string]interface{}) {
initialMP = map[string]interface{}{
utils.DataDbTypeCfg: utils.Meta + dbcfg.DataDbType,
utils.DataDbHostCfg: dbcfg.DataDbHost,
utils.DataDbPortCfg: dbPort,
utils.DataDbNameCfg: dbcfg.DataDbName,
utils.DataDbUserCfg: dbcfg.DataDbUser,
utils.DataDbPassCfg: dbcfg.DataDbPass,
utils.RmtConnsCfg: dbcfg.RmtConns,
utils.RplConnsCfg: dbcfg.RplConns,
utils.ItemsCfg: items,
utils.OptsCfg: dbcfg.Opts,
}
if dbcfg.Items != nil {
items := make(map[string]interface{}, len(dbcfg.Items))
for key, item := range dbcfg.Items {
items[key] = item.AsMapInterface()
}
initialMP[utils.ItemsCfg] = items
}
if dbcfg.DataDbPort != "" {
dbPort, _ := strconv.Atoi(dbcfg.DataDbPort)
initialMP[utils.DataDbPortCfg] = dbPort
}
return
}
type ItemOpt struct {
@@ -158,13 +162,14 @@ type ItemOpt struct {
APIKey string
}
func (itm *ItemOpt) AsMapInterface() map[string]interface{} {
return map[string]interface{}{
func (itm *ItemOpt) AsMapInterface() (initialMP map[string]interface{}) {
initialMP = map[string]interface{}{
utils.RemoteCfg: itm.Remote,
utils.ReplicateCfg: itm.Replicate,
utils.RouteID: itm.RouteID,
utils.APIKey: itm.APIKey,
}
return
}
func (itm *ItemOpt) loadFromJsonCfg(jsonItm *ItemOptJson) (err error) {

View File

@@ -444,6 +444,29 @@ func TestDataDbCfgAsMapInterface(t *testing.T) {
"*reverse_destinations": map[string]interface{}{"remote": false, "replicate": false, "ApiKey": "", "RouteID": ""},
},
}
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
t.Error(err)
} else {
rcv := cgrCfg.dataDbCfg.AsMapInterface()
if !reflect.DeepEqual(eMap[utils.ItemsCfg].(map[string]interface{})[utils.MetaAccounts],
rcv[utils.ItemsCfg].(map[string]interface{})[utils.MetaAccounts]) {
t.Errorf("Expected %+v, received %+v", eMap[utils.ItemsCfg].(map[string]interface{})[utils.MetaAccounts],
rcv[utils.ItemsCfg].(map[string]interface{})[utils.MetaAccounts])
} else if !reflect.DeepEqual(eMap[utils.ItemsCfg].(map[string]interface{})[utils.MetaReverseDestinations],
rcv[utils.ItemsCfg].(map[string]interface{})[utils.MetaReverseDestinations]) {
t.Errorf("Expected %+v, received %+v", eMap[utils.ItemsCfg].(map[string]interface{})[utils.MetaReverseDestinations],
rcv[utils.ItemsCfg].(map[string]interface{})[utils.MetaReverseDestinations])
}
}
/*if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
t.Error(err)
} else if rcv := cgrCfg.dataDbCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) {
t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
}
*/
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
t.Error(err)
} else if jsnDataDbCfg, err := jsnCfg.DbJsonCfg(DATADB_JSN); err != nil {
@@ -451,6 +474,6 @@ func TestDataDbCfgAsMapInterface(t *testing.T) {
} else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); 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))
t.Errorf("Expected %+v, recieved %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
}
}

View File

@@ -118,37 +118,40 @@ func (da *DiameterAgentCfg) loadFromJsonCfg(jsnCfg *DiameterAgentJsonCfg, separa
return
}
func (ds *DiameterAgentCfg) AsMapInterface(separator string) map[string]interface{} {
requestProcessors := make([]map[string]interface{}, len(ds.RequestProcessors))
for i, item := range ds.RequestProcessors {
requestProcessors[i] = item.AsMapInterface(separator)
func (ds *DiameterAgentCfg) AsMapInterface(separator string) (initialMP map[string]interface{}) {
initialMP = map[string]interface{}{
utils.EnabledCfg: ds.Enabled,
utils.ListenNetCfg: ds.ListenNet,
utils.ListenCfg: ds.Listen,
utils.DictionariesPathCfg: ds.DictionariesPath,
utils.OriginHostCfg: ds.OriginHost,
utils.OriginRealmCfg: ds.OriginRealm,
utils.VendorIdCfg: ds.VendorId,
utils.ProductNameCfg: ds.ProductName,
utils.ConcurrentReqsCfg: ds.ConcurrentReqs,
utils.SyncedConnReqsCfg: ds.SyncedConnReqs,
utils.ASRTemplateCfg: ds.ASRTemplate,
utils.RARTemplateCfg: ds.RARTemplate,
utils.ForcedDisconnectCfg: ds.ForcedDisconnect,
}
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
if ds.RequestProcessors != nil {
requestProcessors := make([]map[string]interface{}, len(ds.RequestProcessors))
for i, item := range ds.RequestProcessors {
requestProcessors[i] = item.AsMapInterface(separator)
}
initialMP[utils.RequestProcessorsCfg] = requestProcessors
}
return map[string]interface{}{
utils.EnabledCfg: ds.Enabled,
utils.ListenNetCfg: ds.ListenNet,
utils.ListenCfg: ds.Listen,
utils.DictionariesPathCfg: ds.DictionariesPath,
utils.SessionSConnsCfg: sessionSConns,
utils.OriginHostCfg: ds.OriginHost,
utils.OriginRealmCfg: ds.OriginRealm,
utils.VendorIdCfg: ds.VendorId,
utils.ProductNameCfg: ds.ProductName,
utils.ConcurrentReqsCfg: ds.ConcurrentReqs,
utils.SyncedConnReqsCfg: ds.SyncedConnReqs,
utils.ASRTemplateCfg: ds.ASRTemplate,
utils.RARTemplateCfg: ds.RARTemplate,
utils.ForcedDisconnectCfg: ds.ForcedDisconnect,
utils.RequestProcessorsCfg: requestProcessors,
if ds.SessionSConns != nil {
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
}
}
initialMP[utils.SessionSConnsCfg] = sessionSConns
}
return
}

View File

@@ -72,7 +72,7 @@ func TestDiameterAgentCfgloadFromJsonCfg(t *testing.T) {
}
func TestDiameterAgentCfgAsMapInterface(t *testing.T) {
var dacfg DiameterAgentCfg
//var dacfg DiameterAgentCfg
cfgJSONStr := `{
"diameter_agent": {
"enabled": false,
@@ -89,12 +89,12 @@ func TestDiameterAgentCfgAsMapInterface(t *testing.T) {
}`
eMap := map[string]interface{}{
"asr_template": "",
"concurrent_requests": 0,
"concurrent_requests": -1,
"dictionaries_path": "/usr/share/cgrates/diameter/dict/",
"enabled": false,
"forced_disconnect": "",
"forced_disconnect": "*none",
"listen": "127.0.0.1:3868",
"listen_net": "",
"listen_net": "tcp",
"origin_host": "CGR-DA",
"origin_realm": "cgrates.org",
"product_name": "CGRateS",
@@ -104,13 +104,20 @@ func TestDiameterAgentCfgAsMapInterface(t *testing.T) {
"vendor_id": 0,
"request_processors": []map[string]interface{}{},
}
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(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))
} else if rcv := cgrCfg.diameterAgentCfg.AsMapInterface(utils.EmptyString); !reflect.DeepEqual(rcv, eMap) {
t.Errorf("Expected %+v \n, received %+v", eMap, rcv)
}
/*
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))
}
*/
}

View File

@@ -2152,6 +2152,7 @@ const (
// SureTax
const (
RootDirCfg = "root_dir"
UrlCfg = "url"
ClientNumberCfg = "client_number"
ValidationKeyCfg = "validation_key"