Updated dispatchers AsMapInterface method

This commit is contained in:
porosnicuadrian
2020-09-17 11:45:43 +03:00
committed by Dan Christian Bogos
parent 367535459b
commit 692e040f67
2 changed files with 69 additions and 62 deletions

View File

@@ -83,38 +83,43 @@ func (dps *DispatcherSCfg) loadFromJsonCfg(jsnCfg *DispatcherSJsonCfg) (err erro
return nil
}
func (dps *DispatcherSCfg) AsMapInterface() map[string]interface{} {
stringIndexedFields := []string{}
func (dps *DispatcherSCfg) AsMapInterface() (initialMP map[string]interface{}) {
initialMP = map[string]interface{}{
utils.EnabledCfg: dps.Enabled,
utils.IndexedSelectsCfg: dps.IndexedSelects,
utils.NestedFieldsCfg: dps.NestedFields,
}
if dps.StringIndexedFields != nil {
stringIndexedFields = make([]string, len(*dps.StringIndexedFields))
stringIndexedFields := make([]string, len(*dps.StringIndexedFields))
for i, item := range *dps.StringIndexedFields {
stringIndexedFields[i] = item
}
initialMP[utils.StringIndexedFieldsCfg] = stringIndexedFields
}
prefixIndexedFields := []string{}
if dps.PrefixIndexedFields != nil {
prefixIndexedFields = make([]string, len(*dps.PrefixIndexedFields))
prefixIndexedFields := make([]string, len(*dps.PrefixIndexedFields))
for i, item := range *dps.PrefixIndexedFields {
prefixIndexedFields[i] = item
}
initialMP[utils.PrefixIndexedFieldsCfg] = prefixIndexedFields
}
attributeSConns := make([]string, len(dps.AttributeSConns))
for i, item := range dps.AttributeSConns {
buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes)
if item == buf {
attributeSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaAttributes, utils.EmptyString)
} else {
attributeSConns[i] = item
if dps.SuffixIndexedFields != nil {
suffixIndexedFields := make([]string, len(*dps.SuffixIndexedFields))
for i, item := range *dps.SuffixIndexedFields {
suffixIndexedFields[i] = item
}
initialMP[utils.SuffixIndexedFieldsCfg] = suffixIndexedFields
}
return map[string]interface{}{
utils.EnabledCfg: dps.Enabled,
utils.IndexedSelectsCfg: dps.IndexedSelects,
utils.StringIndexedFieldsCfg: stringIndexedFields,
utils.PrefixIndexedFieldsCfg: prefixIndexedFields,
utils.AttributeSConnsCfg: attributeSConns,
utils.NestedFieldsCfg: dps.NestedFields,
if dps.AttributeSConns != nil {
attributeSConns := make([]string, len(dps.AttributeSConns))
for i, item := range dps.AttributeSConns {
if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes) {
attributeSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaAttributes, utils.EmptyString)
} else {
attributeSConns[i] = item
}
}
initialMP[utils.AttributeSConnsCfg] = attributeSConns
}
return
}

View File

@@ -67,72 +67,74 @@ func TestDispatcherSCfgloadFromJsonCfg(t *testing.T) {
}
func TestDispatcherSCfgAsMapInterface(t *testing.T) {
var daCfg, expected DispatcherSCfg
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(DispatcherSJsonCfg)); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(daCfg, expected) {
t.Errorf("Expected: %+v ,recived: %+v", expected, daCfg)
}
cfgJSONStr := `{
"dispatchers":{
"enabled": false,
"indexed_selects":true,
//"string_indexed_fields": [],
"prefix_indexed_fields": [],
"suffix_indexed_fields": [],
"nested_fields": false,
"attributes_conns": [],
},
}`
eMap := map[string]interface{}{
"enabled": false,
"indexed_selects": true,
"prefix_indexed_fields": []string{},
"nested_fields": false,
"attributes_conns": []string{},
"string_indexed_fields": []string{},
utils.EnabledCfg: false,
utils.IndexedSelectsCfg: true,
utils.PrefixIndexedFieldsCfg: []string{},
utils.SuffixIndexedFieldsCfg: []string{},
utils.NestedFieldsCfg: false,
utils.AttributeSConnsCfg: []string{},
}
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
t.Error(err)
} else if jsnDaCfg, err := jsnCfg.DispatcherSJsonCfg(); 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.dispatcherSCfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
t.Errorf("Expected %+v, received %+v", eMap, rcv)
}
}
cfgJSONStr = `{
func TestDispatcherSCfgAsMapInterface1(t *testing.T) {
cfgJSONStr := `{
"dispatchers":{
"enabled": false,
"indexed_selects":true,
"string_indexed_fields": ["*req.string","*req.indexed","*req.fields"],
"prefix_indexed_fields": ["*req.prefix","*req.indexed","*req.fields"],
"suffix_indexed_fields": [],
"nested_fields": false,
"attributes_conns": ["*internal"],
},
}`
eMap = map[string]interface{}{
"enabled": false,
"indexed_selects": true,
"prefix_indexed_fields": []string{"*req.prefix", "*req.indexed", "*req.fields"},
"nested_fields": false,
"attributes_conns": []string{"*internal"},
"string_indexed_fields": []string{"*req.string", "*req.indexed", "*req.fields"},
eMap := map[string]interface{}{
utils.EnabledCfg: false,
utils.IndexedSelectsCfg: true,
utils.PrefixIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed", "*req.fields"},
utils.SuffixIndexedFieldsCfg: []string{},
utils.NestedFieldsCfg: false,
utils.AttributeSConnsCfg: []string{"*internal"},
}
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
t.Error(err)
} else if jsnDaCfg, err := jsnCfg.DispatcherSJsonCfg(); 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.dispatcherSCfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
t.Errorf("Expected %+v, received %+v", eMap, rcv)
}
}
func TestDispatcherSCfgAsMapInterface2(t *testing.T) {
cfgJSONStr := `{
"dispatchers":{},
}`
eMap := map[string]interface{}{
utils.EnabledCfg: false,
utils.IndexedSelectsCfg: true,
utils.PrefixIndexedFieldsCfg: []string{},
utils.SuffixIndexedFieldsCfg: []string{},
utils.NestedFieldsCfg: false,
utils.AttributeSConnsCfg: []string{},
}
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
t.Error(err)
} else if rcv := cgrCfg.dispatcherSCfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
t.Errorf("Expected %+v, received %+v", eMap, rcv)
}
}