From acb604ebd890939885c6d61a20fc3e6ebc0d5ecb Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Wed, 5 May 2021 17:13:03 +0300 Subject: [PATCH] Replace *timings with *cronexp --- config/config_json_test.go | 2 +- config/datadbcfg_test.go | 2 +- engine/datamanager.go | 6 +++--- engine/filters.go | 37 ++++++++++++++++++++++++++++++------- engine/filters_test.go | 29 ++++++++++++++++++----------- migrator/migrator.go | 4 ++-- services/datadb_it_test.go | 12 ++++++------ services/datadb_test.go | 2 +- utils/consts.go | 4 ++-- 9 files changed, 64 insertions(+), 34 deletions(-) diff --git a/config/config_json_test.go b/config/config_json_test.go index 74ed7f2cd..d7d55dc02 100644 --- a/config/config_json_test.go +++ b/config/config_json_test.go @@ -353,7 +353,7 @@ func TestDfDataDbJsonCfg(t *testing.T) { Replicate: utils.BoolPointer(false), Remote: utils.BoolPointer(false), }, - utils.MetaTimings: { + utils.MetaCronExp: { Replicate: utils.BoolPointer(false), Remote: utils.BoolPointer(false), }, diff --git a/config/datadbcfg_test.go b/config/datadbcfg_test.go index 8caca9177..4b67a9961 100644 --- a/config/datadbcfg_test.go +++ b/config/datadbcfg_test.go @@ -448,7 +448,7 @@ func TestDataDbCfgloadFromJsonCfgItems(t *testing.T) { }, RmtConns: []string{"Conn1"}, Items: map[string]*ItemOpt{ - utils.MetaTimings: {}, + utils.MetaCronExp: {}, utils.MetaResourceProfile: {}, utils.MetaResources: {}, utils.MetaStatQueueProfiles: {}, diff --git a/engine/datamanager.go b/engine/datamanager.go index 250b29016..e79ee47d7 100644 --- a/engine/datamanager.go +++ b/engine/datamanager.go @@ -1220,7 +1220,7 @@ func (dm *DataManager) GetTiming(id string, skipCache bool, } t, err = dm.dataDB.GetTimingDrv(id) if err != nil { - if itm := config.CgrConfig().DataDbCfg().Items[utils.MetaTimings]; err == utils.ErrNotFound && itm.Remote { + if itm := config.CgrConfig().DataDbCfg().Items[utils.CacheTimings]; err == utils.ErrNotFound && itm.Remote { if err = dm.connMgr.Call(context.TODO(), config.CgrConfig().DataDbCfg().RmtConns, utils.ReplicatorSv1GetTiming, &utils.StringWithAPIOpts{ Arg: id, @@ -1261,7 +1261,7 @@ func (dm *DataManager) SetTiming(ctx *context.Context, t *utils.TPTiming) (err e if err = dm.CacheDataFromDB(ctx, utils.TimingsPrefix, []string{t.ID}, true); err != nil { return } - if itm := config.CgrConfig().DataDbCfg().Items[utils.MetaTimings]; itm.Replicate { + if itm := config.CgrConfig().DataDbCfg().Items[utils.CacheTimings]; itm.Replicate { err = replicate(context.TODO(), dm.connMgr, config.CgrConfig().DataDbCfg().RplConns, config.CgrConfig().DataDbCfg().RplFiltered, utils.TimingsPrefix, t.ID, // this are used to get the host IDs from cache @@ -1285,7 +1285,7 @@ func (dm *DataManager) RemoveTiming(id, transactionID string) (err error) { cacheCommit(transactionID), transactionID); errCh != nil { return errCh } - if config.CgrConfig().DataDbCfg().Items[utils.MetaTimings].Replicate { + if config.CgrConfig().DataDbCfg().Items[utils.CacheTimings].Replicate { replicate(context.TODO(), dm.connMgr, config.CgrConfig().DataDbCfg().RplConns, config.CgrConfig().DataDbCfg().RplFiltered, utils.TimingsPrefix, id, // this are used to get the host IDs from cache diff --git a/engine/filters.go b/engine/filters.go index e54afc29d..29c8d9f77 100644 --- a/engine/filters.go +++ b/engine/filters.go @@ -222,19 +222,19 @@ func (fltr *Filter) Compile() (err error) { var supportedFiltersType utils.StringSet = utils.NewStringSet([]string{ utils.MetaString, utils.MetaPrefix, utils.MetaSuffix, - utils.MetaTimings, utils.MetaRSR, utils.MetaDestinations, + utils.MetaCronExp, utils.MetaRSR, utils.MetaDestinations, utils.MetaEmpty, utils.MetaExists, utils.MetaLessThan, utils.MetaLessOrEqual, utils.MetaGreaterThan, utils.MetaGreaterOrEqual, utils.MetaEqual, utils.MetaNotEqual, utils.MetaIPNet, utils.MetaAPIBan, utils.MetaActivationInterval}) var needsFieldName utils.StringSet = utils.NewStringSet([]string{ utils.MetaString, utils.MetaPrefix, utils.MetaSuffix, - utils.MetaTimings, utils.MetaRSR, utils.MetaDestinations, utils.MetaLessThan, + utils.MetaCronExp, utils.MetaRSR, utils.MetaDestinations, utils.MetaLessThan, utils.MetaEmpty, utils.MetaExists, utils.MetaLessOrEqual, utils.MetaGreaterThan, utils.MetaGreaterOrEqual, utils.MetaEqual, utils.MetaNotEqual, utils.MetaIPNet, utils.MetaAPIBan, utils.MetaActivationInterval}) var needsValues utils.StringSet = utils.NewStringSet([]string{utils.MetaString, utils.MetaPrefix, - utils.MetaSuffix, utils.MetaTimings, utils.MetaRSR, utils.MetaDestinations, + utils.MetaSuffix, utils.MetaCronExp, utils.MetaRSR, utils.MetaDestinations, utils.MetaLessThan, utils.MetaLessOrEqual, utils.MetaGreaterThan, utils.MetaGreaterOrEqual, utils.MetaEqual, utils.MetaNotEqual, utils.MetaIPNet, utils.MetaAPIBan, utils.MetaActivationInterval}) @@ -341,8 +341,8 @@ func (fltr *FilterRule) Pass(ctx *context.Context, dDP utils.DataProvider) (resu result, err = fltr.passStringPrefix(dDP) case utils.MetaSuffix, utils.MetaNotSuffix: result, err = fltr.passStringSuffix(dDP) - case utils.MetaTimings, utils.MetaNotTimings: - result, err = fltr.passTimings(dDP) + case utils.MetaCronExp, utils.MetaNotCronExp: + result, err = fltr.passCronExp(ctx, dDP) case utils.MetaDestinations, utils.MetaNotDestinations: result, err = fltr.passDestinations(ctx, dDP) case utils.MetaRSR, utils.MetaNotRSR: @@ -472,8 +472,31 @@ func (fltr *FilterRule) passStringSuffix(dDP utils.DataProvider) (bool, error) { return false, nil } -// ToDo when Timings will be available in DataDb -func (fltr *FilterRule) passTimings(dDP utils.DataProvider) (bool, error) { +func (fltr *FilterRule) passCronExp(ctx *context.Context, dDP utils.DataProvider) (bool, error) { + // tm, err := fltr.rsrElement.ParseDataProvider(dDP) + // if err != nil { + // if err == utils.ErrNotFound { + // return false, nil + // } + // return false, err + // } + // tmTime, err := utils.IfaceAsTime(tm, config.CgrConfig().GeneralCfg().DefaultTimezone) + // if err != nil { + // return false, err + // } + + // for _, valCronIDVal := range fltr.rsrValues { + // valTmID, err := valCronIDVal.ParseDataProvider(dDP) + // if err != nil { + // return false, err + // } + + // if err = connMgr.Call(ctx, config.CgrConfig().FilterSCfg().AdminSConns, utils.APIerSv1GetTPTiming, ,); err != nil { + // continue + // } + + // } + // return false, nil return false, utils.ErrNotImplemented } diff --git a/engine/filters_test.go b/engine/filters_test.go index 998d9c247..0d464ff17 100644 --- a/engine/filters_test.go +++ b/engine/filters_test.go @@ -247,17 +247,6 @@ func TestFilterNewRequestFilter(t *testing.T) { if !reflect.DeepEqual(erf, rf) { t.Errorf("Expecting: %+v, received: %+v", erf, rf) } - // rf, err = NewFilterRule(utils.MetaTimings, "~MetaTimings", []string{""}) - // if err != nil { - // t.Errorf("Error: %+v", err) - // } - // erf = &FilterRule{Type: utils.MetaTimings, Element: "~MetaTimings", Values: []string{""}, negative: utils.BoolPointer(false)} - // if err = erf.CompileValues(); err != nil { - // t.Fatal(err) - // } - // if !reflect.DeepEqual(erf, rf) { - // t.Errorf("Expecting: %+v, received: %+v", erf, rf) - // } rf, err = NewFilterRule(utils.MetaDestinations, "~MetaDestinations", []string{"1001"}) if err != nil { t.Errorf("Error: %+v", err) @@ -1107,3 +1096,21 @@ func TestFilterPassRSRFieldsWithMultplieValues(t *testing.T) { t.Error("Not passing") } } + +// func TestFilterPassCronExp(t *testing.T) { +// ev := utils.MapStorage{ +// utils.MetaReq: utils.MapStorage{ +// utils.AnswerTime: "2018-01-07T17:00:10Z", +// }, +// } + +// cfg := config.NewDefaultCGRConfig() +// dm := NewDataManager(NewInternalDB(nil, nil, true), cfg.CacheCfg(), nil) +// fltr := NewFilterS(cfg, nil, dm) + +// if passes, err := fltr.Pass(context.Background(), "cgrates.org", []string{"*cronexp:~*req.AnswerTime:* 10-12 * * *"}, ev); err != nil { +// t.Error(err) +// } else if !passes { +// t.Error("Not passing") +// } +// } diff --git a/migrator/migrator.go b/migrator/migrator.go index 319f05e25..21343fccd 100644 --- a/migrator/migrator.go +++ b/migrator/migrator.go @@ -124,7 +124,7 @@ func (m *Migrator) Migrate(taskIDs []string) (err error, stats map[string]int) { err = m.migrateDestinations() case utils.MetaReverseDestinations: err = m.migrateReverseDestinations() - case utils.MetaTimings: + case utils.CacheTimings: err = m.migrateTimings() case utils.MetaResources: err = m.migrateResources() @@ -182,7 +182,7 @@ func (m *Migrator) Migrate(taskIDs []string) (err error, stats map[string]int) { log.Print("ERROR: ", utils.MetaReverseDestinations, " ", err) } if err := m.migrateTimings(); err != nil { - log.Print("ERROR: ", utils.MetaTimings, " ", err) + log.Print("ERROR: ", utils.CacheTimings, " ", err) } if err := m.migrateFilters(); err != nil { log.Print("ERROR: ", utils.MetaFilters, " ", err) diff --git a/services/datadb_it_test.go b/services/datadb_it_test.go index 5ba1162d3..1952e99d7 100644 --- a/services/datadb_it_test.go +++ b/services/datadb_it_test.go @@ -113,7 +113,7 @@ func TestDataDBReload(t *testing.T) { utils.MetaActions: { Replicate: false, Remote: false}, - utils.MetaTimings: { + utils.MetaCronExp: { Replicate: false, Remote: false}, utils.MetaResourceProfile: { @@ -265,7 +265,7 @@ func TestDataDBReloadBadType(t *testing.T) { utils.MetaActions: { Replicate: false, Remote: false}, - utils.MetaTimings: { + utils.MetaCronExp: { Replicate: false, Remote: false}, utils.MetaResourceProfile: { @@ -376,7 +376,7 @@ func TestDataDBReloadErrorMarsheler(t *testing.T) { utils.MetaActions: { Replicate: false, Remote: false}, - utils.MetaTimings: { + utils.MetaCronExp: { Replicate: false, Remote: false}, utils.MetaResourceProfile: { @@ -576,7 +576,7 @@ func TestDataDBReloadCastError(t *testing.T) { utils.MetaActions: { Replicate: false, Remote: false}, - utils.MetaTimings: { + utils.MetaCronExp: { Replicate: false, Remote: false}, utils.MetaResourceProfile: { @@ -721,7 +721,7 @@ func TestDataDBReloadIfaceAsDurationError(t *testing.T) { utils.MetaActions: { Replicate: false, Remote: false}, - utils.MetaTimings: { + utils.MetaCronExp: { Replicate: false, Remote: false}, utils.MetaResourceProfile: { @@ -851,7 +851,7 @@ func TestDataDBReloadError(t *testing.T) { utils.MetaActions: { Replicate: false, Remote: false}, - utils.MetaTimings: { + utils.MetaCronExp: { Replicate: false, Remote: false}, utils.MetaResourceProfile: { diff --git a/services/datadb_test.go b/services/datadb_test.go index 2559a86ad..2b313b893 100644 --- a/services/datadb_test.go +++ b/services/datadb_test.go @@ -78,7 +78,7 @@ func TestDataDBCoverage(t *testing.T) { utils.MetaActions: { Replicate: false, Remote: false}, - utils.MetaTimings: { + utils.MetaCronExp: { Replicate: false, Remote: false}, utils.MetaResourceProfile: { diff --git a/utils/consts.go b/utils/consts.go index bf7c2cae5..4253afac1 100644 --- a/utils/consts.go +++ b/utils/consts.go @@ -1068,7 +1068,7 @@ const ( MetaSuffix = "*suffix" MetaEmpty = "*empty" MetaExists = "*exists" - MetaTimings = "*timings" + MetaCronExp = "*cronexp" MetaRSR = "*rsr" MetaDestinations = "*destinations" MetaLessThan = "*lt" @@ -1086,7 +1086,7 @@ const ( MetaNotSuffix = "*notsuffix" MetaNotEmpty = "*notempty" MetaNotExists = "*notexists" - MetaNotTimings = "*nottimings" + MetaNotCronExp = "*notcronexp" MetaNotRSR = "*notrsr" MetaNotStatS = "*notstats" MetaNotDestinations = "*notdestinations"