From 9f29638d6730652a326d9d2d54e2da2c380058a9 Mon Sep 17 00:00:00 2001 From: porosnicuadrian Date: Thu, 24 Sep 2020 11:24:31 +0300 Subject: [PATCH] Updated statscfg AsMapInterface method --- config/statscfg.go | 60 ++++++++++++---------- config/statscfg_test.go | 110 ++++++++++++++++------------------------ 2 files changed, 77 insertions(+), 93 deletions(-) diff --git a/config/statscfg.go b/config/statscfg.go index 9535e2837..54801c594 100644 --- a/config/statscfg.go +++ b/config/statscfg.go @@ -93,44 +93,52 @@ func (st *StatSCfg) loadFromJsonCfg(jsnCfg *StatServJsonCfg) (err error) { return nil } -func (st *StatSCfg) AsMapInterface() map[string]interface{} { - var storeInterval string = "" - if st.StoreInterval != 0 { - storeInterval = st.StoreInterval.String() +func (st *StatSCfg) AsMapInterface() (initialMP map[string]interface{}) { + initialMP = map[string]interface{}{ + utils.EnabledCfg: st.Enabled, + utils.IndexedSelectsCfg: st.IndexedSelects, + utils.StoreUncompressedLimitCfg: st.StoreUncompressedLimit, + utils.NestedFieldsCfg: st.NestedFields, + } + if st.StoreInterval != 0 { + initialMP[utils.StoreIntervalCfg] = st.StoreInterval.String() + } else { + initialMP[utils.StoreIntervalCfg] = utils.EmptyString } - stringIndexedFields := []string{} if st.StringIndexedFields != nil { - stringIndexedFields = make([]string, len(*st.StringIndexedFields)) + stringIndexedFields := make([]string, len(*st.StringIndexedFields)) for i, item := range *st.StringIndexedFields { stringIndexedFields[i] = item } + + initialMP[utils.StringIndexedFieldsCfg] = stringIndexedFields } - prefixIndexedFields := []string{} if st.PrefixIndexedFields != nil { - prefixIndexedFields = make([]string, len(*st.PrefixIndexedFields)) + prefixIndexedFields := make([]string, len(*st.PrefixIndexedFields)) for i, item := range *st.PrefixIndexedFields { prefixIndexedFields[i] = item } + + initialMP[utils.PrefixIndexedFieldsCfg] = prefixIndexedFields } - thresholdSConns := make([]string, len(st.ThresholdSConns)) - for i, item := range st.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 + if st.SuffixIndexedFields != nil { + suffixIndexedFields := make([]string, len(*st.SuffixIndexedFields)) + for i, item := range *st.SuffixIndexedFields { + suffixIndexedFields[i] = item } - } + initialMP[utils.SuffixIndexedFieldsCfg] = suffixIndexedFields - return map[string]interface{}{ - utils.EnabledCfg: st.Enabled, - utils.IndexedSelectsCfg: st.IndexedSelects, - utils.StoreIntervalCfg: storeInterval, - utils.StoreUncompressedLimitCfg: st.StoreUncompressedLimit, - utils.ThresholdSConnsCfg: thresholdSConns, - utils.StringIndexedFieldsCfg: stringIndexedFields, - utils.PrefixIndexedFieldsCfg: prefixIndexedFields, - utils.NestedFieldsCfg: st.NestedFields, } - + if st.ThresholdSConns != nil { + thresholdSConns := make([]string, len(st.ThresholdSConns)) + for i, item := range st.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 + } + return } diff --git a/config/statscfg_test.go b/config/statscfg_test.go index ba1a8a3cc..7f7395c06 100644 --- a/config/statscfg_test.go +++ b/config/statscfg_test.go @@ -63,76 +63,52 @@ func TestStatSCfgloadFromJsonCfg(t *testing.T) { } func TestStatSCfgAsMapInterface(t *testing.T) { - var statscfg, expected StatSCfg - if err := statscfg.loadFromJsonCfg(nil); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(statscfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, statscfg) - } - if err := statscfg.loadFromJsonCfg(new(StatServJsonCfg)); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(statscfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, statscfg) - } cfgJSONStr := `{ - "stats": { - "enabled": false, - "store_interval": "", - "store_uncompressed_limit": 0, - "thresholds_conns": [], - "indexed_selects":true, - "prefix_indexed_fields": [], - "nested_fields": false, - }, - }` + "stats": {}, +}` eMap := map[string]interface{}{ - "enabled": false, - "store_interval": "", - "store_uncompressed_limit": 0, - "thresholds_conns": []string{}, - "indexed_selects": true, - "prefix_indexed_fields": []string{}, - "nested_fields": false, - "string_indexed_fields": []string{}, + utils.EnabledCfg: false, + utils.StoreIntervalCfg: utils.EmptyString, + utils.StoreUncompressedLimitCfg: 0, + 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 jsnStatSCfg, err := jsnCfg.StatSJsonCfg(); err != nil { - t.Error(err) - } else if err = statscfg.loadFromJsonCfg(jsnStatSCfg); err != nil { - t.Error(err) - } else if rcv := statscfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { - t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) - } - - cfgJSONStr = `{ - "stats": { - "enabled": false, - "store_interval": "72h", - "store_uncompressed_limit": 0, - "thresholds_conns": ["*internal"], - "indexed_selects":true, - "prefix_indexed_fields": ["*req.prefix_indexed_fields1","*req.prefix_indexed_fields2"], - "nested_fields": false, - }, - }` - eMap = map[string]interface{}{ - "enabled": false, - "store_interval": "72h0m0s", - "store_uncompressed_limit": 0, - "thresholds_conns": []string{"*internal"}, - "indexed_selects": true, - "prefix_indexed_fields": []string{"*req.prefix_indexed_fields1", "*req.prefix_indexed_fields2"}, - "nested_fields": false, - "string_indexed_fields": []string{}, - } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { - t.Error(err) - } else if jsnStatSCfg, err := jsnCfg.StatSJsonCfg(); err != nil { - t.Error(err) - } else if err = statscfg.loadFromJsonCfg(jsnStatSCfg); err != nil { - t.Error(err) - } else if rcv := statscfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { - t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } else if rcv := cgrCfg.statsCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) { + t.Errorf("Expected %+v \n, received %+v", eMap, rcv) + } +} + +func TestStatSCfgAsMapInterface1(t *testing.T) { + cfgJSONStr := `{ + "stats": { + "enabled": true, + "store_interval": "72h", + "store_uncompressed_limit": 1, + "thresholds_conns": ["*internal"], + "indexed_selects":false, + "prefix_indexed_fields": ["*req.prefix_indexed_fields1","*req.prefix_indexed_fields2"], + "suffix_indexed_fields":["*req.suffix_indexed_fields"], + "nested_fields": true, + }, +}` + eMap := map[string]interface{}{ + utils.EnabledCfg: true, + utils.StoreIntervalCfg: "72h0m0s", + utils.StoreUncompressedLimitCfg: 1, + utils.ThresholdSConnsCfg: []string{"*internal"}, + utils.IndexedSelectsCfg: false, + utils.PrefixIndexedFieldsCfg: []string{"*req.prefix_indexed_fields1", "*req.prefix_indexed_fields2"}, + utils.SuffixIndexedFieldsCfg: []string{"*req.suffix_indexed_fields"}, + utils.NestedFieldsCfg: true, + } + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { + t.Error(err) + } else if rcv := cgrCfg.statsCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) { + t.Errorf("Expected %+v \n, received %+v", eMap, rcv) } }