From 2f4d5083ecf4611bef1613096fb13450d96dfa1f Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Fri, 25 Jun 2021 17:14:04 +0300 Subject: [PATCH] Fix the process of merging loaders with same ids --- config/config.go | 18 +++++++++++++++--- config/loaderscfg_test.go | 28 ++++++++++++++-------------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/config/config.go b/config/config.go index 332020208..03781f991 100644 --- a/config/config.go +++ b/config/config.go @@ -609,11 +609,23 @@ func (cfg *CGRConfig) loadLoaderSCfg(jsnCfg ConfigDB) (err error) { } // cfg.loaderCfg = make(LoaderSCfgs, len(jsnLoaderCfg)) for _, profile := range jsnLoaderCfg { - loadSCfgp := NewDfltLoaderSCfg() - if err = loadSCfgp.loadFromJSONCfg(profile, cfg.templates, cfg.generalCfg.RSRSep); err != nil { + var ldr *LoaderSCfg + if profile.ID != nil { + for _, loader := range cfg.LoaderCfg() { + if loader.ID == *profile.ID { + ldr = loader + break + } + } + } + if ldr == nil { + ldr = NewDfltLoaderSCfg() + cfg.loaderCfg = append(cfg.loaderCfg, ldr) // use append so the loaderS profile to be loaded from multiple files + } + + if err = ldr.loadFromJSONCfg(profile, cfg.templates, cfg.generalCfg.RSRSep); err != nil { return } - cfg.loaderCfg = append(cfg.loaderCfg, loadSCfgp) // use append so the loaderS profile to be loaded from multiple files } return } diff --git a/config/loaderscfg_test.go b/config/loaderscfg_test.go index 2118dc99d..44177cc08 100644 --- a/config/loaderscfg_test.go +++ b/config/loaderscfg_test.go @@ -315,22 +315,22 @@ func TestLoaderCfgAsMapInterfaceCase1(t *testing.T) { t.Error(err) } else { rcv := cfgCgr.loaderCfg.AsMapInterface(cfgCgr.generalCfg.RSRSep) - if len(cfgCgr.loaderCfg) != 2 { - t.Errorf("expected: <%+v>, \nreceived: <%+v>", 2, len(cfgCgr.loaderCfg)) + if len(cfgCgr.loaderCfg) != 1 { + t.Errorf("expected: <%+v>, \nreceived: <%+v>", 1, len(cfgCgr.loaderCfg)) } else if !reflect.DeepEqual(eMap[0][utils.DataCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[0], - rcv[1][utils.DataCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[0]) { + rcv[0][utils.DataCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[0]) { t.Errorf("Expected %+v,\n received %+v", utils.ToJSON(eMap[0][utils.DataCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[0]), - utils.ToJSON(rcv[1][utils.DataCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[0])) - } else if !reflect.DeepEqual(eMap[0][utils.DataCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[1], - rcv[1][utils.DataCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[1]) { - t.Errorf("Expected %+v,\n received %+v", utils.ToJSON(eMap[0][utils.DataCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[1]), - utils.ToJSON(rcv[1][utils.DataCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[1])) - } else if !reflect.DeepEqual(eMap[0][utils.CachesConnsCfg], rcv[1][utils.CachesConnsCfg]) { - t.Errorf("Expected %+v, received %+v", eMap[0][utils.CachesConnsCfg], rcv[1][utils.CachesConnsCfg]) - } else if !reflect.DeepEqual(eMap[0][utils.TpInDirCfg], rcv[1][utils.TpInDirCfg]) { - t.Errorf("Expected %+v, received %+v", eMap[0][utils.TpInDirCfg], rcv[1][utils.TpInDirCfg]) - } else if !reflect.DeepEqual(eMap[0][utils.LockFileNameCfg], rcv[1][utils.LockFileNameCfg]) { - t.Errorf("Expected %+v, received %+v", eMap[0][utils.LockFileNameCfg], rcv[1][utils.LockFileNameCfg]) + utils.ToJSON(rcv[0][utils.DataCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[0])) + } else if !reflect.DeepEqual(eMap[0][utils.DataCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[0], + rcv[0][utils.DataCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[0]) { + t.Errorf("Expected %+v,\n received %+v", utils.ToJSON(eMap[0][utils.DataCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[0]), + utils.ToJSON(rcv[0][utils.DataCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[0])) + } else if !reflect.DeepEqual(eMap[0][utils.CachesConnsCfg], rcv[0][utils.CachesConnsCfg]) { + t.Errorf("Expected %+v, received %+v", eMap[0][utils.CachesConnsCfg], rcv[0][utils.CachesConnsCfg]) + } else if !reflect.DeepEqual(eMap[0][utils.TpInDirCfg], rcv[0][utils.TpInDirCfg]) { + t.Errorf("Expected %+v, received %+v", eMap[0][utils.TpInDirCfg], rcv[0][utils.TpInDirCfg]) + } else if !reflect.DeepEqual(eMap[0][utils.LockFileNameCfg], rcv[0][utils.LockFileNameCfg]) { + t.Errorf("Expected %+v, received %+v", eMap[0][utils.LockFileNameCfg], rcv[0][utils.LockFileNameCfg]) } } }