Updated statscfg AsMapInterface method

This commit is contained in:
porosnicuadrian
2020-09-24 11:24:31 +03:00
committed by Dan Christian Bogos
parent 34910a70ff
commit 9f29638d67
2 changed files with 77 additions and 93 deletions

View File

@@ -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
}

View File

@@ -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)
}
}