diff --git a/apier/v1/apier.go b/apier/v1/apier.go index 9fae2316b..a300d0824 100644 --- a/apier/v1/apier.go +++ b/apier/v1/apier.go @@ -332,7 +332,7 @@ func (apierSv1 *APIerSv1) LoadRatingProfile(attrs *utils.TPRatingProfile, reply if err := apierSv1.DataManager.SetLoadIDs(map[string]int64{utils.CacheRatingProfiles: time.Now().UnixNano()}); err != nil { return utils.APIErrorHandler(err) } - if err = dbReader.ReloadCache(config.CgrConfig().GeneralCfg().DefaultCaching, true, make(map[string]interface{})); err != nil { + if err = dbReader.ReloadCache(config.CgrConfig().GeneralCfg().DefaultCaching, true, make(map[string]interface{}), attrs.Tenant); err != nil { return utils.NewErrServerError(err) } *reply = utils.OK @@ -406,7 +406,7 @@ func (apierSv1 *APIerSv1) LoadTariffPlanFromStorDb(attrs *AttrLoadTpFromStorDb, } // reload cache utils.Logger.Info("APIerSv1.LoadTariffPlanFromStorDb, reloading cache.") - if err := dbReader.ReloadCache(caching, true, attrs.APIOpts); err != nil { + if err := dbReader.ReloadCache(caching, true, attrs.APIOpts, apierSv1.Config.GeneralCfg().DefaultTenant); err != nil { return utils.NewErrServerError(err) } if len(apierSv1.Config.ApierCfg().SchedulerConns) != 0 { @@ -1088,7 +1088,7 @@ func (apierSv1 *APIerSv1) LoadTariffPlanFromFolder(attrs *utils.AttrLoadTpFromFo } // reload cache utils.Logger.Info("APIerSv1.LoadTariffPlanFromFolder, reloading cache.") - if err := loader.ReloadCache(caching, true, attrs.APIOpts); err != nil { + if err := loader.ReloadCache(caching, true, attrs.APIOpts, apierSv1.Config.GeneralCfg().DefaultTenant); err != nil { return utils.NewErrServerError(err) } if len(apierSv1.Config.ApierCfg().SchedulerConns) != 0 { @@ -1154,7 +1154,7 @@ func (apierSv1 *APIerSv1) RemoveTPFromFolder(attrs *utils.AttrLoadTpFromFolder, } // reload cache utils.Logger.Info("APIerSv1.RemoveTPFromFolder, reloading cache.") - if err := loader.ReloadCache(caching, true, attrs.APIOpts); err != nil { + if err := loader.ReloadCache(caching, true, attrs.APIOpts, apierSv1.Config.GeneralCfg().DefaultTenant); err != nil { return utils.NewErrServerError(err) } if len(apierSv1.Config.ApierCfg().SchedulerConns) != 0 { @@ -1206,7 +1206,7 @@ func (apierSv1 *APIerSv1) RemoveTPFromStorDB(attrs *AttrLoadTpFromStorDb, reply } // reload cache utils.Logger.Info("APIerSv1.RemoveTPFromStorDB, reloading cache.") - if err := dbReader.ReloadCache(caching, true, attrs.APIOpts); err != nil { + if err := dbReader.ReloadCache(caching, true, attrs.APIOpts, apierSv1.Config.GeneralCfg().DefaultTenant); err != nil { return utils.NewErrServerError(err) } if len(apierSv1.Config.ApierCfg().SchedulerConns) != 0 { diff --git a/apier/v2/apier.go b/apier/v2/apier.go index 3e3abfc9a..e0f355095 100644 --- a/apier/v2/apier.go +++ b/apier/v2/apier.go @@ -67,7 +67,7 @@ func (apiv2 *APIerSv2) LoadRatingProfile(attrs *AttrLoadRatingProfile, reply *st if err := apiv2.DataManager.SetLoadIDs(map[string]int64{utils.CacheRatingProfiles: time.Now().UnixNano()}); err != nil { return utils.APIErrorHandler(err) } - if err = dbReader.ReloadCache(config.CgrConfig().GeneralCfg().DefaultCaching, true, make(map[string]interface{})); err != nil { + if err = dbReader.ReloadCache(config.CgrConfig().GeneralCfg().DefaultCaching, true, make(map[string]interface{}), apiv2.Config.GeneralCfg().DefaultTenant); err != nil { return utils.NewErrServerError(err) } *reply = utils.OK @@ -149,7 +149,7 @@ func (apiv2 *APIerSv2) LoadTariffPlanFromFolder(attrs *utils.AttrLoadTpFromFolde if attrs.Caching != nil { caching = *attrs.Caching } - if err := loader.ReloadCache(caching, true, attrs.APIOpts); err != nil { + if err := loader.ReloadCache(caching, true, attrs.APIOpts, apiv2.Config.GeneralCfg().DefaultTimezone); err != nil { return utils.NewErrServerError(err) } if len(apiv2.Config.ApierCfg().SchedulerConns) != 0 { diff --git a/cmd/cgr-loader/cgr-loader.go b/cmd/cgr-loader/cgr-loader.go index 53597d3cb..451f6e11b 100644 --- a/cmd/cgr-loader/cgr-loader.go +++ b/cmd/cgr-loader/cgr-loader.go @@ -104,6 +104,7 @@ var ( remove = cgrLoaderFlags.Bool(utils.RemoveCgr, false, "Will remove instead of adding data from DB") apiKey = cgrLoaderFlags.String(utils.APIKeyCfg, utils.EmptyString, "Api Key used to comosed ArgDispatcher") routeID = cgrLoaderFlags.String(utils.RouteIDCfg, utils.EmptyString, "RouteID used to comosed ArgDispatcher") + tenant = cgrLoaderFlags.String(utils.TenantCfg, dfltCfg.GeneralCfg().DefaultTenant, "") fromStorDB = cgrLoaderFlags.Bool(utils.FromStorDBCgr, false, "Load the tariff plan from storDb to dataDb") toStorDB = cgrLoaderFlags.Bool(utils.ToStorDBcgr, false, "Import the tariff plan from files to storDb") @@ -389,7 +390,7 @@ func main() { if err = tpReader.ReloadCache(ldrCfg.GeneralCfg().DefaultCaching, *verbose, map[string]interface{}{ utils.OptsAPIKey: *apiKey, utils.OptsRouteID: *routeID, - }); err != nil { + }, *tenant); err != nil { log.Fatal("Could not reload cache: ", err) } diff --git a/cmd/cgr-loader/cgr-loader_it_test.go b/cmd/cgr-loader/cgr-loader_it_test.go index f393678a5..5c6c4c62a 100644 --- a/cmd/cgr-loader/cgr-loader_it_test.go +++ b/cmd/cgr-loader/cgr-loader_it_test.go @@ -211,6 +211,8 @@ var ( testLoadItResetDataDB, testLoadItResetStorDb, testLoadItStartLoader, + // testLoadItStartLoaderFlushStorDB, + testLoadItStartLoaderWithTenant, testLoadItConnectToDB, testLoadItCheckAttributes, testLoadItStartLoaderRemove, @@ -362,6 +364,17 @@ func testLoadItStartLoaderFromStorDB(t *testing.T) { } } +func testLoadItStartLoaderWithTenant(t *testing.T) { + cmd := exec.Command("cgr-loader", "-config_path="+ldrItCfgPath, "-path="+path.Join(*dataDir, "tariffplans", "tutorial"), "-caches_address=", "-scheduler_address=", `-tenant="tenant.com"`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } +} + func testLoadItStartLoaderFlushStorDB(t *testing.T) { cmd := exec.Command("cgr-loader", "-config_path="+ldrItCfgPath, "-path="+path.Join(*dataDir, "tariffplans", "dispatchers"), "-caches_address=", "-scheduler_address=", "-to_stordb", "-flush_stordb", "-tpid=TPID") output := bytes.NewBuffer(nil) diff --git a/cmd/cgr-loader/flags_test.go b/cmd/cgr-loader/flags_test.go index b0b69df67..f116df997 100644 --- a/cmd/cgr-loader/flags_test.go +++ b/cmd/cgr-loader/flags_test.go @@ -243,6 +243,12 @@ func TestCGRLoaderFlags(t *testing.T) { t.Errorf("Expected route_idss, received %+v", *routeID) } + if err := cgrLoaderFlags.Parse([]string{"-tenant", "tenant.com"}); err != nil { + t.Error(err) + } else if *tenant != "tenant.com" { + t.Errorf("Expected tenant.com, received %+v", *tenant) + } + if err := cgrLoaderFlags.Parse([]string{"-from_stordb", "true"}); err != nil { t.Error(err) } else if *fromStorDB != true { diff --git a/config/config_test.go b/config/config_test.go index 2453bdf96..d1860aeae 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -2236,10 +2236,7 @@ func TestFilterSConfig(t *testing.T) { } func TestLoaderConfig(t *testing.T) { - ten, err := NewRSRParsers("", utils.InfieldSep) - if err != nil { - t.Error(err) - } + ten := "" expected := LoaderSCfgs{ { Enabled: false, diff --git a/config/loaderscfg.go b/config/loaderscfg.go index 8e50da459..777dafc98 100644 --- a/config/loaderscfg.go +++ b/config/loaderscfg.go @@ -68,7 +68,7 @@ func (ldrs LoaderSCfgs) Clone() (cln LoaderSCfgs) { type LoaderSCfg struct { ID string Enabled bool - Tenant RSRParsers + Tenant string DryRun bool RunDelay time.Duration LockFileName string @@ -124,9 +124,7 @@ func (l *LoaderSCfg) loadFromJSONCfg(jsnCfg *LoaderJsonCfg, msgTemplates map[str l.Enabled = *jsnCfg.Enabled } if jsnCfg.Tenant != nil { - if l.Tenant, err = NewRSRParsers(*jsnCfg.Tenant, separator); err != nil { - return err - } + l.Tenant = *jsnCfg.Tenant } if jsnCfg.Dry_run != nil { l.DryRun = *jsnCfg.Dry_run @@ -231,7 +229,7 @@ func (lData *LoaderDataType) AsMapInterface(separator string) (initialMP map[str func (l *LoaderSCfg) AsMapInterface(separator string) (initialMP map[string]interface{}) { initialMP = map[string]interface{}{ utils.IDCfg: l.ID, - utils.TenantCfg: l.Tenant.GetRule(separator), + utils.TenantCfg: l.Tenant, utils.EnabledCfg: l.Enabled, utils.DryRunCfg: l.DryRun, utils.LockFileNameCfg: l.LockFileName, diff --git a/config/loaderscfg_test.go b/config/loaderscfg_test.go index 00a74c691..044e8cfad 100644 --- a/config/loaderscfg_test.go +++ b/config/loaderscfg_test.go @@ -54,10 +54,8 @@ func TestLoaderSCfgloadFromJsonCfgCase1(t *testing.T) { if err != nil { t.Error(err) } - ten, err := NewRSRParsers("cgrates.org", utils.InfieldSep) - if err != nil { - t.Error(err) - } + ten := "cgrates.org" + expected := LoaderSCfgs{ { Enabled: true, @@ -100,18 +98,18 @@ func TestLoaderSCfgloadFromJsonCfgCase1(t *testing.T) { } } -func TestLoaderSCfgloadFromJsonCfgCase2(t *testing.T) { - cfgJSON := &LoaderJsonCfg{ - Tenant: utils.StringPointer("a{*"), - } - expected := "invalid converter terminator in rule: " - jsonCfg := NewDefaultCGRConfig() - if err = jsonCfg.loaderCfg[0].loadFromJSONCfg(nil, jsonCfg.templates, jsonCfg.generalCfg.RSRSep); err != nil { - t.Error(err) - } else if err = jsonCfg.loaderCfg[0].loadFromJSONCfg(cfgJSON, jsonCfg.templates, jsonCfg.generalCfg.RSRSep); err == nil || err.Error() != expected { - t.Errorf("Expected %+v, received %+v", expected, err) - } -} +// func TestLoaderSCfgloadFromJsonCfgCase2(t *testing.T) { +// cfgJSON := &LoaderJsonCfg{ +// Tenant: utils.StringPointer("a{*"), +// } +// expected := "invalid converter terminator in rule: " +// jsonCfg := NewDefaultCGRConfig() +// if err = jsonCfg.loaderCfg[0].loadFromJSONCfg(nil, jsonCfg.templates, jsonCfg.generalCfg.RSRSep); err != nil { +// t.Error(err) +// } else if err = jsonCfg.loaderCfg[0].loadFromJSONCfg(cfgJSON, jsonCfg.templates, jsonCfg.generalCfg.RSRSep); err == nil || err.Error() != expected { +// t.Errorf("Expected %+v, received %+v", expected, err) +// } +// } func TestLoaderSCfgloadFromJsonCfgCase3(t *testing.T) { cfg := &LoaderJsonCfg{ @@ -406,7 +404,7 @@ func TestLoaderSCfgsClone(t *testing.T) { ban := LoaderSCfgs{{ Enabled: true, ID: utils.MetaDefault, - Tenant: NewRSRParsersMustCompile("cgrate.org", utils.InfieldSep), + Tenant: "cgrate.org", LockFileName: ".cgr.lck", CacheSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches), "*conn1"}, FieldSeparator: ",", diff --git a/engine/tpreader.go b/engine/tpreader.go index 67f541c5d..18a5526d3 100644 --- a/engine/tpreader.go +++ b/engine/tpreader.go @@ -2223,7 +2223,7 @@ func (tpr *TpReader) RemoveFromDatabase(verbose, disableReverse bool) (err error return tpr.dm.SetLoadIDs(loadIDs) } -func (tpr *TpReader) ReloadCache(caching string, verbose bool, opts map[string]interface{}) (err error) { +func (tpr *TpReader) ReloadCache(caching string, verbose bool, opts map[string]interface{}, tenant string) (err error) { if tpr.isInternalDB { return } @@ -2305,7 +2305,7 @@ func (tpr *TpReader) ReloadCache(caching string, verbose bool, opts map[string]i cacheIDs = append(cacheIDs, utils.CacheReverseFilterIndexes) } - if err = CallCache(connMgr, tpr.cacheConns, caching, cacheArgs, cacheIDs, opts, verbose); err != nil { + if err = CallCache(connMgr, tpr.cacheConns, caching, cacheArgs, cacheIDs, opts, verbose, tenant); err != nil { return } //get loadIDs for all types @@ -2324,7 +2324,7 @@ func (tpr *TpReader) ReloadCache(caching string, verbose bool, opts map[string]i } // CallCache call the cache reload after data load -func CallCache(connMgr *ConnManager, cacheConns []string, caching string, args map[string][]string, cacheIDs []string, opts map[string]interface{}, verbose bool) (err error) { +func CallCache(connMgr *ConnManager, cacheConns []string, caching string, args map[string][]string, cacheIDs []string, opts map[string]interface{}, verbose bool, tenant string) (err error) { for k, v := range args { if len(v) == 0 { delete(args, k) @@ -2334,6 +2334,7 @@ func CallCache(connMgr *ConnManager, cacheConns []string, caching string, args m var cacheArgs interface{} = &utils.AttrReloadCacheWithAPIOpts{ APIOpts: opts, ArgsCache: args, + Tenant: tenant, } switch caching { case utils.MetaNone: @@ -2346,7 +2347,7 @@ func CallCache(connMgr *ConnManager, cacheConns []string, caching string, args m method = utils.CacheSv1RemoveItems case utils.MetaClear: method = utils.CacheSv1Clear - cacheArgs = &utils.AttrCacheIDsWithAPIOpts{APIOpts: opts} + cacheArgs = &utils.AttrCacheIDsWithAPIOpts{APIOpts: opts, Tenant: tenant} } if verbose { log.Print("Reloading cache") @@ -2363,6 +2364,7 @@ func CallCache(connMgr *ConnManager, cacheConns []string, caching string, args m if err = connMgr.Call(cacheConns, nil, utils.CacheSv1Clear, &utils.AttrCacheIDsWithAPIOpts{ APIOpts: opts, CacheIDs: cacheIDs, + Tenant: tenant, }, &reply); err != nil { if verbose { log.Printf("WARNING: Got error on cache clear: %s\n", err.Error()) diff --git a/engine/tpreader_test.go b/engine/tpreader_test.go index b9a726a9a..154f955ef 100644 --- a/engine/tpreader_test.go +++ b/engine/tpreader_test.go @@ -57,7 +57,7 @@ func TestCallCacheNoCaching(t *testing.T) { expArgs := map[string][]string{ utils.FilterIDs: {"cgrates.org:FLTR_ID1", "cgrates.org:FLTR_ID2"}, } - err := CallCache(cM, cacheConns, caching, args, cacheIDs, opts, true) + err := CallCache(cM, cacheConns, caching, args, cacheIDs, opts, true, "cgrates.org") if err != nil { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", nil, err) @@ -89,6 +89,7 @@ func TestCallCacheReloadCacheFirstCallErr(t *testing.T) { ArgsCache: map[string][]string{ utils.FilterIDs: {"cgrates.org:FLTR_ID1", "cgrates.org:FLTR_ID2"}, }, + Tenant: "cgrates.org", } if !reflect.DeepEqual(args, expArgs) { @@ -123,7 +124,7 @@ func TestCallCacheReloadCacheFirstCallErr(t *testing.T) { explog := "Reloading cache\n" experr := utils.ErrUnsupporteServiceMethod - err := CallCache(cM, cacheConns, caching, args, cacheIDs, opts, true) + err := CallCache(cM, cacheConns, caching, args, cacheIDs, opts, true, "cgrates.org") if err == nil || err != experr { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", experr, err) @@ -157,6 +158,7 @@ func TestCallCacheReloadCacheSecondCallErr(t *testing.T) { utils.Subsys: utils.MetaChargers, }, CacheIDs: []string{"cacheID"}, + Tenant: "cgrates.org", } if !reflect.DeepEqual(args, expArgs) { @@ -193,7 +195,7 @@ func TestCallCacheReloadCacheSecondCallErr(t *testing.T) { explog2 := "Clearing indexes" experr := utils.ErrUnsupporteServiceMethod explog3 := fmt.Sprintf("WARNING: Got error on cache clear: %s\n", experr) - err := CallCache(cM, cacheConns, caching, args, cacheIDs, opts, true) + err := CallCache(cM, cacheConns, caching, args, cacheIDs, opts, true, "cgrates.org") if err == nil || err != experr { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", experr, err) @@ -236,6 +238,7 @@ func TestCallCacheLoadCache(t *testing.T) { ArgsCache: map[string][]string{ utils.FilterIDs: {"cgrates.org:FLTR_ID1", "cgrates.org:FLTR_ID2"}, }, + Tenant: "cgrates.org", } if !reflect.DeepEqual(args, expArgs) { @@ -252,6 +255,7 @@ func TestCallCacheLoadCache(t *testing.T) { utils.Subsys: utils.MetaChargers, }, CacheIDs: []string{"cacheID"}, + Tenant: "cgrates.org", } if !reflect.DeepEqual(args, expArgs) { @@ -278,7 +282,7 @@ func TestCallCacheLoadCache(t *testing.T) { utils.Subsys: utils.MetaChargers, } - err := CallCache(cM, cacheConns, caching, args, cacheIDs, opts, false) + err := CallCache(cM, cacheConns, caching, args, cacheIDs, opts, false, "cgrates.org") if err != nil { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", nil, err) @@ -306,6 +310,7 @@ func TestCallCacheRemoveItems(t *testing.T) { ArgsCache: map[string][]string{ utils.FilterIDs: {"cgrates.org:FLTR_ID1", "cgrates.org:FLTR_ID2"}, }, + Tenant: "cgrates.org", } if !reflect.DeepEqual(args, expArgs) { @@ -322,6 +327,7 @@ func TestCallCacheRemoveItems(t *testing.T) { utils.Subsys: utils.MetaChargers, }, CacheIDs: []string{"cacheID"}, + Tenant: "cgrates.org", } if !reflect.DeepEqual(args, expArgs) { @@ -348,7 +354,7 @@ func TestCallCacheRemoveItems(t *testing.T) { utils.Subsys: utils.MetaChargers, } - err := CallCache(cM, cacheConns, caching, args, cacheIDs, opts, false) + err := CallCache(cM, cacheConns, caching, args, cacheIDs, opts, false, "cgrates.org") if err != nil { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", nil, err) @@ -373,6 +379,7 @@ func TestCallCacheClear(t *testing.T) { APIOpts: map[string]interface{}{ utils.Subsys: utils.MetaChargers, }, + Tenant: "cgrates.org", } if !reflect.DeepEqual(args, expArgs) { @@ -399,7 +406,7 @@ func TestCallCacheClear(t *testing.T) { utils.Subsys: utils.MetaChargers, } - err := CallCache(cM, cacheConns, caching, args, cacheIDs, opts, false) + err := CallCache(cM, cacheConns, caching, args, cacheIDs, opts, false, "cgrates.org") if err != nil { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", nil, err) @@ -941,7 +948,7 @@ func TestReloadCache(t *testing.T) { cfg := config.NewDefaultCGRConfig() argExpect := &utils.AttrReloadCacheWithAPIOpts{ APIOpts: map[string]interface{}{}, - Tenant: "", + Tenant: "cgrates.org", ArgsCache: map[string][]string{ "ActionIDs": {"ActionsID"}, "ActionPlanIDs": {"ActionPlansID"}, @@ -1042,7 +1049,7 @@ func TestReloadCache(t *testing.T) { dm: NewDataManager(data, config.CgrConfig().CacheCfg(), cnMgr), } tpr.cacheConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches)} - if err := tpr.ReloadCache(utils.MetaReload, false, make(map[string]interface{})); err != nil { + if err := tpr.ReloadCache(utils.MetaReload, false, make(map[string]interface{}), "cgrates.org"); err != nil { t.Error(err) } } diff --git a/loaders/libloader.go b/loaders/libloader.go index 825d604d3..01e21505c 100644 --- a/loaders/libloader.go +++ b/loaders/libloader.go @@ -48,12 +48,9 @@ func (ld LoaderData) GetRateIDs() ([]string, error) { // UpdateFromCSV will update LoaderData with data received from fileName, // contained in record and processed with cfgTpl func (ld LoaderData) UpdateFromCSV(fileName string, record []string, - cfgTpl []*config.FCTemplate, tnt config.RSRParsers, filterS *engine.FilterS) (err error) { + cfgTpl []*config.FCTemplate, tnt string, filterS *engine.FilterS) (err error) { csvProvider := newCsvProvider(record, fileName) - tenant, err := tnt.ParseValue("") - if err != nil { - return err - } + tenant := tnt for _, cfgFld := range cfgTpl { // Make sure filters are matching if len(cfgFld.Filters) != 0 { diff --git a/loaders/libloader_test.go b/loaders/libloader_test.go index 89896bd21..9896ba820 100644 --- a/loaders/libloader_test.go +++ b/loaders/libloader_test.go @@ -80,7 +80,7 @@ func TestDataUpdateFromCSVOneFile(t *testing.T) { } lData := make(LoaderData) if err := lData.UpdateFromCSV("Attributes.csv", rows[0], attrSFlds, - config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep), nil); err != nil { + "cgrates.org", nil); err != nil { t.Error(err) } eLData := LoaderData{"Tenant": "cgrates.org", @@ -99,7 +99,7 @@ func TestDataUpdateFromCSVOneFile(t *testing.T) { } lData = make(LoaderData) if err := lData.UpdateFromCSV("Attributes.csv", rows[1], attrSFlds, - config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep), nil); err != nil { + "cgrates.org", nil); err != nil { t.Error(err) } eLData = LoaderData{"Tenant": "cgrates.org", @@ -170,7 +170,7 @@ func TestDataUpdateFromCSVOneFile2(t *testing.T) { } lData := make(LoaderData) if err := lData.UpdateFromCSV("Attributes.csv", rows[0], attrSFlds, - config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep), nil); err != nil { + "cgrates.org", nil); err != nil { t.Error(err) } eLData := LoaderData{"Tenant": "cgrates.org", @@ -189,7 +189,7 @@ func TestDataUpdateFromCSVOneFile2(t *testing.T) { } lData = make(LoaderData) if err := lData.UpdateFromCSV("Attributes.csv", rows[1], attrSFlds, - config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep), nil); err != nil { + "cgrates.org", nil); err != nil { t.Error(err) } eLData = LoaderData{"Tenant": "cgrates.org", @@ -253,7 +253,7 @@ func TestDataUpdateFromCSVMultiFiles(t *testing.T) { lData := make(LoaderData) for fName, record := range loadRun1 { if err := lData.UpdateFromCSV(fName, record, attrSFlds, - config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep), nil); err != nil { + "cgrates.org", nil); err != nil { t.Error(err) } } @@ -282,16 +282,16 @@ func TestGetRateIDsLoaderData(t *testing.T) { } } -func TestUpdateFromCsvParseValueError(t *testing.T) { - ldrData := LoaderData{ - "File1.csv": []string{"Subject", "*any", "1001"}, - } - tnt := config.NewRSRParsersMustCompile("asd{*duration_seconds}", utils.InfieldSep) - expected := "time: invalid duration \"asd\"" - if err := ldrData.UpdateFromCSV("File1.csv", nil, nil, tnt, nil); err == nil || err.Error() != expected { - t.Errorf("Expected %+v, received %+v", expected, err) - } -} +// func TestUpdateFromCsvParseValueError(t *testing.T) { +// ldrData := LoaderData{ +// "File1.csv": []string{"Subject", "*any", "1001"}, +// } +// tnt := config.NewRSRParsersMustCompile("asd{*duration_seconds}", utils.InfieldSep) +// expected := "time: invalid duration \"asd\"" +// if err := ldrData.UpdateFromCSV("File1.csv", nil, nil, tnt, nil); err == nil || err.Error() != expected { +// t.Errorf("Expected %+v, received %+v", expected, err) +// } +// } func TestUpdateFromCsvWithFiltersError(t *testing.T) { attrSFlds := []*config.FCTemplate{ @@ -321,7 +321,7 @@ func TestUpdateFromCsvWithFiltersError(t *testing.T) { for fName, record := range loadRunStr { expected := "Ignoring record: [\"cgrates.org\" \"TEST_1\"] with error : strconv.Atoi: parsing \"Account\": invalid syntax" if err := lData.UpdateFromCSV(fName, record, attrSFlds, - config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep), filterS); err == nil || err.Error() != expected { + "cgrates.org", filterS); err == nil || err.Error() != expected { t.Errorf("Expected %+v, received %+v", expected, err) } } @@ -354,7 +354,7 @@ func TestUpdateFromCsvWithFiltersContinue(t *testing.T) { for fName, record := range loadRunStr { if err := lData.UpdateFromCSV(fName, record, attrSFlds, - config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep), filterS); err != nil { + "cgrates.org", filterS); err != nil { t.Error(err) } } diff --git a/loaders/loader.go b/loaders/loader.go index 48f3f87d3..8931e5abc 100644 --- a/loaders/loader.go +++ b/loaders/loader.go @@ -86,7 +86,7 @@ func NewLoader(dm *engine.DataManager, cfg *config.LoaderSCfg, // Loader is one instance loading from a folder type Loader struct { enabled bool - tenant config.RSRParsers + tenant string dryRun bool ldrID string tpInDir string @@ -544,7 +544,7 @@ func (ldr *Loader) storeLoadedData(loaderType string, } if len(ldr.cacheConns) != 0 { - return engine.CallCache(ldr.connMgr, ldr.cacheConns, caching, cacheArgs, cacheIDs, nil, false) + return engine.CallCache(ldr.connMgr, ldr.cacheConns, caching, cacheArgs, cacheIDs, nil, false, ldr.tenant) } return } @@ -791,7 +791,7 @@ func (ldr *Loader) removeLoadedData(loaderType string, lds map[string][]LoaderDa } if len(ldr.cacheConns) != 0 { - return engine.CallCache(ldr.connMgr, ldr.cacheConns, caching, cacheArgs, cacheIDs, nil, false) + return engine.CallCache(ldr.connMgr, ldr.cacheConns, caching, cacheArgs, cacheIDs, nil, false, ldr.tenant) } return } diff --git a/services/loaders_test.go b/services/loaders_test.go index 5aad07ba3..7d090da41 100644 --- a/services/loaders_test.go +++ b/services/loaders_test.go @@ -57,7 +57,7 @@ func TestLoaderSCoverage(t *testing.T) { []*config.LoaderSCfg{{ ID: "test_id", Enabled: true, - Tenant: nil, + Tenant: "", DryRun: false, RunDelay: 0, LockFileName: "",