Updated dispatcherhcfg AsMapInterface method

This commit is contained in:
porosnicuadrian
2020-09-17 11:17:42 +03:00
committed by Dan Christian Bogos
parent d4f7be8652
commit 367535459b
2 changed files with 103 additions and 40 deletions

View File

@@ -58,19 +58,22 @@ func (dps *DispatcherHCfg) loadFromJsonCfg(jsnCfg *DispatcherHJsonCfg) (err erro
return
}
func (dps *DispatcherHCfg) AsMapInterface() map[string]interface{} {
hosts := make(map[string][]map[string]interface{})
for tnt, hs := range dps.Hosts {
for _, h := range hs {
hosts[tnt] = append(hosts[tnt], h.AsMapInterface())
}
}
return map[string]interface{}{
func (dps *DispatcherHCfg) AsMapInterface() (initialMP map[string]interface{}) {
initialMP = map[string]interface{}{
utils.EnabledCfg: dps.Enabled,
utils.DispatchersConnsCfg: dps.DispatchersConns,
utils.HostsCfg: hosts,
utils.RegisterIntervalCfg: dps.RegisterInterval,
}
if dps.Hosts != nil {
hosts := make(map[string][]map[string]interface{})
for tnt, hs := range dps.Hosts {
for _, h := range hs {
hosts[tnt] = append(hosts[tnt], h.AsMapInterface())
}
}
initialMP[utils.HostsCfg] = hosts
}
return
}
type DispatcherHRegistarCfg struct {
@@ -94,10 +97,11 @@ func NewDispatcherHRegistarCfg(jsnCfg DispatcherHRegistarJsonCfg) (dhr *Dispatch
return
}
func (dhr *DispatcherHRegistarCfg) AsMapInterface() map[string]interface{} {
return map[string]interface{}{
func (dhr *DispatcherHRegistarCfg) AsMapInterface() (initialMP map[string]interface{}) {
initialMP = map[string]interface{}{
utils.IDCfg: dhr.ID,
utils.RegisterTransportCfg: dhr.RegisterTransport,
utils.RegisterTLSCfg: dhr.RegisterTLS,
}
return
}

View File

@@ -113,17 +113,6 @@ func TestDispatcherHCfgloadFromJsonCfg(t *testing.T) {
}
func TestDispatcherHCfgAsMapInterface(t *testing.T) {
var daCfg, expected DispatcherHCfg
if err := daCfg.loadFromJsonCfg(nil); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(daCfg, expected) {
t.Errorf("Expected: %+v ,recived: %+v", expected, daCfg)
}
if err := daCfg.loadFromJsonCfg(new(DispatcherHJsonCfg)); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(daCfg, expected) {
t.Errorf("Expected: %+v ,recived: %+v", expected, daCfg)
}
cfgJSONStr := `{
"dispatcherh":{
"enabled": true,
@@ -145,33 +134,103 @@ func TestDispatcherHCfgAsMapInterface(t *testing.T) {
"register_interval": "5m",
},
}`
daCfg.Hosts = make(map[string][]*DispatcherHRegistarCfg)
eMap := map[string]interface{}{
"enabled": true,
"dispatchers_conns": []string{"conn1", "conn2"},
"hosts": map[string][]map[string]interface{}{
utils.EnabledCfg: true,
utils.DispatchersConnsCfg: []string{"conn1", "conn2"},
utils.HostsCfg: map[string][]map[string]interface{}{
utils.MetaDefault: {
{
"id": "Host1",
"register_transport": "*json",
"register_tls": false,
utils.IdCfg: "Host1",
utils.RegisterTransportCfg: "*json",
utils.RegisterTLSCfg: false,
},
{
"id": "Host2",
"register_transport": "*gob",
"register_tls": false,
utils.IdCfg: "Host2",
utils.RegisterTransportCfg: "*gob",
utils.RegisterTLSCfg: false,
},
},
},
"register_interval": 5 * time.Minute,
utils.RegisterIntervalCfg: 5 * time.Minute,
}
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
t.Error(err)
} else if jsnDaCfg, err := jsnCfg.DispatcherHJsonCfg(); err != nil {
t.Error(err)
} else if err = daCfg.loadFromJsonCfg(jsnDaCfg); err != nil {
t.Error(err)
} else if rcv := daCfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
} else if rcv := cgrCfg.dispatcherHCfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
t.Errorf("Expected %+v, received %+v", eMap, rcv)
}
}
func TestDispatcherHCfgAsMapInterface1(t *testing.T) {
cfgJSONStr := `{
"dispatcherh":{
"enabled": true,
"dispatchers_conns":["conn1"],
"hosts": {
"*default": [
{
"ID":"",
"register_transport": "*json",
"register_tls":false,
},
{
"ID":"host2",
"register_transport": "",
"register_tls":true,
},
]
},
"register_interval": "1m",
},
}`
eMap := map[string]interface{}{
utils.EnabledCfg: true,
utils.DispatchersConnsCfg: []string{"conn1"},
utils.HostsCfg: map[string][]map[string]interface{}{
utils.MetaDefault: {
{
utils.IDCfg: utils.EmptyString,
utils.RegisterTransportCfg: utils.MetaJSON,
utils.RegisterTLSCfg: false,
},
{
utils.IDCfg: "host2",
utils.RegisterTransportCfg: utils.EmptyString,
utils.RegisterTLSCfg: true,
},
},
},
utils.RegisterIntervalCfg: 1 * time.Minute,
}
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
t.Error(err)
} else {
rcv := cgrCfg.dispatcherHCfg.AsMapInterface()
if !reflect.DeepEqual(eMap[utils.HostsCfg].(map[string][]map[string]interface{})[utils.IdCfg],
rcv[utils.HostsCfg].(map[string][]map[string]interface{})[utils.IdCfg]) {
t.Errorf("Expected %+v, received %+v", eMap[utils.HostsCfg].(map[string][]map[string]interface{})[utils.IdCfg],
rcv[utils.HostsCfg].(map[string][]map[string]interface{})[utils.IdCfg])
} else if !reflect.DeepEqual(eMap[utils.HostsCfg], rcv[utils.HostsCfg]) {
t.Errorf("Expected %+v, received %+v", eMap[utils.HostsCfg], rcv[utils.HostsCfg])
} else if !reflect.DeepEqual(eMap, rcv) {
t.Errorf("Expected %+v, received %+v", eMap, rcv)
}
}
}
func TestDispatcherHCfgAsMapInterface2(t *testing.T) {
cfgJSONStr := `{
"dispatcherh": {},
}`
eMap := map[string]interface{}{
utils.EnabledCfg: false,
utils.DispatchersConnsCfg: []string{},
utils.HostsCfg: map[string][]map[string]interface{}{},
utils.RegisterIntervalCfg: 5 * time.Minute,
}
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
t.Error(err)
} else if rcv := cgrCfg.dispatcherHCfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
t.Errorf("Expected %+v, received %+v", eMap, rcv)
}
}