diff --git a/config/resourcescfg.go b/config/resourcescfg.go index 2dfb6abc2..27a5203cc 100644 --- a/config/resourcescfg.go +++ b/config/resourcescfg.go @@ -89,42 +89,48 @@ func (rlcfg *ResourceSConfig) loadFromJsonCfg(jsnCfg *ResourceSJsonCfg) (err err return nil } -func (rlcfg *ResourceSConfig) AsMapInterface() map[string]interface{} { - thresholdSConns := make([]string, len(rlcfg.ThresholdSConns)) - for i, item := range rlcfg.ThresholdSConns { - buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds) - if item == buf { - thresholdSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaThresholds, utils.EmptyString) - } else { - thresholdSConns[i] = item - } +func (rlcfg *ResourceSConfig) AsMapInterface() (initialMP map[string]interface{}) { + initialMP = map[string]interface{}{ + utils.EnabledCfg: rlcfg.Enabled, + utils.IndexedSelectsCfg: rlcfg.IndexedSelects, + utils.NestedFieldsCfg: rlcfg.NestedFields, + } + if rlcfg.ThresholdSConns != nil { + thresholdSConns := make([]string, len(rlcfg.ThresholdSConns)) + for i, item := range rlcfg.ThresholdSConns { + if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds) { + thresholdSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaThresholds, utils.EmptyString) + } else { + thresholdSConns[i] = item + } + } + initialMP[utils.ThresholdSConnsCfg] = thresholdSConns } - stringIndexedFields := []string{} if rlcfg.StringIndexedFields != nil { - stringIndexedFields = make([]string, len(*rlcfg.StringIndexedFields)) + stringIndexedFields := make([]string, len(*rlcfg.StringIndexedFields)) for i, item := range *rlcfg.StringIndexedFields { stringIndexedFields[i] = item } + initialMP[utils.StringIndexedFieldsCfg] = stringIndexedFields } - prefixIndexedFields := []string{} if rlcfg.PrefixIndexedFields != nil { - prefixIndexedFields = make([]string, len(*rlcfg.PrefixIndexedFields)) + prefixIndexedFields := make([]string, len(*rlcfg.PrefixIndexedFields)) for i, item := range *rlcfg.PrefixIndexedFields { prefixIndexedFields[i] = item } + initialMP[utils.PrefixIndexedFieldsCfg] = prefixIndexedFields + } + if rlcfg.SuffixIndexedFields != nil { + suffixIndexedFields := make([]string, len(*rlcfg.SuffixIndexedFields)) + for i, item := range *rlcfg.SuffixIndexedFields { + suffixIndexedFields[i] = item + } + initialMP[utils.SuffixIndexedFieldsCfg] = suffixIndexedFields } - var storeInterval string = "" if rlcfg.StoreInterval != 0 { - storeInterval = rlcfg.StoreInterval.String() + initialMP[utils.StoreIntervalCfg] = rlcfg.StoreInterval.String() + } else { + initialMP[utils.StoreIntervalCfg] = utils.EmptyString } - return map[string]interface{}{ - utils.EnabledCfg: rlcfg.Enabled, - utils.IndexedSelectsCfg: rlcfg.IndexedSelects, - utils.ThresholdSConnsCfg: thresholdSConns, - utils.StoreIntervalCfg: storeInterval, - utils.StringIndexedFieldsCfg: stringIndexedFields, - utils.PrefixIndexedFieldsCfg: prefixIndexedFields, - utils.NestedFieldsCfg: rlcfg.NestedFields, - } - + return } diff --git a/config/resourcescfg_test.go b/config/resourcescfg_test.go index 7b285c973..65fe1b84a 100644 --- a/config/resourcescfg_test.go +++ b/config/resourcescfg_test.go @@ -64,63 +64,49 @@ func TestResourceSConfigloadFromJsonCfg(t *testing.T) { } func TestResourceSConfigAsMapInterface(t *testing.T) { - var rlcfg ResourceSConfig - cfgJSONStr := `{ - "resources": { - "enabled": false, - "store_interval": "", - "thresholds_conns": [], - "indexed_selects":true, - "prefix_indexed_fields": [], - "nested_fields": false, - }, + "resources": {}, }` eMap := map[string]interface{}{ - "enabled": false, - "store_interval": "", - "thresholds_conns": []string{}, - "indexed_selects": true, - "string_indexed_fields": []string{}, - "prefix_indexed_fields": []string{}, - "nested_fields": false, + utils.EnabledCfg: false, + utils.StoreIntervalCfg: utils.EmptyString, + utils.ThresholdSConnsCfg: []string{}, + utils.IndexedSelectsCfg: true, + utils.PrefixIndexedFieldsCfg: []string{}, + utils.SuffixIndexedFieldsCfg: []string{}, + utils.NestedFieldsCfg: false, } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) - } else if jsnRlcCfg, err := jsnCfg.ResourceSJsonCfg(); err != nil { - t.Error(err) - } else if err = rlcfg.loadFromJsonCfg(jsnRlcCfg); err != nil { - t.Error(err) - } else if rcv := rlcfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { - t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } else if rcv := cgrCfg.resourceSCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) { + t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) } +} - cfgJSONStr = `{ +func TestResourceSConfigAsMapInterface1(t *testing.T) { + cfgJSONStr := `{ "resources": { - "enabled": false, + "enabled": true, "store_interval": "7m", "thresholds_conns": ["*internal"], "indexed_selects":true, - "prefix_indexed_fields": ["*req.prefix_indexed_fields1","*req.prefix_indexed_fields2"], - "nested_fields": false, + "prefix_indexed_fields": ["*req.prefix_indexed_fields1","*req.prefix_indexed_fields2"], + "suffix_indexed_fields": ["*req.prefix_indexed_fields1"], + "nested_fields": true, }, }` - eMap = map[string]interface{}{ - "enabled": false, - "store_interval": "7m0s", - "thresholds_conns": []string{"*internal"}, - "indexed_selects": true, - "string_indexed_fields": []string{}, - "prefix_indexed_fields": []string{"*req.prefix_indexed_fields1", "*req.prefix_indexed_fields2"}, - "nested_fields": false, + eMap := map[string]interface{}{ + utils.EnabledCfg: true, + utils.StoreIntervalCfg: "7m0s", + utils.ThresholdSConnsCfg: []string{"*internal"}, + utils.IndexedSelectsCfg: true, + utils.PrefixIndexedFieldsCfg: []string{"*req.prefix_indexed_fields1", "*req.prefix_indexed_fields2"}, + utils.SuffixIndexedFieldsCfg: []string{"*req.prefix_indexed_fields1"}, + utils.NestedFieldsCfg: true, } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) - } else if jsnRlcCfg, err := jsnCfg.ResourceSJsonCfg(); err != nil { - t.Error(err) - } else if err = rlcfg.loadFromJsonCfg(jsnRlcCfg); err != nil { - t.Error(err) - } else if rcv := rlcfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { - t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } else if rcv := cgrCfg.resourceSCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) { + t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) } }