diff --git a/config/schedulercfg.go b/config/schedulercfg.go index 91b34301d..e0a8a0d1f 100755 --- a/config/schedulercfg.go +++ b/config/schedulercfg.go @@ -18,7 +18,11 @@ along with this program. If not, see package config -import "github.com/cgrates/cgrates/utils" +import ( + "strings" + + "github.com/cgrates/cgrates/utils" +) type SchedulerCfg struct { Enabled bool @@ -53,10 +57,21 @@ func (schdcfg *SchedulerCfg) loadFromJsonCfg(jsnCfg *SchedulerJsonCfg) error { return nil } -func (schdcfg *SchedulerCfg) AsMapInterface() map[string]interface{} { - return map[string]interface{}{ - utils.EnabledCfg: schdcfg.Enabled, - utils.CDRsConnsCfg: schdcfg.CDRsConns, - utils.FiltersCfg: schdcfg.Filters, +func (schdcfg *SchedulerCfg) AsMapInterface() (initialMP map[string]interface{}) { + initialMP = map[string]interface{}{ + utils.EnabledCfg: schdcfg.Enabled, + utils.FiltersCfg: schdcfg.Filters, } + if schdcfg.CDRsConns != nil { + cdrsConns := make([]string, len(schdcfg.CDRsConns)) + for i, item := range schdcfg.CDRsConns { + if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCDRs) { + cdrsConns[i] = strings.ReplaceAll(item, ":*cdrs", utils.EmptyString) + } else { + cdrsConns[i] = item + } + } + initialMP[utils.CDRsConnsCfg] = cdrsConns + } + return } diff --git a/config/schedulercfg_test.go b/config/schedulercfg_test.go index 3e650fcdc..6c742739d 100644 --- a/config/schedulercfg_test.go +++ b/config/schedulercfg_test.go @@ -58,26 +58,38 @@ func TestSchedulerCfgloadFromJsonCfg(t *testing.T) { } func TestSchedulerCfgAsMapInterface(t *testing.T) { - var schdcfg SchedulerCfg cfgJSONStr := `{ - "schedulers": { - "enabled": true, - "cdrs_conns": [], - "filters": [], - }, + "schedulers": {}, }` eMap := map[string]interface{}{ - "enabled": true, - "cdrs_conns": []string{}, - "filters": []string{}, + utils.EnabledCfg: false, + utils.CDRsConnsCfg: []string{}, + utils.FiltersCfg: []string{}, } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) - } else if jsnSchCfg, err := jsnCfg.SchedulerJsonCfg(); err != nil { - t.Error(err) - } else if err = schdcfg.loadFromJsonCfg(jsnSchCfg); err != nil { - t.Error(err) - } else if rcv := schdcfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { - t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } else if rcv := cgrCfg.schedulerCfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { + t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) } + +} + +func TestSchedulerCfgAsMapInterface1(t *testing.T) { + cfgJSONStr := `{ + "schedulers": { + "enabled": true, + "cdrs_conns": ["*internal"], + }, +}` + eMap := map[string]interface{}{ + utils.EnabledCfg: true, + utils.CDRsConnsCfg: []string{"*internal"}, + utils.FiltersCfg: []string{}, + } + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { + t.Error(err) + } else if rcv := cgrCfg.schedulerCfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { + t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } + }