From 2b04066504c2c8e2766610db56dfe42f00bb0916 Mon Sep 17 00:00:00 2001 From: gezimbll Date: Wed, 8 Jan 2025 15:46:54 +0100 Subject: [PATCH] added parsing the event for *usage opts in accounts --- accounts/accounts_test.go | 18 +- actions/actions_test.go | 4 +- apis/chargers_test.go | 2 +- apis/config_it_test.go | 32 +- apis/config_test.go | 26 +- cdrs/cdrs_test.go | 30 +- config/accountscfg.go | 36 +- config/accountscfg_test.go | 63 +-- config/actionscfg.go | 30 +- config/actionscfg_test.go | 42 +- config/analyzerscfg.go | 8 +- config/analyzerscfg_test.go | 14 +- config/apis_test.go | 2 +- config/attributescfg.go | 40 +- config/attributescfg_test.go | 76 +-- config/cdrscfg.go | 100 ++-- config/cdrscfg_test.go | 130 ++--- config/config.go | 152 ++--- config/config_it_test.go | 242 ++++---- config/config_test.go | 414 +++++++------- config/configsanity_test.go | 4 +- config/dispatcherscfg.go | 10 +- config/dispatcherscfg_test.go | 16 +- config/generalcfg.go | 8 +- config/generalcfg_test.go | 16 +- {utils => config}/libdynamics.go | 73 ++- {utils => config}/libdynamics_test.go | 117 ++-- config/multifiles_it_test.go | 2 +- config/ratescfg.go | 62 +- config/ratescfg_test.go | 124 ++-- config/resourcescfg.go | 36 +- config/resourcescfg_test.go | 60 +- config/routescfg.go | 102 ++-- config/routescfg_test.go | 132 +++-- config/sessionscfg.go | 346 ++++++------ config/sessionscfg_test.go | 532 +++++++++--------- config/statscfg.go | 40 +- config/statscfg_test.go | 60 +- config/thresholdscfg.go | 20 +- config/thresholdscfg_test.go | 36 +- engine/coverage.out | 1 - engine/libdynopts.go | 27 +- engine/libdynopts_test.go | 241 +++++--- engine/route_cost_sort_test.go | 7 +- engine/routes_test.go | 28 +- engine/stats_test.go | 16 +- engine/storage_it_test.go | 30 +- engine/thresholds_test.go | 10 +- engine/z_attributes_test.go | 4 +- engine/z_resources_test.go | 20 +- .../session_graceful_shutdown_it_test.go | 2 +- rates/rates_test.go | 2 +- 52 files changed, 1857 insertions(+), 1788 deletions(-) rename {utils => config}/libdynamics.go (84%) rename {utils => config}/libdynamics_test.go (88%) delete mode 100644 engine/coverage.out diff --git a/accounts/accounts_test.go b/accounts/accounts_test.go index b44e82040..90b5d6b0d 100644 --- a/accounts/accounts_test.go +++ b/accounts/accounts_test.go @@ -2832,7 +2832,7 @@ func TestV1AccountsForEventProfileIgnoreFilters(t *testing.T) { dm := engine.NewDataManager(data, cfg.CacheCfg(), nil) fltr := engine.NewFilterS(cfg, nil, dm) accnts := NewAccountS(cfg, fltr, nil, dm) - cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -2905,7 +2905,7 @@ func TestV1AccountsForEventProfileIgnoreFilters(t *testing.T) { func TestV1MaxAbstractsMetaProfileIgnoreFilters(t *testing.T) { engine.Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -3039,7 +3039,7 @@ func TestV1MaxAbstractsMetaProfileIgnoreFilters(t *testing.T) { func TestV1MaxAbstractsMetaProfileIgnoreFiltersError(t *testing.T) { engine.Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -3080,7 +3080,7 @@ func TestV1MaxAbstractsMetaProfileIgnoreFiltersError(t *testing.T) { func TestV1DebitAbstractsMetaProfileIgnoreFilters(t *testing.T) { engine.Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -3230,7 +3230,7 @@ func TestV1DebitAbstractsMetaProfileIgnoreFilters(t *testing.T) { func TestV1DebitAbstractsMetaProfileIgnoreFiltersError(t *testing.T) { engine.Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -3308,7 +3308,7 @@ func TestV1DebitAbstractsMetaProfileIgnoreFiltersError(t *testing.T) { func TestV1MaxConcretesProfileIgnoreFilters(t *testing.T) { engine.Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -3461,7 +3461,7 @@ func TestV1MaxConcretesProfileIgnoreFilters(t *testing.T) { func TestV1MaxConcretesProfileIgnoreFiltersError(t *testing.T) { engine.Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -3503,7 +3503,7 @@ func TestV1MaxConcretesProfileIgnoreFiltersError(t *testing.T) { func TestV1DebitConcretesProfileIgnoreFilters(t *testing.T) { engine.Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -3668,7 +3668,7 @@ func TestV1DebitConcretesProfileIgnoreFilters(t *testing.T) { func TestV1DebitConcretesProfileIgnoreFiltersError(t *testing.T) { engine.Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.AccountSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, diff --git a/actions/actions_test.go b/actions/actions_test.go index 998e0e282..09a08561f 100644 --- a/actions/actions_test.go +++ b/actions/actions_test.go @@ -1123,7 +1123,7 @@ func TestACScheduledActions(t *testing.T) { func TestV1ScheduleActionsProfileIgnoreFilters(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.ActionSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.ActionSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -1179,7 +1179,7 @@ func TestV1ScheduleActionsProfileIgnoreFilters(t *testing.T) { func TestV1ExecuteActionsProfileIgnoreFilters(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.ActionSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.ActionSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, diff --git a/apis/chargers_test.go b/apis/chargers_test.go index a21faab22..300b125ee 100644 --- a/apis/chargers_test.go +++ b/apis/chargers_test.go @@ -1120,7 +1120,7 @@ func TestChargersAPIs(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.GeneralCfg().DefaultCaching = utils.MetaNone cfg.ChargerSCfg().AttributeSConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes)} - cfg.AttributeSCfg().Opts.ProcessRuns = []*utils.DynamicIntOpt{ + cfg.AttributeSCfg().Opts.ProcessRuns = []*config.DynamicIntOpt{ { Value: 2, }, diff --git a/apis/config_it_test.go b/apis/config_it_test.go index 608da32de..3b13841bf 100644 --- a/apis/config_it_test.go +++ b/apis/config_it_test.go @@ -152,10 +152,10 @@ func testCfgGetConfig(t *testing.T) { "exists_indexed_fields": []string{}, "notexists_indexed_fields": []string{}, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*config.DynamicStringSliceOpt{}, + utils.MetaProcessRunsCfg: []*config.DynamicIntOpt{}, + utils.MetaProfileRunsCfg: []*config.DynamicIntOpt{}, + utils.MetaProfileIgnoreFilters: []*config.DynamicBoolOpt{}, }, }, } @@ -191,7 +191,7 @@ func testCfgSetGetConfig(t *testing.T) { "stats_conns": []string{"*internal"}, "suffix_indexed_fields": []string{}, utils.OptsCfg: map[string]any{ - utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{ + utils.MetaProcessRunsCfg: []*config.DynamicIntOpt{ { Value: 2, }, @@ -298,11 +298,11 @@ func testCfgSetEmptyReload(t *testing.T) { "rate_notexists_indexed_fields": []string{}, "verbosity": 1000, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaStartTime: []*utils.DynamicStringOpt{}, - utils.MetaUsage: []*utils.DynamicDecimalBigOpt{}, - utils.MetaIntervalStartCfg: []*utils.DynamicDecimalBigOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*config.DynamicStringSliceOpt{}, + utils.MetaStartTime: []*config.DynamicStringOpt{}, + utils.MetaUsage: []*config.DynamicDecimalOpt{}, + utils.MetaIntervalStartCfg: []*config.DynamicDecimalOpt{}, + utils.MetaProfileIgnoreFilters: []*config.DynamicBoolOpt{}, }, }, } @@ -496,7 +496,7 @@ func testCfgSetGetConfigStore(t *testing.T) { "profile_runs": 0., "suffix_indexed_fields": []string{}, utils.OptsCfg: map[string]any{ - utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{}, + utils.MetaProcessRunsCfg: []*config.DynamicIntOpt{}, }, }, }, @@ -521,10 +521,10 @@ func testCfgSetGetConfigStore(t *testing.T) { "exists_indexed_fields": []string{}, "notexists_indexed_fields": []string{}, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*config.DynamicStringSliceOpt{}, + utils.MetaProcessRunsCfg: []*config.DynamicIntOpt{}, + utils.MetaProfileRunsCfg: []*config.DynamicIntOpt{}, + utils.MetaProfileIgnoreFilters: []*config.DynamicBoolOpt{}, }, }, } @@ -577,7 +577,7 @@ func testCfgMdfSectConfigStore(t *testing.T) { Suffix_indexed_fields: nil, Nested_fields: nil, Opts: &config.AttributesOptsJson{ - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*config.DynamicIntOpt{ { Value: 2, }, diff --git a/apis/config_test.go b/apis/config_test.go index f2394db47..4b72e2e40 100644 --- a/apis/config_test.go +++ b/apis/config_test.go @@ -89,14 +89,14 @@ func TestConfigSetGetConfig(t *testing.T) { "exists_indexed_fields": []string{}, "notexists_indexed_fields": []string{}, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{ + utils.MetaProfileIDs: []*config.DynamicStringSliceOpt{}, + utils.MetaProcessRunsCfg: []*config.DynamicIntOpt{ { Value: 3, }, }, - utils.MetaProfileRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileRunsCfg: []*config.DynamicIntOpt{}, + utils.MetaProfileIgnoreFilters: []*config.DynamicBoolOpt{}, }, }, } @@ -126,7 +126,7 @@ func TestConfigSetGetReloadConfig(t *testing.T) { "exists_indexed_fields": []string{}, "notexists_indexed_fields": []string{}, utils.OptsCfg: map[string]any{ - utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{ + utils.MetaProcessRunsCfg: []*config.DynamicIntOpt{ { Value: 2, }, @@ -158,10 +158,10 @@ func TestConfigSetGetReloadConfig(t *testing.T) { "exists_indexed_fields": []string{}, "notexists_indexed_fields": []string{}, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*config.DynamicStringSliceOpt{}, + utils.MetaProcessRunsCfg: []*config.DynamicIntOpt{}, + utils.MetaProfileRunsCfg: []*config.DynamicIntOpt{}, + utils.MetaProfileIgnoreFilters: []*config.DynamicBoolOpt{}, }, }, } @@ -198,10 +198,10 @@ func TestConfigSetGetReloadConfig(t *testing.T) { "exists_indexed_fields": []string{}, "notexists_indexed_fields": []string{}, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*config.DynamicStringSliceOpt{}, + utils.MetaProcessRunsCfg: []*config.DynamicIntOpt{}, + utils.MetaProfileRunsCfg: []*config.DynamicIntOpt{}, + utils.MetaProfileIgnoreFilters: []*config.DynamicBoolOpt{}, }, }, } diff --git a/cdrs/cdrs_test.go b/cdrs/cdrs_test.go index bc75f5716..d0cf2effd 100644 --- a/cdrs/cdrs_test.go +++ b/cdrs/cdrs_test.go @@ -1253,7 +1253,7 @@ func TestCDRsProcessEventMockAttrsErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, }, @@ -1313,7 +1313,7 @@ func TestCDRsProcessEventMockAttrsErrBoolOpts(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, }, @@ -1374,7 +1374,7 @@ func TestCDRsProcessEventMockChrgsErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, }, @@ -1435,7 +1435,7 @@ func TestCDRsProcessEventMockChrgsErrBoolOpts(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, }, @@ -1497,7 +1497,7 @@ func TestCDRsProcessEventMockRateSErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, }, @@ -1558,7 +1558,7 @@ func TestCDRsProcessEventMockRateSErrBoolOpts(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, }, @@ -1620,7 +1620,7 @@ func TestCDRsProcessEventMockAcntsErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, }, @@ -1681,7 +1681,7 @@ func TestCDRsProcessEventMockAcntsErrBoolOpts(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, }, @@ -1743,7 +1743,7 @@ func TestCDRsProcessEventMockExportErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, @@ -1805,7 +1805,7 @@ func TestCDRsProcessEventMockExportErrBoolOpts(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, }, @@ -1867,7 +1867,7 @@ func TestCDRsProcessEventMockThdsErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, }, @@ -1927,7 +1927,7 @@ func TestCDRsProcessEventMockThdsErrBoolOpts(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, }, @@ -1989,7 +1989,7 @@ func TestCDRsProcessEventMockStatsErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, }, @@ -2050,7 +2050,7 @@ func TestCDRsProcessEventMockStatsErrGetBoolOpts(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, }, @@ -2337,7 +2337,7 @@ func TestCDRsProcessEventMockThdsEcCostIface(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.CdrsCfg().AccountSConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAccounts)} - cfg.CdrsCfg().Opts.Attributes = []*utils.DynamicBoolOpt{ + cfg.CdrsCfg().Opts.Attributes = []*config.DynamicBoolOpt{ { Value: false, }, diff --git a/config/accountscfg.go b/config/accountscfg.go index 0a91673a5..c19cfae85 100644 --- a/config/accountscfg.go +++ b/config/accountscfg.go @@ -35,9 +35,9 @@ var ( const AccountsProfileIgnoreFiltersDftOpt = false type AccountsOpts struct { - ProfileIDs []*utils.DynamicStringSliceOpt - Usage []*utils.DynamicDecimalBigOpt - ProfileIgnoreFilters []*utils.DynamicBoolOpt + ProfileIDs []*DynamicStringSliceOpt + Usage []*DynamicDecimalOpt + ProfileIgnoreFilters []*DynamicBoolOpt } // AccountSCfg is the configuration of ActionS @@ -75,8 +75,8 @@ func (accOpts *AccountsOpts) loadFromJSONCfg(jsnCfg *AccountsOptsJson) (err erro accOpts.ProfileIDs = append(accOpts.ProfileIDs, jsnCfg.ProfileIDs...) } if jsnCfg.Usage != nil { - var usage []*utils.DynamicDecimalBigOpt - if usage, err = utils.StringToDecimalBigDynamicOpts(jsnCfg.Usage); err != nil { + var usage []*DynamicDecimalOpt + if usage, err = StringToDecimalBigDynamicOpts(jsnCfg.Usage); err != nil { return } accOpts.Usage = append(accOpts.Usage, usage...) @@ -183,17 +183,17 @@ func (acS AccountSCfg) AsMapInterface(string) any { } func (accOpts *AccountsOpts) Clone() *AccountsOpts { - var accIDs []*utils.DynamicStringSliceOpt + var accIDs []*DynamicStringSliceOpt if accOpts.ProfileIDs != nil { - accIDs = utils.CloneDynamicStringSliceOpt(accOpts.ProfileIDs) + accIDs = CloneDynamicStringSliceOpt(accOpts.ProfileIDs) } - var usage []*utils.DynamicDecimalBigOpt + var usage []*DynamicDecimalOpt if accOpts.Usage != nil { - usage = utils.CloneDynamicDecimalBigOpt(accOpts.Usage) + usage = CloneDynamicDecimalOpt(accOpts.Usage) } - var profileIgnoreFilters []*utils.DynamicBoolOpt + var profileIgnoreFilters []*DynamicBoolOpt if accOpts.ProfileIgnoreFilters != nil { - profileIgnoreFilters = utils.CloneDynamicBoolOpt(accOpts.ProfileIgnoreFilters) + profileIgnoreFilters = CloneDynamicBoolOpt(accOpts.ProfileIgnoreFilters) } return &AccountsOpts{ ProfileIDs: accIDs, @@ -242,9 +242,9 @@ func (acS AccountSCfg) Clone() (cln *AccountSCfg) { } type AccountsOptsJson struct { - ProfileIDs []*utils.DynamicStringSliceOpt `json:"*profileIDs"` - Usage []*utils.DynamicStringOpt `json:"*usage"` - ProfileIgnoreFilters []*utils.DynamicBoolOpt `json:"*profileIgnoreFilters"` + ProfileIDs []*DynamicStringSliceOpt `json:"*profileIDs"` + Usage []*DynamicStringOpt `json:"*usage"` + ProfileIgnoreFilters []*DynamicBoolOpt `json:"*profileIgnoreFilters"` } // Account service config section @@ -269,13 +269,13 @@ func diffAccountsOptsJsonCfg(d *AccountsOptsJson, v1, v2 *AccountsOpts) *Account if d == nil { d = new(AccountsOptsJson) } - if !utils.DynamicStringSliceOptEqual(v1.ProfileIDs, v2.ProfileIDs) { + if !DynamicStringSliceOptEqual(v1.ProfileIDs, v2.ProfileIDs) { d.ProfileIDs = v2.ProfileIDs } - if !utils.DynamicDecimalBigOptEqual(v1.Usage, v2.Usage) { - d.Usage = utils.DecimalBigToStringDynamicOpts(v2.Usage) + if !DynamicDecimalOptEqual(v1.Usage, v2.Usage) { + d.Usage = DecimalToStringDynamicOpts(v2.Usage) } - if !utils.DynamicBoolOptEqual(v1.ProfileIgnoreFilters, v2.ProfileIgnoreFilters) { + if !DynamicBoolOptEqual(v1.ProfileIgnoreFilters, v2.ProfileIgnoreFilters) { d.ProfileIgnoreFilters = v2.ProfileIgnoreFilters } return d diff --git a/config/accountscfg_test.go b/config/accountscfg_test.go index a618d6ddc..792af3052 100644 --- a/config/accountscfg_test.go +++ b/config/accountscfg_test.go @@ -61,9 +61,9 @@ func TestAccountSCfgLoadFromJSONCfg(t *testing.T) { MaxIterations: 1000, MaxUsage: usage, Opts: &AccountsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - Usage: []*utils.DynamicDecimalBigOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + Usage: []*DynamicDecimalOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } jsnCfg := NewDefaultCGRConfig() @@ -82,17 +82,15 @@ func TestAccountSCfgLoadFromJSONCfg(t *testing.T) { func TestAccountSCfgLoadFromJSONCfgOptsErr(t *testing.T) { accOpts := &AccountsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Values: []string{"1001", "1002"}, }, }, - Usage: []*utils.DynamicDecimalBigOpt{ - { - Value: decimal.WithContext(utils.DecimalContext).SetUint64(2), - }, + Usage: []*DynamicDecimalOpt{ + NewDynamicDecimalOpt(nil, "", decimal.WithContext(utils.DecimalContext).SetUint64(2), nil), }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Value: false, }, @@ -100,15 +98,15 @@ func TestAccountSCfgLoadFromJSONCfgOptsErr(t *testing.T) { } jsnCfg := &AccountsOptsJson{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ {}, }, - Usage: []*utils.DynamicStringOpt{ + Usage: []*DynamicStringOpt{ { Value: "error", }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Value: false, }, @@ -171,9 +169,9 @@ func TestAccountSCfgAsMapInterface(t *testing.T) { utils.MaxIterations: 100, utils.MaxUsage: "259200000000000", // 72h in ns utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaUsage: []*utils.DynamicDecimalBigOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaUsage: []*DynamicDecimalOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -242,19 +240,16 @@ func TestDiffAccountSJsonCfg(t *testing.T) { MaxIterations: 1, MaxUsage: nil, Opts: &AccountsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.org", Values: []string{"ACC1"}, }, }, - Usage: []*utils.DynamicDecimalBigOpt{ - { - Tenant: "cgrates.org", - Value: decimal.WithContext(utils.DecimalContext).SetUint64(1), - }, + Usage: []*DynamicDecimalOpt{ + NewDynamicDecimalOpt(nil, "cgrates.org", decimal.WithContext(utils.DecimalContext).SetUint64(1), nil), }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: true, @@ -276,19 +271,16 @@ func TestDiffAccountSJsonCfg(t *testing.T) { MaxIterations: 3, MaxUsage: utils.NewDecimal(60, 0), Opts: &AccountsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.net", Values: []string{"ACC2"}, }, }, - Usage: []*utils.DynamicDecimalBigOpt{ - { - Tenant: "cgrates.net", - Value: decimal.WithContext(utils.DecimalContext).SetUint64(2), - }, + Usage: []*DynamicDecimalOpt{ + NewDynamicDecimalOpt([]string{"fld1", "fld2"}, "cgrates.org", decimal.WithContext(utils.DecimalContext).SetUint64(2), nil), }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: false, @@ -310,19 +302,20 @@ func TestDiffAccountSJsonCfg(t *testing.T) { Max_iterations: utils.IntPointer(3), Max_usage: utils.StringPointer("60"), Opts: &AccountsOptsJson{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.net", Values: []string{"ACC2"}, }, }, - Usage: []*utils.DynamicStringOpt{ + Usage: []*DynamicStringOpt{ { - Tenant: "cgrates.net", - Value: "2", + FilterIDs: []string{"fld1", "fld2"}, + Tenant: "cgrates.org", + Value: "2", }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: false, @@ -374,7 +367,7 @@ func TestAccountSCloneSection(t *testing.T) { MaxIterations: 1, MaxUsage: nil, Opts: &AccountsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Values: []string{"ACC1"}, }, diff --git a/config/actionscfg.go b/config/actionscfg.go index 05f4fec74..21f8b7c37 100644 --- a/config/actionscfg.go +++ b/config/actionscfg.go @@ -30,9 +30,9 @@ var ActionsProfileIDsDftOpt = []string{} const ActionsProfileIgnoreFiltersDftOpt = false type ActionsOpts struct { - ProfileIDs []*utils.DynamicStringSliceOpt - ProfileIgnoreFilters []*utils.DynamicBoolOpt - PosterAttempts []*utils.DynamicIntOpt + ProfileIDs []*DynamicStringSliceOpt + ProfileIgnoreFilters []*DynamicBoolOpt + PosterAttempts []*DynamicIntOpt } // ActionSCfg is the configuration of ActionS @@ -189,17 +189,17 @@ func (ActionSCfg) SName() string { return ActionSJSON } func (acS ActionSCfg) CloneSection() Section { return acS.Clone() } func (actOpts *ActionsOpts) Clone() *ActionsOpts { - var actPrfIDs []*utils.DynamicStringSliceOpt + var actPrfIDs []*DynamicStringSliceOpt if actOpts.ProfileIDs != nil { - actPrfIDs = utils.CloneDynamicStringSliceOpt(actOpts.ProfileIDs) + actPrfIDs = CloneDynamicStringSliceOpt(actOpts.ProfileIDs) } - var profileIgnoreFilters []*utils.DynamicBoolOpt + var profileIgnoreFilters []*DynamicBoolOpt if actOpts.ProfileIgnoreFilters != nil { - profileIgnoreFilters = utils.CloneDynamicBoolOpt(actOpts.ProfileIgnoreFilters) + profileIgnoreFilters = CloneDynamicBoolOpt(actOpts.ProfileIgnoreFilters) } - var posterAttempts []*utils.DynamicIntOpt + var posterAttempts []*DynamicIntOpt if actOpts.PosterAttempts != nil { - posterAttempts = utils.CloneDynamicIntOpt(actOpts.PosterAttempts) + posterAttempts = CloneDynamicIntOpt(actOpts.PosterAttempts) } return &ActionsOpts{ ProfileIDs: actPrfIDs, @@ -257,9 +257,9 @@ func (acS ActionSCfg) Clone() (cln *ActionSCfg) { } type ActionsOptsJson struct { - ProfileIDs []*utils.DynamicStringSliceOpt `json:"*profileIDs"` - ProfileIgnoreFilters []*utils.DynamicBoolOpt `json:"*profileIgnoreFilters"` - PosterAttempts []*utils.DynamicIntOpt `json:"*posterAttempts"` + ProfileIDs []*DynamicStringSliceOpt `json:"*profileIDs"` + ProfileIgnoreFilters []*DynamicBoolOpt `json:"*profileIgnoreFilters"` + PosterAttempts []*DynamicIntOpt `json:"*posterAttempts"` } // Action service config section @@ -286,13 +286,13 @@ func diffActionsOptsJsonCfg(d *ActionsOptsJson, v1, v2 *ActionsOpts) *ActionsOpt if d == nil { d = new(ActionsOptsJson) } - if !utils.DynamicStringSliceOptEqual(v1.ProfileIDs, v2.ProfileIDs) { + if !DynamicStringSliceOptEqual(v1.ProfileIDs, v2.ProfileIDs) { d.ProfileIDs = v2.ProfileIDs } - if !utils.DynamicBoolOptEqual(v1.ProfileIgnoreFilters, v2.ProfileIgnoreFilters) { + if !DynamicBoolOptEqual(v1.ProfileIgnoreFilters, v2.ProfileIgnoreFilters) { d.ProfileIgnoreFilters = v2.ProfileIgnoreFilters } - if !utils.DynamicIntOptEqual(v1.PosterAttempts, v2.PosterAttempts) { + if !DynamicIntOptEqual(v1.PosterAttempts, v2.PosterAttempts) { d.PosterAttempts = v2.PosterAttempts } return d diff --git a/config/actionscfg_test.go b/config/actionscfg_test.go index 48553126e..2d1672640 100644 --- a/config/actionscfg_test.go +++ b/config/actionscfg_test.go @@ -60,9 +60,9 @@ func TestActionSCfgLoadFromJSONCfg(t *testing.T) { NestedFields: true, DynaprepaidActionProfile: []string{"val1", "val2"}, Opts: &ActionsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, - PosterAttempts: []*utils.DynamicIntOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, + PosterAttempts: []*DynamicIntOpt{}, }, } jsnCfg := NewDefaultCGRConfig() @@ -80,24 +80,24 @@ func TestActionSCfgLoadFromJSONCfg(t *testing.T) { func TestActionoSLoadConfigFromJSONOpts(t *testing.T) { actOpts := &ActionsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Values: []string{}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Value: false, }, }, } exp := &ActionsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Values: []string{}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Value: false, }, @@ -147,9 +147,9 @@ func TestActionSCfgAsMapInterface(t *testing.T) { utils.NestedFieldsCfg: true, utils.DynaprepaidActionplansCfg: []string{}, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, - utils.MetaPosterAttempts: []*utils.DynamicIntOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, + utils.MetaPosterAttempts: []*DynamicIntOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -230,13 +230,13 @@ func TestDiffActionSJsonCfg(t *testing.T) { NestedFields: true, DynaprepaidActionProfile: []string{}, Opts: &ActionsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.org", Values: []string{"prf1"}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, @@ -260,13 +260,13 @@ func TestDiffActionSJsonCfg(t *testing.T) { NestedFields: false, DynaprepaidActionProfile: []string{"dynaprepaid"}, Opts: &ActionsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.net", Values: []string{"prf2"}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.nett", Value: true, @@ -290,13 +290,13 @@ func TestDiffActionSJsonCfg(t *testing.T) { Nested_fields: utils.BoolPointer(false), Dynaprepaid_actionprofile: &[]string{"dynaprepaid"}, Opts: &ActionsOptsJson{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.net", Values: []string{"prf2"}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.nett", Value: true, @@ -337,7 +337,7 @@ func TestActionSCloneSection(t *testing.T) { NestedFields: false, DynaprepaidActionProfile: []string{"dynaprepaid"}, Opts: &ActionsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Values: []string{}, }, @@ -359,7 +359,7 @@ func TestActionSCloneSection(t *testing.T) { NestedFields: false, DynaprepaidActionProfile: []string{"dynaprepaid"}, Opts: &ActionsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Values: []string{}, }, @@ -374,17 +374,17 @@ func TestActionSCloneSection(t *testing.T) { func TestDiffActionsOptsJsonCfg(t *testing.T) { d := &ActionsOptsJson{} v1 := &ActionsOpts{ - PosterAttempts: []*utils.DynamicIntOpt{}, + PosterAttempts: []*DynamicIntOpt{}, } v2 := &ActionsOpts{ - PosterAttempts: []*utils.DynamicIntOpt{{ + PosterAttempts: []*DynamicIntOpt{{ FilterIDs: []string{"fltr1"}, }, }, } exp := &ActionsOptsJson{ - PosterAttempts: []*utils.DynamicIntOpt{{ + PosterAttempts: []*DynamicIntOpt{{ FilterIDs: []string{"fltr1"}, }, }, diff --git a/config/analyzerscfg.go b/config/analyzerscfg.go index ad83f62f5..65d1222af 100644 --- a/config/analyzerscfg.go +++ b/config/analyzerscfg.go @@ -38,7 +38,7 @@ type AnalyzerSCfg struct { } type AnalyzerSOpts struct { - ExporterIDs []*utils.DynamicStringSliceOpt + ExporterIDs []*DynamicStringSliceOpt } // loadAnalyzerCgrCfg loads the Analyzer section of the configuration @@ -134,12 +134,12 @@ func (anzOpts *AnalyzerSOpts) Clone() *AnalyzerSOpts { return nil } return &AnalyzerSOpts{ - ExporterIDs: utils.CloneDynamicStringSliceOpt(anzOpts.ExporterIDs), + ExporterIDs: []*DynamicStringSliceOpt(anzOpts.ExporterIDs), } } type AnalyzerSOptsJson struct { - ExporterIDs []*utils.DynamicStringSliceOpt `json:"*exporterIDs"` + ExporterIDs []*DynamicStringSliceOpt `json:"*exporterIDs"` } // Analyzer service json config section @@ -157,7 +157,7 @@ func diffAnalyzerSOptsJsonCfg(d *AnalyzerSOptsJson, v1, v2 *AnalyzerSOpts) *Anal if d == nil { d = new(AnalyzerSOptsJson) } - if !utils.DynamicStringSliceOptEqual(v1.ExporterIDs, v2.ExporterIDs) { + if !DynamicStringSliceOptEqual(v1.ExporterIDs, v2.ExporterIDs) { d.ExporterIDs = v2.ExporterIDs } return d diff --git a/config/analyzerscfg_test.go b/config/analyzerscfg_test.go index 5f137f7de..26af75ff5 100644 --- a/config/analyzerscfg_test.go +++ b/config/analyzerscfg_test.go @@ -37,7 +37,7 @@ func TestAnalyzerSCfgloadFromJsonCfg(t *testing.T) { EEsConns: []string{}, TTL: 24 * time.Hour, Opts: &AnalyzerSOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{}, + ExporterIDs: []*DynamicStringSliceOpt{}, }, } jsnCfg := NewDefaultCGRConfig() @@ -65,7 +65,7 @@ func TestAnalyzerSCfgAsMapInterface(t *testing.T) { utils.EEsConnsCfg: []string{}, utils.TTLCfg: "24h0m0s", utils.OptsCfg: map[string]any{ - utils.MetaExporterIDs: []*utils.DynamicStringSliceOpt{}, + utils.MetaExporterIDs: []*DynamicStringSliceOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -91,7 +91,7 @@ func TestAnalyzerSCfgAsMapInterface1(t *testing.T) { utils.EEsConnsCfg: []string{"*localhost"}, utils.TTLCfg: "24h0m0s", utils.OptsCfg: map[string]any{ - utils.MetaExporterIDs: []*utils.DynamicStringSliceOpt{}, + utils.MetaExporterIDs: []*DynamicStringSliceOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -207,7 +207,7 @@ func TestAnalyzerSCloneSection(t *testing.T) { func TestToLoadFromJSONCfg(t *testing.T) { anzOpts := &AnalyzerSOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{ + ExporterIDs: []*DynamicStringSliceOpt{ { FilterIDs: []string{"filtr1"}, }, @@ -226,17 +226,17 @@ func TestToLoadFromJSONCfg(t *testing.T) { func TestDiffAnalyzerSOptsJsonCfg(t *testing.T) { d := &AnalyzerSOptsJson{} v1 := &AnalyzerSOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{}, + ExporterIDs: []*DynamicStringSliceOpt{}, } v2 := &AnalyzerSOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{{ + ExporterIDs: []*DynamicStringSliceOpt{{ FilterIDs: []string{"test"}, }, }, } exp := &AnalyzerSOptsJson{ - ExporterIDs: []*utils.DynamicStringSliceOpt{{ + ExporterIDs: []*DynamicStringSliceOpt{{ FilterIDs: []string{"test"}, }, }, diff --git a/config/apis_test.go b/config/apis_test.go index 3087199da..febfce673 100644 --- a/config/apis_test.go +++ b/config/apis_test.go @@ -233,7 +233,7 @@ func TestConfigLoadFromDB(t *testing.T) { MaxParallelConns: 100, RSRSep: ";", Opts: &GeneralOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{}, + ExporterIDs: []*DynamicStringSliceOpt{}, }, } if !reflect.DeepEqual(expGeneral, cfg.GeneralCfg()) { diff --git a/config/attributescfg.go b/config/attributescfg.go index 2000f909e..04fed5b4a 100644 --- a/config/attributescfg.go +++ b/config/attributescfg.go @@ -34,10 +34,10 @@ const ( ) type AttributesOpts struct { - ProfileIDs []*utils.DynamicStringSliceOpt - ProcessRuns []*utils.DynamicIntOpt - ProfileRuns []*utils.DynamicIntOpt - ProfileIgnoreFilters []*utils.DynamicBoolOpt + ProfileIDs []*DynamicStringSliceOpt + ProcessRuns []*DynamicIntOpt + ProfileRuns []*DynamicIntOpt + ProfileIgnoreFilters []*DynamicBoolOpt } // AttributeSCfg is the configuration of attribute service @@ -168,21 +168,21 @@ func (alS AttributeSCfg) AsMapInterface(string) any { } func (attrOpts AttributesOpts) Clone() *AttributesOpts { - var attrIDs []*utils.DynamicStringSliceOpt + var attrIDs []*DynamicStringSliceOpt if attrOpts.ProfileIDs != nil { - attrIDs = utils.CloneDynamicStringSliceOpt(attrOpts.ProfileIDs) + attrIDs = CloneDynamicStringSliceOpt(attrOpts.ProfileIDs) } - var processRuns []*utils.DynamicIntOpt + var processRuns []*DynamicIntOpt if attrOpts.ProcessRuns != nil { - processRuns = utils.CloneDynamicIntOpt(attrOpts.ProcessRuns) + processRuns = CloneDynamicIntOpt(attrOpts.ProcessRuns) } - var profileRuns []*utils.DynamicIntOpt + var profileRuns []*DynamicIntOpt if attrOpts.ProfileRuns != nil { - profileRuns = utils.CloneDynamicIntOpt(attrOpts.ProfileRuns) + profileRuns = CloneDynamicIntOpt(attrOpts.ProfileRuns) } - var profileIgnoreFilters []*utils.DynamicBoolOpt + var profileIgnoreFilters []*DynamicBoolOpt if attrOpts.ProfileIgnoreFilters != nil { - profileIgnoreFilters = utils.CloneDynamicBoolOpt(attrOpts.ProfileIgnoreFilters) + profileIgnoreFilters = CloneDynamicBoolOpt(attrOpts.ProfileIgnoreFilters) } return &AttributesOpts{ ProfileIDs: attrIDs, @@ -232,10 +232,10 @@ func (alS AttributeSCfg) Clone() (cln *AttributeSCfg) { } type AttributesOptsJson struct { - ProfileIDs []*utils.DynamicStringSliceOpt `json:"*profileIDs"` - ProcessRuns []*utils.DynamicIntOpt `json:"*processRuns"` - ProfileRuns []*utils.DynamicIntOpt `json:"*profileRuns"` - ProfileIgnoreFilters []*utils.DynamicBoolOpt `json:"*profileIgnoreFilters"` + ProfileIDs []*DynamicStringSliceOpt `json:"*profileIDs"` + ProcessRuns []*DynamicIntOpt `json:"*processRuns"` + ProfileRuns []*DynamicIntOpt `json:"*profileRuns"` + ProfileIgnoreFilters []*DynamicBoolOpt `json:"*profileIgnoreFilters"` } // Attribute service config section @@ -258,16 +258,16 @@ func diffAttributesOptsJsonCfg(d *AttributesOptsJson, v1, v2 *AttributesOpts) *A if d == nil { d = new(AttributesOptsJson) } - if !utils.DynamicStringSliceOptEqual(v1.ProfileIDs, v2.ProfileIDs) { + if !DynamicStringSliceOptEqual(v1.ProfileIDs, v2.ProfileIDs) { d.ProfileIDs = v2.ProfileIDs } - if !utils.DynamicIntOptEqual(v1.ProcessRuns, v2.ProcessRuns) { + if !DynamicIntOptEqual(v1.ProcessRuns, v2.ProcessRuns) { d.ProcessRuns = v2.ProcessRuns } - if !utils.DynamicIntOptEqual(v1.ProfileRuns, v2.ProfileRuns) { + if !DynamicIntOptEqual(v1.ProfileRuns, v2.ProfileRuns) { d.ProfileRuns = v2.ProfileRuns } - if !utils.DynamicBoolOptEqual(v1.ProfileIgnoreFilters, v2.ProfileIgnoreFilters) { + if !DynamicBoolOptEqual(v1.ProfileIgnoreFilters, v2.ProfileIgnoreFilters) { d.ProfileIgnoreFilters = v2.ProfileIgnoreFilters } return d diff --git a/config/attributescfg_test.go b/config/attributescfg_test.go index f05f28351..3881a3723 100644 --- a/config/attributescfg_test.go +++ b/config/attributescfg_test.go @@ -52,10 +52,10 @@ func TestAttributeSCfgloadFromJsonCfg(t *testing.T) { NotExistsIndexedFields: &[]string{"*req.index1"}, NestedFields: true, Opts: &AttributesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProcessRuns: []*utils.DynamicIntOpt{}, - ProfileRuns: []*utils.DynamicIntOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProcessRuns: []*DynamicIntOpt{}, + ProfileRuns: []*DynamicIntOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } jsnCfg := NewDefaultCGRConfig() @@ -73,22 +73,22 @@ func TestAttributeSCfgloadFromJsonCfg(t *testing.T) { func TestAttributeSLoadFromJsonCfgOpts(t *testing.T) { attrOpt := &AttributesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Values: []string{}, }, }, - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { Value: 1, }, }, - ProfileRuns: []*utils.DynamicIntOpt{ + ProfileRuns: []*DynamicIntOpt{ { Value: 0, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Value: false, }, @@ -96,22 +96,22 @@ func TestAttributeSLoadFromJsonCfgOpts(t *testing.T) { } exp := &AttributesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Values: []string{}, }, }, - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { Value: 1, }, }, - ProfileRuns: []*utils.DynamicIntOpt{ + ProfileRuns: []*DynamicIntOpt{ { Value: 0, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Value: false, }, @@ -157,14 +157,14 @@ func TestAttributeSCfgAsMapInterface(t *testing.T) { utils.NestedFieldsCfg: false, utils.SuffixIndexedFieldsCfg: []string{}, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{ + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaProcessRunsCfg: []*DynamicIntOpt{ { Value: 3, }, }, - utils.MetaProfileRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileRunsCfg: []*DynamicIntOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -202,14 +202,14 @@ func TestAttributeSCfgAsMapInterface2(t *testing.T) { utils.NotExistsIndexedFieldsCfg: []string{"*req.index1", "*req.index2"}, utils.NestedFieldsCfg: true, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{ + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaProcessRunsCfg: []*DynamicIntOpt{ { Value: 7, }, }, - utils.MetaProfileRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileRunsCfg: []*DynamicIntOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -237,10 +237,10 @@ func TestAttributeSCfgAsMapInterface3(t *testing.T) { utils.NotExistsIndexedFieldsCfg: []string{}, utils.NestedFieldsCfg: false, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaProcessRunsCfg: []*DynamicIntOpt{}, + utils.MetaProfileRunsCfg: []*DynamicIntOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } if conv, err := NewCGRConfigFromJSONStringWithDefaults(myJSONStr); err != nil { @@ -301,25 +301,25 @@ func TestDiffAttributeSJsonCfg(t *testing.T) { SuffixIndexedFields: &[]string{}, NestedFields: true, Opts: &AttributesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.org", Values: []string{"prf1"}, }, }, - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { FilterIDs: []string{}, Value: 1, }, }, - ProfileRuns: []*utils.DynamicIntOpt{ + ProfileRuns: []*DynamicIntOpt{ { FilterIDs: []string{}, Value: 1, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, @@ -339,25 +339,25 @@ func TestDiffAttributeSJsonCfg(t *testing.T) { SuffixIndexedFields: nil, NestedFields: false, Opts: &AttributesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.net", Values: []string{"prf2"}, }, }, - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { FilterIDs: []string{}, Value: 2, }, }, - ProfileRuns: []*utils.DynamicIntOpt{ + ProfileRuns: []*DynamicIntOpt{ { FilterIDs: []string{}, Value: 2, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, @@ -377,25 +377,25 @@ func TestDiffAttributeSJsonCfg(t *testing.T) { Suffix_indexed_fields: nil, Nested_fields: utils.BoolPointer(false), Opts: &AttributesOptsJson{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.net", Values: []string{"prf2"}, }, }, - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { FilterIDs: []string{}, Value: 2, }, }, - ProfileRuns: []*utils.DynamicIntOpt{ + ProfileRuns: []*DynamicIntOpt{ { FilterIDs: []string{}, Value: 2, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, @@ -431,7 +431,7 @@ func TestAttributeSCloneSection(t *testing.T) { SuffixIndexedFields: &[]string{}, NestedFields: true, Opts: &AttributesOpts{ - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { FilterIDs: []string{}, Value: 1, @@ -451,7 +451,7 @@ func TestAttributeSCloneSection(t *testing.T) { SuffixIndexedFields: &[]string{}, NestedFields: true, Opts: &AttributesOpts{ - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { FilterIDs: []string{}, Value: 1, diff --git a/config/cdrscfg.go b/config/cdrscfg.go index 3fdd6f385..d6f122c9b 100644 --- a/config/cdrscfg.go +++ b/config/cdrscfg.go @@ -39,16 +39,16 @@ const ( ) type CdrsOpts struct { - Accounts []*utils.DynamicBoolOpt - Attributes []*utils.DynamicBoolOpt - Chargers []*utils.DynamicBoolOpt - Export []*utils.DynamicBoolOpt - Rates []*utils.DynamicBoolOpt - Stats []*utils.DynamicBoolOpt - Thresholds []*utils.DynamicBoolOpt - Refund []*utils.DynamicBoolOpt - Rerate []*utils.DynamicBoolOpt - Store []*utils.DynamicBoolOpt + Accounts []*DynamicBoolOpt + Attributes []*DynamicBoolOpt + Chargers []*DynamicBoolOpt + Export []*DynamicBoolOpt + Rates []*DynamicBoolOpt + Stats []*DynamicBoolOpt + Thresholds []*DynamicBoolOpt + Refund []*DynamicBoolOpt + Rerate []*DynamicBoolOpt + Store []*DynamicBoolOpt } // CdrsCfg is the CDR server @@ -215,45 +215,45 @@ func (CdrsCfg) SName() string { return CDRsJSON } func (cdrscfg CdrsCfg) CloneSection() Section { return cdrscfg.Clone() } func (cdrsOpts *CdrsOpts) Clone() *CdrsOpts { - var accS []*utils.DynamicBoolOpt + var accS []*DynamicBoolOpt if cdrsOpts.Accounts != nil { - accS = utils.CloneDynamicBoolOpt(cdrsOpts.Accounts) + accS = CloneDynamicBoolOpt(cdrsOpts.Accounts) } - var attrS []*utils.DynamicBoolOpt + var attrS []*DynamicBoolOpt if cdrsOpts.Attributes != nil { - attrS = utils.CloneDynamicBoolOpt(cdrsOpts.Attributes) + attrS = CloneDynamicBoolOpt(cdrsOpts.Attributes) } - var chrgS []*utils.DynamicBoolOpt + var chrgS []*DynamicBoolOpt if cdrsOpts.Chargers != nil { - chrgS = utils.CloneDynamicBoolOpt(cdrsOpts.Chargers) + chrgS = CloneDynamicBoolOpt(cdrsOpts.Chargers) } - var export []*utils.DynamicBoolOpt + var export []*DynamicBoolOpt if cdrsOpts.Export != nil { - export = utils.CloneDynamicBoolOpt(cdrsOpts.Export) + export = CloneDynamicBoolOpt(cdrsOpts.Export) } - var rtS []*utils.DynamicBoolOpt + var rtS []*DynamicBoolOpt if cdrsOpts.Rates != nil { - rtS = utils.CloneDynamicBoolOpt(cdrsOpts.Rates) + rtS = CloneDynamicBoolOpt(cdrsOpts.Rates) } - var stS []*utils.DynamicBoolOpt + var stS []*DynamicBoolOpt if cdrsOpts.Stats != nil { - stS = utils.CloneDynamicBoolOpt(cdrsOpts.Stats) + stS = CloneDynamicBoolOpt(cdrsOpts.Stats) } - var thdS []*utils.DynamicBoolOpt + var thdS []*DynamicBoolOpt if cdrsOpts.Thresholds != nil { - thdS = utils.CloneDynamicBoolOpt(cdrsOpts.Thresholds) + thdS = CloneDynamicBoolOpt(cdrsOpts.Thresholds) } - var refund []*utils.DynamicBoolOpt + var refund []*DynamicBoolOpt if cdrsOpts.Refund != nil { - refund = utils.CloneDynamicBoolOpt(cdrsOpts.Refund) + refund = CloneDynamicBoolOpt(cdrsOpts.Refund) } - var rerate []*utils.DynamicBoolOpt + var rerate []*DynamicBoolOpt if cdrsOpts.Rerate != nil { - rerate = utils.CloneDynamicBoolOpt(cdrsOpts.Rerate) + rerate = CloneDynamicBoolOpt(cdrsOpts.Rerate) } - var store []*utils.DynamicBoolOpt + var store []*DynamicBoolOpt if cdrsOpts.Store != nil { - store = utils.CloneDynamicBoolOpt(cdrsOpts.Store) + store = CloneDynamicBoolOpt(cdrsOpts.Store) } return &CdrsOpts{ Accounts: accS, @@ -309,16 +309,16 @@ func (cdrscfg CdrsCfg) Clone() (cln *CdrsCfg) { } type CdrsOptsJson struct { - Accounts []*utils.DynamicBoolOpt `json:"*accounts"` - Attributes []*utils.DynamicBoolOpt `json:"*attributes"` - Chargers []*utils.DynamicBoolOpt `json:"*chargers"` - Export []*utils.DynamicBoolOpt `json:"*ees"` - Rates []*utils.DynamicBoolOpt `json:"*rates"` - Stats []*utils.DynamicBoolOpt `json:"*stats"` - Thresholds []*utils.DynamicBoolOpt `json:"*thresholds"` - Refund []*utils.DynamicBoolOpt `json:"*refund"` - Rerate []*utils.DynamicBoolOpt `json:"*rerate"` - Store []*utils.DynamicBoolOpt `json:"*store"` + Accounts []*DynamicBoolOpt `json:"*accounts"` + Attributes []*DynamicBoolOpt `json:"*attributes"` + Chargers []*DynamicBoolOpt `json:"*chargers"` + Export []*DynamicBoolOpt `json:"*ees"` + Rates []*DynamicBoolOpt `json:"*rates"` + Stats []*DynamicBoolOpt `json:"*stats"` + Thresholds []*DynamicBoolOpt `json:"*thresholds"` + Refund []*DynamicBoolOpt `json:"*refund"` + Rerate []*DynamicBoolOpt `json:"*rerate"` + Store []*DynamicBoolOpt `json:"*store"` } // Cdrs config section @@ -342,34 +342,34 @@ func diffCdrsOptsJsonCfg(d *CdrsOptsJson, v1, v2 *CdrsOpts) *CdrsOptsJson { if d == nil { d = new(CdrsOptsJson) } - if !utils.DynamicBoolOptEqual(v1.Accounts, v2.Accounts) { + if !DynamicBoolOptEqual(v1.Accounts, v2.Accounts) { d.Accounts = v2.Accounts } - if !utils.DynamicBoolOptEqual(v1.Attributes, v2.Attributes) { + if !DynamicBoolOptEqual(v1.Attributes, v2.Attributes) { d.Attributes = v2.Attributes } - if !utils.DynamicBoolOptEqual(v1.Chargers, v2.Chargers) { + if !DynamicBoolOptEqual(v1.Chargers, v2.Chargers) { d.Chargers = v2.Chargers } - if !utils.DynamicBoolOptEqual(v1.Export, v2.Export) { + if !DynamicBoolOptEqual(v1.Export, v2.Export) { d.Export = v2.Export } - if !utils.DynamicBoolOptEqual(v1.Rates, v2.Rates) { + if !DynamicBoolOptEqual(v1.Rates, v2.Rates) { d.Rates = v2.Rates } - if !utils.DynamicBoolOptEqual(v1.Stats, v2.Stats) { + if !DynamicBoolOptEqual(v1.Stats, v2.Stats) { d.Stats = v2.Stats } - if !utils.DynamicBoolOptEqual(v1.Thresholds, v2.Thresholds) { + if !DynamicBoolOptEqual(v1.Thresholds, v2.Thresholds) { d.Thresholds = v2.Thresholds } - if !utils.DynamicBoolOptEqual(v1.Refund, v2.Refund) { + if !DynamicBoolOptEqual(v1.Refund, v2.Refund) { d.Refund = v2.Refund } - if !utils.DynamicBoolOptEqual(v1.Rerate, v2.Rerate) { + if !DynamicBoolOptEqual(v1.Rerate, v2.Rerate) { d.Rerate = v2.Rerate } - if !utils.DynamicBoolOptEqual(v1.Store, v2.Store) { + if !DynamicBoolOptEqual(v1.Store, v2.Store) { d.Store = v2.Store } return d diff --git a/config/cdrscfg_test.go b/config/cdrscfg_test.go index daff96ced..e7bb90c08 100644 --- a/config/cdrscfg_test.go +++ b/config/cdrscfg_test.go @@ -53,16 +53,16 @@ func TestCdrsCfgloadFromJsonCfg(t *testing.T) { AccountSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAccounts), "*conn1"}, ExtraFields: RSRParsers{}, Opts: &CdrsOpts{ - Accounts: []*utils.DynamicBoolOpt{}, - Attributes: []*utils.DynamicBoolOpt{}, - Chargers: []*utils.DynamicBoolOpt{}, - Export: []*utils.DynamicBoolOpt{}, - Rates: []*utils.DynamicBoolOpt{}, - Stats: []*utils.DynamicBoolOpt{}, - Thresholds: []*utils.DynamicBoolOpt{}, - Refund: []*utils.DynamicBoolOpt{}, - Rerate: []*utils.DynamicBoolOpt{}, - Store: []*utils.DynamicBoolOpt{}, + Accounts: []*DynamicBoolOpt{}, + Attributes: []*DynamicBoolOpt{}, + Chargers: []*DynamicBoolOpt{}, + Export: []*DynamicBoolOpt{}, + Rates: []*DynamicBoolOpt{}, + Stats: []*DynamicBoolOpt{}, + Thresholds: []*DynamicBoolOpt{}, + Refund: []*DynamicBoolOpt{}, + Rerate: []*DynamicBoolOpt{}, + Store: []*DynamicBoolOpt{}, }, } jsnCfg := NewDefaultCGRConfig() @@ -80,37 +80,37 @@ func TestCdrsCfgloadFromJsonCfg(t *testing.T) { func TestCdrsCfgloadFromJsonCfgOpt(t *testing.T) { cdrsOpt := &CdrsOpts{ - Accounts: []*utils.DynamicBoolOpt{ + Accounts: []*DynamicBoolOpt{ { Value: false, }, }, - Attributes: []*utils.DynamicBoolOpt{ + Attributes: []*DynamicBoolOpt{ { Value: false, }, }, - Chargers: []*utils.DynamicBoolOpt{ + Chargers: []*DynamicBoolOpt{ { Value: false, }, }, - Export: []*utils.DynamicBoolOpt{ + Export: []*DynamicBoolOpt{ { Value: false, }, }, - Rates: []*utils.DynamicBoolOpt{ + Rates: []*DynamicBoolOpt{ { Value: false, }, }, - Stats: []*utils.DynamicBoolOpt{ + Stats: []*DynamicBoolOpt{ { Value: false, }, }, - Thresholds: []*utils.DynamicBoolOpt{ + Thresholds: []*DynamicBoolOpt{ { Value: false, }, @@ -118,37 +118,37 @@ func TestCdrsCfgloadFromJsonCfgOpt(t *testing.T) { } exp := &CdrsOpts{ - Accounts: []*utils.DynamicBoolOpt{ + Accounts: []*DynamicBoolOpt{ { Value: false, }, }, - Attributes: []*utils.DynamicBoolOpt{ + Attributes: []*DynamicBoolOpt{ { Value: false, }, }, - Chargers: []*utils.DynamicBoolOpt{ + Chargers: []*DynamicBoolOpt{ { Value: false, }, }, - Export: []*utils.DynamicBoolOpt{ + Export: []*DynamicBoolOpt{ { Value: false, }, }, - Rates: []*utils.DynamicBoolOpt{ + Rates: []*DynamicBoolOpt{ { Value: false, }, }, - Stats: []*utils.DynamicBoolOpt{ + Stats: []*DynamicBoolOpt{ { Value: false, }, }, - Thresholds: []*utils.DynamicBoolOpt{ + Thresholds: []*DynamicBoolOpt{ { Value: false, }, @@ -203,16 +203,16 @@ func TestCdrsCfgAsMapInterface(t *testing.T) { utils.RateSConnsCfg: []string{utils.MetaInternal, "*conn1"}, utils.AccountSConnsCfg: []string{utils.MetaInternal, "*conn1"}, utils.OptsCfg: map[string]any{ - utils.MetaAccounts: []*utils.DynamicBoolOpt{}, - utils.MetaAttributes: []*utils.DynamicBoolOpt{}, - utils.MetaChargers: []*utils.DynamicBoolOpt{}, - utils.MetaEEs: []*utils.DynamicBoolOpt{}, - utils.MetaRates: []*utils.DynamicBoolOpt{}, - utils.MetaStats: []*utils.DynamicBoolOpt{}, - utils.MetaThresholds: []*utils.DynamicBoolOpt{}, - utils.MetaRefund: []*utils.DynamicBoolOpt{}, - utils.MetaRerate: []*utils.DynamicBoolOpt{}, - utils.MetaStore: []*utils.DynamicBoolOpt{}, + utils.MetaAccounts: []*DynamicBoolOpt{}, + utils.MetaAttributes: []*DynamicBoolOpt{}, + utils.MetaChargers: []*DynamicBoolOpt{}, + utils.MetaEEs: []*DynamicBoolOpt{}, + utils.MetaRates: []*DynamicBoolOpt{}, + utils.MetaStats: []*DynamicBoolOpt{}, + utils.MetaThresholds: []*DynamicBoolOpt{}, + utils.MetaRefund: []*DynamicBoolOpt{}, + utils.MetaRerate: []*DynamicBoolOpt{}, + utils.MetaStore: []*DynamicBoolOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -245,16 +245,16 @@ func TestCdrsCfgAsMapInterface2(t *testing.T) { utils.RateSConnsCfg: []string{}, utils.AccountSConnsCfg: []string{}, utils.OptsCfg: map[string]any{ - utils.MetaAccounts: []*utils.DynamicBoolOpt{}, - utils.MetaAttributes: []*utils.DynamicBoolOpt{}, - utils.MetaChargers: []*utils.DynamicBoolOpt{}, - utils.MetaEEs: []*utils.DynamicBoolOpt{}, - utils.MetaRates: []*utils.DynamicBoolOpt{}, - utils.MetaStats: []*utils.DynamicBoolOpt{}, - utils.MetaThresholds: []*utils.DynamicBoolOpt{}, - utils.MetaRefund: []*utils.DynamicBoolOpt{}, - utils.MetaRerate: []*utils.DynamicBoolOpt{}, - utils.MetaStore: []*utils.DynamicBoolOpt{}, + utils.MetaAccounts: []*DynamicBoolOpt{}, + utils.MetaAttributes: []*DynamicBoolOpt{}, + utils.MetaChargers: []*DynamicBoolOpt{}, + utils.MetaEEs: []*DynamicBoolOpt{}, + utils.MetaRates: []*DynamicBoolOpt{}, + utils.MetaStats: []*DynamicBoolOpt{}, + utils.MetaThresholds: []*DynamicBoolOpt{}, + utils.MetaRefund: []*DynamicBoolOpt{}, + utils.MetaRerate: []*DynamicBoolOpt{}, + utils.MetaStore: []*DynamicBoolOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -329,43 +329,43 @@ func TestDiffCdrsJsonCfg(t *testing.T) { RateSConns: []string{"*localhost"}, AccountSConns: []string{"*localhost"}, Opts: &CdrsOpts{ - Accounts: []*utils.DynamicBoolOpt{ + Accounts: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Attributes: []*utils.DynamicBoolOpt{ + Attributes: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Chargers: []*utils.DynamicBoolOpt{ + Chargers: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Export: []*utils.DynamicBoolOpt{ + Export: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Rates: []*utils.DynamicBoolOpt{ + Rates: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Stats: []*utils.DynamicBoolOpt{ + Stats: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Thresholds: []*utils.DynamicBoolOpt{ + Thresholds: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, @@ -393,43 +393,43 @@ func TestDiffCdrsJsonCfg(t *testing.T) { RateSConns: []string{"*birpc"}, AccountSConns: []string{"*birpc"}, Opts: &CdrsOpts{ - Accounts: []*utils.DynamicBoolOpt{ + Accounts: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Attributes: []*utils.DynamicBoolOpt{ + Attributes: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Chargers: []*utils.DynamicBoolOpt{ + Chargers: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Export: []*utils.DynamicBoolOpt{ + Export: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Rates: []*utils.DynamicBoolOpt{ + Rates: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Stats: []*utils.DynamicBoolOpt{ + Stats: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Thresholds: []*utils.DynamicBoolOpt{ + Thresholds: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, @@ -452,43 +452,43 @@ func TestDiffCdrsJsonCfg(t *testing.T) { Rates_conns: &[]string{"*birpc"}, Accounts_conns: &[]string{"*birpc"}, Opts: &CdrsOptsJson{ - Accounts: []*utils.DynamicBoolOpt{ + Accounts: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Attributes: []*utils.DynamicBoolOpt{ + Attributes: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Chargers: []*utils.DynamicBoolOpt{ + Chargers: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Export: []*utils.DynamicBoolOpt{ + Export: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Rates: []*utils.DynamicBoolOpt{ + Rates: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Stats: []*utils.DynamicBoolOpt{ + Stats: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Thresholds: []*utils.DynamicBoolOpt{ + Thresholds: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, diff --git a/config/config.go b/config/config.go index b79d84a90..6ee913363 100644 --- a/config/config.go +++ b/config/config.go @@ -100,7 +100,7 @@ func newCGRConfig(config []byte) (cfg *CGRConfig, err error) { generalCfg: &GeneralCfg{ NodeID: utils.UUIDSha1Prefix(), Opts: &GeneralOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{}, + ExporterIDs: []*DynamicStringSliceOpt{}, }, }, loggerCfg: &LoggerCfg{ @@ -123,57 +123,57 @@ func newCGRConfig(config []byte) (cfg *CGRConfig, err error) { }, filterSCfg: new(FilterSCfg), cdrsCfg: &CdrsCfg{Opts: &CdrsOpts{ - Accounts: []*utils.DynamicBoolOpt{}, - Attributes: []*utils.DynamicBoolOpt{}, - Chargers: []*utils.DynamicBoolOpt{}, - Export: []*utils.DynamicBoolOpt{}, - Rates: []*utils.DynamicBoolOpt{}, - Stats: []*utils.DynamicBoolOpt{}, - Thresholds: []*utils.DynamicBoolOpt{}, - Refund: []*utils.DynamicBoolOpt{}, - Rerate: []*utils.DynamicBoolOpt{}, - Store: []*utils.DynamicBoolOpt{}, + Accounts: []*DynamicBoolOpt{}, + Attributes: []*DynamicBoolOpt{}, + Chargers: []*DynamicBoolOpt{}, + Export: []*DynamicBoolOpt{}, + Rates: []*DynamicBoolOpt{}, + Stats: []*DynamicBoolOpt{}, + Thresholds: []*DynamicBoolOpt{}, + Refund: []*DynamicBoolOpt{}, + Rerate: []*DynamicBoolOpt{}, + Store: []*DynamicBoolOpt{}, }}, analyzerSCfg: &AnalyzerSCfg{ Opts: &AnalyzerSOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{}, + ExporterIDs: []*DynamicStringSliceOpt{}, }, }, sessionSCfg: &SessionSCfg{ STIRCfg: new(STIRcfg), DefaultUsage: make(map[string]time.Duration), Opts: &SessionsOpts{ - Accounts: []*utils.DynamicBoolOpt{}, - Attributes: []*utils.DynamicBoolOpt{}, - CDRs: []*utils.DynamicBoolOpt{}, - Chargers: []*utils.DynamicBoolOpt{}, - Resources: []*utils.DynamicBoolOpt{}, - Routes: []*utils.DynamicBoolOpt{}, - Stats: []*utils.DynamicBoolOpt{}, - Thresholds: []*utils.DynamicBoolOpt{}, - Initiate: []*utils.DynamicBoolOpt{}, - Update: []*utils.DynamicBoolOpt{}, - Terminate: []*utils.DynamicBoolOpt{}, - Message: []*utils.DynamicBoolOpt{}, - AttributesDerivedReply: []*utils.DynamicBoolOpt{}, - BlockerError: []*utils.DynamicBoolOpt{}, - CDRsDerivedReply: []*utils.DynamicBoolOpt{}, - ResourcesAuthorize: []*utils.DynamicBoolOpt{}, - ResourcesAllocate: []*utils.DynamicBoolOpt{}, - ResourcesRelease: []*utils.DynamicBoolOpt{}, - ResourcesDerivedReply: []*utils.DynamicBoolOpt{}, - RoutesDerivedReply: []*utils.DynamicBoolOpt{}, - StatsDerivedReply: []*utils.DynamicBoolOpt{}, - ThresholdsDerivedReply: []*utils.DynamicBoolOpt{}, - MaxUsage: []*utils.DynamicBoolOpt{}, - ForceDuration: []*utils.DynamicBoolOpt{}, - TTL: []*utils.DynamicDurationOpt{}, - Chargeable: []*utils.DynamicBoolOpt{}, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{}, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{}, - DebitInterval: []*utils.DynamicDurationOpt{}, - TTLMaxDelay: []*utils.DynamicDurationOpt{}, - TTLUsage: []*utils.DynamicDurationPointerOpt{}, + Accounts: []*DynamicBoolOpt{}, + Attributes: []*DynamicBoolOpt{}, + CDRs: []*DynamicBoolOpt{}, + Chargers: []*DynamicBoolOpt{}, + Resources: []*DynamicBoolOpt{}, + Routes: []*DynamicBoolOpt{}, + Stats: []*DynamicBoolOpt{}, + Thresholds: []*DynamicBoolOpt{}, + Initiate: []*DynamicBoolOpt{}, + Update: []*DynamicBoolOpt{}, + Terminate: []*DynamicBoolOpt{}, + Message: []*DynamicBoolOpt{}, + AttributesDerivedReply: []*DynamicBoolOpt{}, + BlockerError: []*DynamicBoolOpt{}, + CDRsDerivedReply: []*DynamicBoolOpt{}, + ResourcesAuthorize: []*DynamicBoolOpt{}, + ResourcesAllocate: []*DynamicBoolOpt{}, + ResourcesRelease: []*DynamicBoolOpt{}, + ResourcesDerivedReply: []*DynamicBoolOpt{}, + RoutesDerivedReply: []*DynamicBoolOpt{}, + StatsDerivedReply: []*DynamicBoolOpt{}, + ThresholdsDerivedReply: []*DynamicBoolOpt{}, + MaxUsage: []*DynamicBoolOpt{}, + ForceDuration: []*DynamicBoolOpt{}, + TTL: []*DynamicDurationOpt{}, + Chargeable: []*DynamicBoolOpt{}, + TTLLastUsage: []*DynamicDurationPointerOpt{}, + TTLLastUsed: []*DynamicDurationPointerOpt{}, + DebitInterval: []*DynamicDurationOpt{}, + TTLMaxDelay: []*DynamicDurationOpt{}, + TTLUsage: []*DynamicDurationPointerOpt{}, }, }, fsAgentCfg: new(FsAgentCfg), @@ -187,43 +187,43 @@ func newCGRConfig(config []byte) (cfg *CGRConfig, err error) { dnsAgentCfg: new(DNSAgentCfg), janusAgentCfg: new(JanusAgentCfg), attributeSCfg: &AttributeSCfg{Opts: &AttributesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProcessRuns: []*utils.DynamicIntOpt{}, - ProfileRuns: []*utils.DynamicIntOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProcessRuns: []*DynamicIntOpt{}, + ProfileRuns: []*DynamicIntOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }}, chargerSCfg: new(ChargerSCfg), resourceSCfg: &ResourceSConfig{Opts: &ResourcesOpts{ - UsageID: []*utils.DynamicStringOpt{}, - UsageTTL: []*utils.DynamicDurationOpt{}, - Units: []*utils.DynamicFloat64Opt{}, + UsageID: []*DynamicStringOpt{}, + UsageTTL: []*DynamicDurationOpt{}, + Units: []*DynamicFloat64Opt{}, }}, trendSCfg: new(TrendSCfg), rankingSCfg: new(RankingSCfg), statsCfg: &StatSCfg{Opts: &StatsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, - RoundingDecimals: []*utils.DynamicIntOpt{}, - PrometheusStatIDs: []*utils.DynamicStringSliceOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, + RoundingDecimals: []*DynamicIntOpt{}, + PrometheusStatIDs: []*DynamicStringSliceOpt{}, }}, thresholdSCfg: &ThresholdSCfg{Opts: &ThresholdsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }}, routeSCfg: &RouteSCfg{Opts: &RoutesOpts{ - Context: []*utils.DynamicStringOpt{}, - IgnoreErrors: []*utils.DynamicBoolOpt{}, - MaxCost: []*utils.DynamicInterfaceOpt{}, - ProfileCount: []*utils.DynamicIntPointerOpt{}, - Limit: []*utils.DynamicIntPointerOpt{}, - Offset: []*utils.DynamicIntPointerOpt{}, - MaxItems: []*utils.DynamicIntPointerOpt{}, - Usage: []*utils.DynamicDecimalBigOpt{}, + Context: []*DynamicStringOpt{}, + IgnoreErrors: []*DynamicBoolOpt{}, + MaxCost: []*DynamicInterfaceOpt{}, + ProfileCount: []*DynamicIntPointerOpt{}, + Limit: []*DynamicIntPointerOpt{}, + Offset: []*DynamicIntPointerOpt{}, + MaxItems: []*DynamicIntPointerOpt{}, + Usage: []*DynamicDecimalOpt{}, }}, tpeSCfg: new(TpeSCfg), sureTaxCfg: new(SureTaxCfg), dispatcherSCfg: &DispatcherSCfg{Opts: &DispatchersOpts{ - Dispatchers: []*utils.DynamicBoolOpt{}, + Dispatchers: []*DynamicBoolOpt{}, }}, registrarCCfg: &RegistrarCCfgs{ RPC: &RegistrarCCfg{Hosts: make(map[string][]*RemoteHost)}, @@ -239,17 +239,17 @@ func newCGRConfig(config []byte) (cfg *CGRConfig, err error) { ersCfg: new(ERsCfg), eesCfg: &EEsCfg{Cache: make(map[string]*CacheParamCfg)}, rateSCfg: &RateSCfg{Opts: &RatesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - StartTime: []*utils.DynamicStringOpt{}, - Usage: []*utils.DynamicDecimalBigOpt{}, - IntervalStart: []*utils.DynamicDecimalBigOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + StartTime: []*DynamicStringOpt{}, + Usage: []*DynamicDecimalOpt{}, + IntervalStart: []*DynamicDecimalOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }}, efsCfg: new(EFsCfg), actionSCfg: &ActionSCfg{Opts: &ActionsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, - PosterAttempts: []*utils.DynamicIntOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, + PosterAttempts: []*DynamicIntOpt{}, }}, sipAgentCfg: new(SIPAgentCfg), configSCfg: new(ConfigSCfg), @@ -257,9 +257,9 @@ func newCGRConfig(config []byte) (cfg *CGRConfig, err error) { sentryPeerCfg: new(SentryPeerCfg), coreSCfg: new(CoreSCfg), accountSCfg: &AccountSCfg{Opts: &AccountsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - Usage: []*utils.DynamicDecimalBigOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + Usage: []*DynamicDecimalOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }}, configDBCfg: &ConfigDBCfg{ Opts: &DataDBOpts{}, diff --git a/config/config_it_test.go b/config/config_it_test.go index 8aad8a2d2..3f7fff0d7 100644 --- a/config/config_it_test.go +++ b/config/config_it_test.go @@ -157,10 +157,10 @@ func testCGRConfigReloadAttributeS(t *testing.T) { NotExistsIndexedFields: &[]string{}, IndexedSelects: true, Opts: &AttributesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProcessRuns: []*utils.DynamicIntOpt{}, - ProfileRuns: []*utils.DynamicIntOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProcessRuns: []*DynamicIntOpt{}, + ProfileRuns: []*DynamicIntOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } if !reflect.DeepEqual(expAttr, cfg.AttributeSCfg()) { @@ -198,10 +198,10 @@ func testCGRConfigReloadAttributeSWithDB(t *testing.T) { NotExistsIndexedFields: &[]string{}, IndexedSelects: true, Opts: &AttributesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProcessRuns: []*utils.DynamicIntOpt{}, - ProfileRuns: []*utils.DynamicIntOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProcessRuns: []*DynamicIntOpt{}, + ProfileRuns: []*DynamicIntOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } if !reflect.DeepEqual(expAttr, cfg.AttributeSCfg()) { @@ -276,8 +276,8 @@ func testCGRConfigReloadThresholdS(t *testing.T) { ActionSConns: []string{}, IndexedSelects: true, Opts: &ThresholdsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } if !reflect.DeepEqual(expAttr, cfg.ThresholdSCfg()) { @@ -307,10 +307,10 @@ func testCGRConfigReloadStatS(t *testing.T) { IndexedSelects: true, ThresholdSConns: []string{utils.MetaLocalHost}, Opts: &StatsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, - RoundingDecimals: []*utils.DynamicIntOpt{}, - PrometheusStatIDs: []*utils.DynamicStringSliceOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, + RoundingDecimals: []*DynamicIntOpt{}, + PrometheusStatIDs: []*DynamicStringSliceOpt{}, }, EEsConns: []string{}, } @@ -341,9 +341,9 @@ func testCGRConfigReloadResourceS(t *testing.T) { IndexedSelects: true, ThresholdSConns: []string{utils.MetaLocalHost}, Opts: &ResourcesOpts{ - UsageID: []*utils.DynamicStringOpt{}, - UsageTTL: []*utils.DynamicDurationOpt{}, - Units: []*utils.DynamicFloat64Opt{}, + UsageID: []*DynamicStringOpt{}, + UsageTTL: []*DynamicDurationOpt{}, + Units: []*DynamicFloat64Opt{}, }, } if !reflect.DeepEqual(expAttr, cfg.ResourceSCfg()) { @@ -378,14 +378,14 @@ func testCGRConfigReloadSupplierS(t *testing.T) { IndexedSelects: true, DefaultRatio: 1, Opts: &RoutesOpts{ - Context: []*utils.DynamicStringOpt{}, - ProfileCount: []*utils.DynamicIntPointerOpt{}, - IgnoreErrors: []*utils.DynamicBoolOpt{}, - MaxCost: []*utils.DynamicInterfaceOpt{}, - Limit: []*utils.DynamicIntPointerOpt{}, - Offset: []*utils.DynamicIntPointerOpt{}, - Usage: []*utils.DynamicDecimalBigOpt{}, - MaxItems: []*utils.DynamicIntPointerOpt{}, + Context: []*DynamicStringOpt{}, + ProfileCount: []*DynamicIntPointerOpt{}, + IgnoreErrors: []*DynamicBoolOpt{}, + MaxCost: []*DynamicInterfaceOpt{}, + Limit: []*DynamicIntPointerOpt{}, + Offset: []*DynamicIntPointerOpt{}, + Usage: []*DynamicDecimalOpt{}, + MaxItems: []*DynamicIntPointerOpt{}, }, } if !reflect.DeepEqual(expAttr, cfg.RouteSCfg()) { @@ -826,37 +826,37 @@ func testCGRConfigReloadConfigFromJSONSessionS(t *testing.T) { utils.MetaSMS: 1, }, Opts: &SessionsOpts{ - Accounts: []*utils.DynamicBoolOpt{}, - Attributes: []*utils.DynamicBoolOpt{}, - CDRs: []*utils.DynamicBoolOpt{}, - Chargers: []*utils.DynamicBoolOpt{}, - Resources: []*utils.DynamicBoolOpt{}, - Routes: []*utils.DynamicBoolOpt{}, - Stats: []*utils.DynamicBoolOpt{}, - Thresholds: []*utils.DynamicBoolOpt{}, - Initiate: []*utils.DynamicBoolOpt{}, - Update: []*utils.DynamicBoolOpt{}, - Terminate: []*utils.DynamicBoolOpt{}, - Message: []*utils.DynamicBoolOpt{}, - AttributesDerivedReply: []*utils.DynamicBoolOpt{}, - BlockerError: []*utils.DynamicBoolOpt{}, - CDRsDerivedReply: []*utils.DynamicBoolOpt{}, - ResourcesAuthorize: []*utils.DynamicBoolOpt{}, - ResourcesAllocate: []*utils.DynamicBoolOpt{}, - ResourcesRelease: []*utils.DynamicBoolOpt{}, - ResourcesDerivedReply: []*utils.DynamicBoolOpt{}, - RoutesDerivedReply: []*utils.DynamicBoolOpt{}, - StatsDerivedReply: []*utils.DynamicBoolOpt{}, - ThresholdsDerivedReply: []*utils.DynamicBoolOpt{}, - MaxUsage: []*utils.DynamicBoolOpt{}, - ForceDuration: []*utils.DynamicBoolOpt{}, - TTL: []*utils.DynamicDurationOpt{}, - Chargeable: []*utils.DynamicBoolOpt{}, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{}, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{}, - DebitInterval: []*utils.DynamicDurationOpt{}, - TTLMaxDelay: []*utils.DynamicDurationOpt{}, - TTLUsage: []*utils.DynamicDurationPointerOpt{}, + Accounts: []*DynamicBoolOpt{}, + Attributes: []*DynamicBoolOpt{}, + CDRs: []*DynamicBoolOpt{}, + Chargers: []*DynamicBoolOpt{}, + Resources: []*DynamicBoolOpt{}, + Routes: []*DynamicBoolOpt{}, + Stats: []*DynamicBoolOpt{}, + Thresholds: []*DynamicBoolOpt{}, + Initiate: []*DynamicBoolOpt{}, + Update: []*DynamicBoolOpt{}, + Terminate: []*DynamicBoolOpt{}, + Message: []*DynamicBoolOpt{}, + AttributesDerivedReply: []*DynamicBoolOpt{}, + BlockerError: []*DynamicBoolOpt{}, + CDRsDerivedReply: []*DynamicBoolOpt{}, + ResourcesAuthorize: []*DynamicBoolOpt{}, + ResourcesAllocate: []*DynamicBoolOpt{}, + ResourcesRelease: []*DynamicBoolOpt{}, + ResourcesDerivedReply: []*DynamicBoolOpt{}, + RoutesDerivedReply: []*DynamicBoolOpt{}, + StatsDerivedReply: []*DynamicBoolOpt{}, + ThresholdsDerivedReply: []*DynamicBoolOpt{}, + MaxUsage: []*DynamicBoolOpt{}, + ForceDuration: []*DynamicBoolOpt{}, + TTL: []*DynamicDurationOpt{}, + Chargeable: []*DynamicBoolOpt{}, + TTLLastUsage: []*DynamicDurationPointerOpt{}, + TTLLastUsed: []*DynamicDurationPointerOpt{}, + DebitInterval: []*DynamicDurationOpt{}, + TTLMaxDelay: []*DynamicDurationOpt{}, + TTLUsage: []*DynamicDurationPointerOpt{}, }, } if !reflect.DeepEqual(expAttr, cfg.SessionSCfg()) { @@ -914,37 +914,37 @@ func testCGRConfigReloadConfigFromStringSessionS(t *testing.T) { utils.MetaSMS: 1, }, Opts: &SessionsOpts{ - Accounts: []*utils.DynamicBoolOpt{}, - Attributes: []*utils.DynamicBoolOpt{}, - CDRs: []*utils.DynamicBoolOpt{}, - Chargers: []*utils.DynamicBoolOpt{}, - Resources: []*utils.DynamicBoolOpt{}, - Routes: []*utils.DynamicBoolOpt{}, - Stats: []*utils.DynamicBoolOpt{}, - Thresholds: []*utils.DynamicBoolOpt{}, - Initiate: []*utils.DynamicBoolOpt{}, - Update: []*utils.DynamicBoolOpt{}, - Terminate: []*utils.DynamicBoolOpt{}, - Message: []*utils.DynamicBoolOpt{}, - AttributesDerivedReply: []*utils.DynamicBoolOpt{}, - BlockerError: []*utils.DynamicBoolOpt{}, - CDRsDerivedReply: []*utils.DynamicBoolOpt{}, - ResourcesAuthorize: []*utils.DynamicBoolOpt{}, - ResourcesAllocate: []*utils.DynamicBoolOpt{}, - ResourcesRelease: []*utils.DynamicBoolOpt{}, - ResourcesDerivedReply: []*utils.DynamicBoolOpt{}, - RoutesDerivedReply: []*utils.DynamicBoolOpt{}, - StatsDerivedReply: []*utils.DynamicBoolOpt{}, - ThresholdsDerivedReply: []*utils.DynamicBoolOpt{}, - MaxUsage: []*utils.DynamicBoolOpt{}, - ForceDuration: []*utils.DynamicBoolOpt{}, - TTL: []*utils.DynamicDurationOpt{}, - Chargeable: []*utils.DynamicBoolOpt{}, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{}, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{}, - DebitInterval: []*utils.DynamicDurationOpt{}, - TTLMaxDelay: []*utils.DynamicDurationOpt{}, - TTLUsage: []*utils.DynamicDurationPointerOpt{}, + Accounts: []*DynamicBoolOpt{}, + Attributes: []*DynamicBoolOpt{}, + CDRs: []*DynamicBoolOpt{}, + Chargers: []*DynamicBoolOpt{}, + Resources: []*DynamicBoolOpt{}, + Routes: []*DynamicBoolOpt{}, + Stats: []*DynamicBoolOpt{}, + Thresholds: []*DynamicBoolOpt{}, + Initiate: []*DynamicBoolOpt{}, + Update: []*DynamicBoolOpt{}, + Terminate: []*DynamicBoolOpt{}, + Message: []*DynamicBoolOpt{}, + AttributesDerivedReply: []*DynamicBoolOpt{}, + BlockerError: []*DynamicBoolOpt{}, + CDRsDerivedReply: []*DynamicBoolOpt{}, + ResourcesAuthorize: []*DynamicBoolOpt{}, + ResourcesAllocate: []*DynamicBoolOpt{}, + ResourcesRelease: []*DynamicBoolOpt{}, + ResourcesDerivedReply: []*DynamicBoolOpt{}, + RoutesDerivedReply: []*DynamicBoolOpt{}, + StatsDerivedReply: []*DynamicBoolOpt{}, + ThresholdsDerivedReply: []*DynamicBoolOpt{}, + MaxUsage: []*DynamicBoolOpt{}, + ForceDuration: []*DynamicBoolOpt{}, + TTL: []*DynamicDurationOpt{}, + Chargeable: []*DynamicBoolOpt{}, + TTLLastUsage: []*DynamicDurationPointerOpt{}, + TTLLastUsed: []*DynamicDurationPointerOpt{}, + DebitInterval: []*DynamicDurationOpt{}, + TTLMaxDelay: []*DynamicDurationOpt{}, + TTLUsage: []*DynamicDurationPointerOpt{}, }, } if !reflect.DeepEqual(expAttr, cfg.SessionSCfg()) { @@ -1005,37 +1005,37 @@ func testCGRConfigReloadAll(t *testing.T) { utils.MetaSMS: 1, }, Opts: &SessionsOpts{ - Accounts: []*utils.DynamicBoolOpt{}, - Attributes: []*utils.DynamicBoolOpt{}, - CDRs: []*utils.DynamicBoolOpt{}, - Chargers: []*utils.DynamicBoolOpt{}, - Resources: []*utils.DynamicBoolOpt{}, - Routes: []*utils.DynamicBoolOpt{}, - Stats: []*utils.DynamicBoolOpt{}, - Thresholds: []*utils.DynamicBoolOpt{}, - Initiate: []*utils.DynamicBoolOpt{}, - Update: []*utils.DynamicBoolOpt{}, - Terminate: []*utils.DynamicBoolOpt{}, - Message: []*utils.DynamicBoolOpt{}, - AttributesDerivedReply: []*utils.DynamicBoolOpt{}, - BlockerError: []*utils.DynamicBoolOpt{}, - CDRsDerivedReply: []*utils.DynamicBoolOpt{}, - ResourcesAuthorize: []*utils.DynamicBoolOpt{}, - ResourcesAllocate: []*utils.DynamicBoolOpt{}, - ResourcesRelease: []*utils.DynamicBoolOpt{}, - ResourcesDerivedReply: []*utils.DynamicBoolOpt{}, - RoutesDerivedReply: []*utils.DynamicBoolOpt{}, - StatsDerivedReply: []*utils.DynamicBoolOpt{}, - ThresholdsDerivedReply: []*utils.DynamicBoolOpt{}, - MaxUsage: []*utils.DynamicBoolOpt{}, - ForceDuration: []*utils.DynamicBoolOpt{}, - TTL: []*utils.DynamicDurationOpt{}, - Chargeable: []*utils.DynamicBoolOpt{}, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{}, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{}, - DebitInterval: []*utils.DynamicDurationOpt{}, - TTLMaxDelay: []*utils.DynamicDurationOpt{}, - TTLUsage: []*utils.DynamicDurationPointerOpt{}, + Accounts: []*DynamicBoolOpt{}, + Attributes: []*DynamicBoolOpt{}, + CDRs: []*DynamicBoolOpt{}, + Chargers: []*DynamicBoolOpt{}, + Resources: []*DynamicBoolOpt{}, + Routes: []*DynamicBoolOpt{}, + Stats: []*DynamicBoolOpt{}, + Thresholds: []*DynamicBoolOpt{}, + Initiate: []*DynamicBoolOpt{}, + Update: []*DynamicBoolOpt{}, + Terminate: []*DynamicBoolOpt{}, + Message: []*DynamicBoolOpt{}, + AttributesDerivedReply: []*DynamicBoolOpt{}, + BlockerError: []*DynamicBoolOpt{}, + CDRsDerivedReply: []*DynamicBoolOpt{}, + ResourcesAuthorize: []*DynamicBoolOpt{}, + ResourcesAllocate: []*DynamicBoolOpt{}, + ResourcesRelease: []*DynamicBoolOpt{}, + ResourcesDerivedReply: []*DynamicBoolOpt{}, + RoutesDerivedReply: []*DynamicBoolOpt{}, + StatsDerivedReply: []*DynamicBoolOpt{}, + ThresholdsDerivedReply: []*DynamicBoolOpt{}, + MaxUsage: []*DynamicBoolOpt{}, + ForceDuration: []*DynamicBoolOpt{}, + TTL: []*DynamicDurationOpt{}, + Chargeable: []*DynamicBoolOpt{}, + TTLLastUsage: []*DynamicDurationPointerOpt{}, + TTLLastUsed: []*DynamicDurationPointerOpt{}, + DebitInterval: []*DynamicDurationOpt{}, + TTLMaxDelay: []*DynamicDurationOpt{}, + TTLUsage: []*DynamicDurationPointerOpt{}, }, } if !reflect.DeepEqual(expAttr, cfg.SessionSCfg()) { @@ -1519,7 +1519,7 @@ func TestReloadCfgInDb(t *testing.T) { ExistsIndexedFields: &[]string{"field1"}, NotExistsIndexedFields: &[]string{"field1"}, Opts: &AttributesOpts{ - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { FilterIDs: []string{}, Value: 2, @@ -1544,7 +1544,7 @@ func TestReloadCfgInDb(t *testing.T) { Exists_indexed_fields: &[]string{"field2"}, Notexists_indexed_fields: &[]string{"field2"}, Opts: &AttributesOptsJson{ - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { Value: 3, }, @@ -1565,7 +1565,7 @@ func TestReloadCfgInDb(t *testing.T) { ExistsIndexedFields: &[]string{"field2"}, NotExistsIndexedFields: &[]string{"field2"}, Opts: &AttributesOpts{ - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { FilterIDs: []string{}, Value: 2, diff --git a/config/config_test.go b/config/config_test.go index 60c8f486a..145bf94b1 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -319,16 +319,16 @@ func TestCgrCfgJSONDefaultsCDRS(t *testing.T) { AccountSConns: []string{}, ExtraFields: RSRParsers{}, Opts: &CdrsOpts{ - Accounts: []*utils.DynamicBoolOpt{}, - Attributes: []*utils.DynamicBoolOpt{}, - Chargers: []*utils.DynamicBoolOpt{}, - Export: []*utils.DynamicBoolOpt{}, - Rates: []*utils.DynamicBoolOpt{}, - Stats: []*utils.DynamicBoolOpt{}, - Thresholds: []*utils.DynamicBoolOpt{}, - Refund: []*utils.DynamicBoolOpt{}, - Rerate: []*utils.DynamicBoolOpt{}, - Store: []*utils.DynamicBoolOpt{}, + Accounts: []*DynamicBoolOpt{}, + Attributes: []*DynamicBoolOpt{}, + Chargers: []*DynamicBoolOpt{}, + Export: []*DynamicBoolOpt{}, + Rates: []*DynamicBoolOpt{}, + Stats: []*DynamicBoolOpt{}, + Thresholds: []*DynamicBoolOpt{}, + Refund: []*DynamicBoolOpt{}, + Rerate: []*DynamicBoolOpt{}, + Store: []*DynamicBoolOpt{}, }, } if !reflect.DeepEqual(eCdrsCfg, cgrCfg.cdrsCfg) { @@ -391,37 +391,37 @@ func TestCgrCfgJSONDefaultsSMGenericCfg(t *testing.T) { utils.MetaSMS: 1, }, Opts: &SessionsOpts{ - Accounts: []*utils.DynamicBoolOpt{}, - Attributes: []*utils.DynamicBoolOpt{}, - CDRs: []*utils.DynamicBoolOpt{}, - Chargers: []*utils.DynamicBoolOpt{}, - Resources: []*utils.DynamicBoolOpt{}, - Routes: []*utils.DynamicBoolOpt{}, - Stats: []*utils.DynamicBoolOpt{}, - Thresholds: []*utils.DynamicBoolOpt{}, - Initiate: []*utils.DynamicBoolOpt{}, - Update: []*utils.DynamicBoolOpt{}, - Terminate: []*utils.DynamicBoolOpt{}, - Message: []*utils.DynamicBoolOpt{}, - AttributesDerivedReply: []*utils.DynamicBoolOpt{}, - BlockerError: []*utils.DynamicBoolOpt{}, - CDRsDerivedReply: []*utils.DynamicBoolOpt{}, - ResourcesAuthorize: []*utils.DynamicBoolOpt{}, - ResourcesAllocate: []*utils.DynamicBoolOpt{}, - ResourcesRelease: []*utils.DynamicBoolOpt{}, - ResourcesDerivedReply: []*utils.DynamicBoolOpt{}, - RoutesDerivedReply: []*utils.DynamicBoolOpt{}, - StatsDerivedReply: []*utils.DynamicBoolOpt{}, - ThresholdsDerivedReply: []*utils.DynamicBoolOpt{}, - MaxUsage: []*utils.DynamicBoolOpt{}, - ForceDuration: []*utils.DynamicBoolOpt{}, - TTL: []*utils.DynamicDurationOpt{}, - Chargeable: []*utils.DynamicBoolOpt{}, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{}, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{}, - DebitInterval: []*utils.DynamicDurationOpt{}, - TTLMaxDelay: []*utils.DynamicDurationOpt{}, - TTLUsage: []*utils.DynamicDurationPointerOpt{}, + Accounts: []*DynamicBoolOpt{}, + Attributes: []*DynamicBoolOpt{}, + CDRs: []*DynamicBoolOpt{}, + Chargers: []*DynamicBoolOpt{}, + Resources: []*DynamicBoolOpt{}, + Routes: []*DynamicBoolOpt{}, + Stats: []*DynamicBoolOpt{}, + Thresholds: []*DynamicBoolOpt{}, + Initiate: []*DynamicBoolOpt{}, + Update: []*DynamicBoolOpt{}, + Terminate: []*DynamicBoolOpt{}, + Message: []*DynamicBoolOpt{}, + AttributesDerivedReply: []*DynamicBoolOpt{}, + BlockerError: []*DynamicBoolOpt{}, + CDRsDerivedReply: []*DynamicBoolOpt{}, + ResourcesAuthorize: []*DynamicBoolOpt{}, + ResourcesAllocate: []*DynamicBoolOpt{}, + ResourcesRelease: []*DynamicBoolOpt{}, + ResourcesDerivedReply: []*DynamicBoolOpt{}, + RoutesDerivedReply: []*DynamicBoolOpt{}, + StatsDerivedReply: []*DynamicBoolOpt{}, + ThresholdsDerivedReply: []*DynamicBoolOpt{}, + MaxUsage: []*DynamicBoolOpt{}, + ForceDuration: []*DynamicBoolOpt{}, + TTL: []*DynamicDurationOpt{}, + Chargeable: []*DynamicBoolOpt{}, + TTLLastUsage: []*DynamicDurationPointerOpt{}, + TTLLastUsed: []*DynamicDurationPointerOpt{}, + DebitInterval: []*DynamicDurationOpt{}, + TTLMaxDelay: []*DynamicDurationOpt{}, + TTLUsage: []*DynamicDurationPointerOpt{}, }, } if !reflect.DeepEqual(eSessionSCfg, cgrCfg.sessionSCfg) { @@ -602,9 +602,9 @@ func TestCgrCfgJSONDefaultsResLimCfg(t *testing.T) { ExistsIndexedFields: &[]string{}, NotExistsIndexedFields: &[]string{}, Opts: &ResourcesOpts{ - UsageID: []*utils.DynamicStringOpt{}, - UsageTTL: []*utils.DynamicDurationOpt{}, - Units: []*utils.DynamicFloat64Opt{}, + UsageID: []*DynamicStringOpt{}, + UsageTTL: []*DynamicDurationOpt{}, + Units: []*DynamicFloat64Opt{}, }, } if !reflect.DeepEqual(cgrCfg.resourceSCfg, eResLiCfg) { @@ -625,10 +625,10 @@ func TestCgrCfgJSONDefaultStatsCfg(t *testing.T) { ExistsIndexedFields: &[]string{}, NotExistsIndexedFields: &[]string{}, Opts: &StatsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, - RoundingDecimals: []*utils.DynamicIntOpt{}, - PrometheusStatIDs: []*utils.DynamicStringSliceOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, + RoundingDecimals: []*DynamicIntOpt{}, + PrometheusStatIDs: []*DynamicStringSliceOpt{}, }, EEsConns: []string{}, } @@ -649,8 +649,8 @@ func TestCgrCfgJSONDefaultThresholdSCfg(t *testing.T) { NotExistsIndexedFields: &[]string{}, ActionSConns: []string{}, Opts: &ThresholdsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } if !reflect.DeepEqual(eThresholdSCfg, cgrCfg.thresholdSCfg) { @@ -674,14 +674,14 @@ func TestCgrCfgJSONDefaultRouteSCfg(t *testing.T) { AccountSConns: []string{}, DefaultRatio: 1, Opts: &RoutesOpts{ - Context: []*utils.DynamicStringOpt{}, - ProfileCount: []*utils.DynamicIntPointerOpt{}, - IgnoreErrors: []*utils.DynamicBoolOpt{}, - MaxCost: []*utils.DynamicInterfaceOpt{}, - Limit: []*utils.DynamicIntPointerOpt{}, - Offset: []*utils.DynamicIntPointerOpt{}, - MaxItems: []*utils.DynamicIntPointerOpt{}, - Usage: []*utils.DynamicDecimalBigOpt{}, + Context: []*DynamicStringOpt{}, + ProfileCount: []*DynamicIntPointerOpt{}, + IgnoreErrors: []*DynamicBoolOpt{}, + MaxCost: []*DynamicInterfaceOpt{}, + Limit: []*DynamicIntPointerOpt{}, + Offset: []*DynamicIntPointerOpt{}, + MaxItems: []*DynamicIntPointerOpt{}, + Usage: []*DynamicDecimalOpt{}, }, } if !reflect.DeepEqual(eSupplSCfg, cgrCfg.routeSCfg) { @@ -1608,10 +1608,10 @@ func TestAttributeSConfig(t *testing.T) { NotExistsIndexedFields: &[]string{}, NestedFields: false, Opts: &AttributesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProcessRuns: []*utils.DynamicIntOpt{}, - ProfileRuns: []*utils.DynamicIntOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProcessRuns: []*DynamicIntOpt{}, + ProfileRuns: []*DynamicIntOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } cgrConfig := NewDefaultCGRConfig() @@ -1651,9 +1651,9 @@ func TestResourceSConfig(t *testing.T) { NotExistsIndexedFields: &[]string{}, NestedFields: false, Opts: &ResourcesOpts{ - UsageID: []*utils.DynamicStringOpt{}, - UsageTTL: []*utils.DynamicDurationOpt{}, - Units: []*utils.DynamicFloat64Opt{}, + UsageID: []*DynamicStringOpt{}, + UsageTTL: []*DynamicDurationOpt{}, + Units: []*DynamicFloat64Opt{}, }, } cgrConfig := NewDefaultCGRConfig() @@ -1676,10 +1676,10 @@ func TestStatSConfig(t *testing.T) { NotExistsIndexedFields: &[]string{}, NestedFields: false, Opts: &StatsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, - RoundingDecimals: []*utils.DynamicIntOpt{}, - PrometheusStatIDs: []*utils.DynamicStringSliceOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, + RoundingDecimals: []*DynamicIntOpt{}, + PrometheusStatIDs: []*DynamicStringSliceOpt{}, }, EEsConns: []string{}, } @@ -1702,8 +1702,8 @@ func TestThresholdSConfig(t *testing.T) { NestedFields: false, ActionSConns: []string{}, Opts: &ThresholdsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } cgrConfig := NewDefaultCGRConfig() @@ -1729,14 +1729,14 @@ func TestRouteSConfig(t *testing.T) { DefaultRatio: 1, NestedFields: false, Opts: &RoutesOpts{ - Context: []*utils.DynamicStringOpt{}, - ProfileCount: []*utils.DynamicIntPointerOpt{}, - IgnoreErrors: []*utils.DynamicBoolOpt{}, - MaxCost: []*utils.DynamicInterfaceOpt{}, - Limit: []*utils.DynamicIntPointerOpt{}, - Offset: []*utils.DynamicIntPointerOpt{}, - MaxItems: []*utils.DynamicIntPointerOpt{}, - Usage: []*utils.DynamicDecimalBigOpt{}, + Context: []*DynamicStringOpt{}, + ProfileCount: []*DynamicIntPointerOpt{}, + IgnoreErrors: []*DynamicBoolOpt{}, + MaxCost: []*DynamicInterfaceOpt{}, + Limit: []*DynamicIntPointerOpt{}, + Offset: []*DynamicIntPointerOpt{}, + MaxItems: []*DynamicIntPointerOpt{}, + Usage: []*DynamicDecimalOpt{}, }, } cgrConfig := NewDefaultCGRConfig() @@ -1781,37 +1781,37 @@ func TestSessionSConfig(t *testing.T) { utils.MetaSMS: 1, }, Opts: &SessionsOpts{ - Accounts: []*utils.DynamicBoolOpt{}, - Attributes: []*utils.DynamicBoolOpt{}, - CDRs: []*utils.DynamicBoolOpt{}, - Chargers: []*utils.DynamicBoolOpt{}, - Resources: []*utils.DynamicBoolOpt{}, - Routes: []*utils.DynamicBoolOpt{}, - Stats: []*utils.DynamicBoolOpt{}, - Thresholds: []*utils.DynamicBoolOpt{}, - Initiate: []*utils.DynamicBoolOpt{}, - Update: []*utils.DynamicBoolOpt{}, - Terminate: []*utils.DynamicBoolOpt{}, - Message: []*utils.DynamicBoolOpt{}, - AttributesDerivedReply: []*utils.DynamicBoolOpt{}, - BlockerError: []*utils.DynamicBoolOpt{}, - CDRsDerivedReply: []*utils.DynamicBoolOpt{}, - ResourcesAuthorize: []*utils.DynamicBoolOpt{}, - ResourcesAllocate: []*utils.DynamicBoolOpt{}, - ResourcesRelease: []*utils.DynamicBoolOpt{}, - ResourcesDerivedReply: []*utils.DynamicBoolOpt{}, - RoutesDerivedReply: []*utils.DynamicBoolOpt{}, - StatsDerivedReply: []*utils.DynamicBoolOpt{}, - ThresholdsDerivedReply: []*utils.DynamicBoolOpt{}, - MaxUsage: []*utils.DynamicBoolOpt{}, - ForceDuration: []*utils.DynamicBoolOpt{}, - TTL: []*utils.DynamicDurationOpt{}, - Chargeable: []*utils.DynamicBoolOpt{}, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{}, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{}, - DebitInterval: []*utils.DynamicDurationOpt{}, - TTLMaxDelay: []*utils.DynamicDurationOpt{}, - TTLUsage: []*utils.DynamicDurationPointerOpt{}, + Accounts: []*DynamicBoolOpt{}, + Attributes: []*DynamicBoolOpt{}, + CDRs: []*DynamicBoolOpt{}, + Chargers: []*DynamicBoolOpt{}, + Resources: []*DynamicBoolOpt{}, + Routes: []*DynamicBoolOpt{}, + Stats: []*DynamicBoolOpt{}, + Thresholds: []*DynamicBoolOpt{}, + Initiate: []*DynamicBoolOpt{}, + Update: []*DynamicBoolOpt{}, + Terminate: []*DynamicBoolOpt{}, + Message: []*DynamicBoolOpt{}, + AttributesDerivedReply: []*DynamicBoolOpt{}, + BlockerError: []*DynamicBoolOpt{}, + CDRsDerivedReply: []*DynamicBoolOpt{}, + ResourcesAuthorize: []*DynamicBoolOpt{}, + ResourcesAllocate: []*DynamicBoolOpt{}, + ResourcesRelease: []*DynamicBoolOpt{}, + ResourcesDerivedReply: []*DynamicBoolOpt{}, + RoutesDerivedReply: []*DynamicBoolOpt{}, + StatsDerivedReply: []*DynamicBoolOpt{}, + ThresholdsDerivedReply: []*DynamicBoolOpt{}, + MaxUsage: []*DynamicBoolOpt{}, + ForceDuration: []*DynamicBoolOpt{}, + TTL: []*DynamicDurationOpt{}, + Chargeable: []*DynamicBoolOpt{}, + TTLLastUsage: []*DynamicDurationPointerOpt{}, + TTLLastUsed: []*DynamicDurationPointerOpt{}, + DebitInterval: []*DynamicDurationOpt{}, + TTLMaxDelay: []*DynamicDurationOpt{}, + TTLUsage: []*DynamicDurationPointerOpt{}, }, } cgrConfig := NewDefaultCGRConfig() @@ -1955,7 +1955,7 @@ func TestDispatcherSConfig(t *testing.T) { AttributeSConns: []string{}, NestedFields: false, Opts: &DispatchersOpts{ - []*utils.DynamicBoolOpt{}, + []*DynamicBoolOpt{}, }, } cgrConfig := NewDefaultCGRConfig() @@ -1974,7 +1974,7 @@ func TestAnalyzerConfig(t *testing.T) { EEsConns: []string{}, TTL: 24 * time.Hour, Opts: &AnalyzerSOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{}, + ExporterIDs: []*DynamicStringSliceOpt{}, }, } cgrConfig := NewDefaultCGRConfig() @@ -2094,11 +2094,11 @@ func TestRateSConfig(t *testing.T) { RateNestedFields: false, Verbosity: 1000, Opts: &RatesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - StartTime: []*utils.DynamicStringOpt{}, - Usage: []*utils.DynamicDecimalBigOpt{}, - IntervalStart: []*utils.DynamicDecimalBigOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + StartTime: []*DynamicStringOpt{}, + Usage: []*DynamicDecimalOpt{}, + IntervalStart: []*DynamicDecimalOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } cgrConfig := NewDefaultCGRConfig() @@ -3348,7 +3348,7 @@ func TestCgrCfgJSONDefaultDispatcherSCfg(t *testing.T) { NotExistsIndexedFields: &[]string{}, AttributeSConns: []string{}, Opts: &DispatchersOpts{ - []*utils.DynamicBoolOpt{}, + []*DynamicBoolOpt{}, }, } if !reflect.DeepEqual(cgrCfg.dispatcherSCfg, eDspSCfg) { @@ -3474,7 +3474,7 @@ func TestCgrCfgJSONDefaultAnalyzerSCfg(t *testing.T) { EEsConns: []string{}, TTL: 24 * time.Hour, Opts: &AnalyzerSOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{}, + ExporterIDs: []*DynamicStringSliceOpt{}, }, } if !reflect.DeepEqual(cgrCfg.analyzerSCfg, aSCfg) { @@ -3536,11 +3536,11 @@ func TestCgrCfgJSONDefaultRateCfg(t *testing.T) { RateNestedFields: false, Verbosity: 1000, Opts: &RatesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - StartTime: []*utils.DynamicStringOpt{}, - Usage: []*utils.DynamicDecimalBigOpt{}, - IntervalStart: []*utils.DynamicDecimalBigOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + StartTime: []*DynamicStringOpt{}, + Usage: []*DynamicDecimalOpt{}, + IntervalStart: []*DynamicDecimalOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } if !reflect.DeepEqual(cgrCfg.rateSCfg, eCfg) { @@ -3719,7 +3719,7 @@ func TestV1GetConfigGeneral(t *testing.T) { utils.DecimalPrecisionCfg: 0, utils.DecimalRoundingModeCfg: "*toNearestEven", utils.OptsCfg: map[string]any{ - utils.MetaExporterIDs: []*utils.DynamicStringSliceOpt{}, + utils.MetaExporterIDs: []*DynamicStringSliceOpt{}, }, } expected = map[string]any{ @@ -3888,16 +3888,16 @@ func TestV1GetConfigCdrs(t *testing.T) { utils.RateSConnsCfg: []string{}, utils.AccountSConnsCfg: []string{}, utils.OptsCfg: map[string]any{ - utils.MetaAccounts: []*utils.DynamicBoolOpt{}, - utils.MetaAttributes: []*utils.DynamicBoolOpt{}, - utils.MetaChargers: []*utils.DynamicBoolOpt{}, - utils.MetaEEs: []*utils.DynamicBoolOpt{}, - utils.MetaRates: []*utils.DynamicBoolOpt{}, - utils.MetaStats: []*utils.DynamicBoolOpt{}, - utils.MetaThresholds: []*utils.DynamicBoolOpt{}, - utils.MetaRefund: []*utils.DynamicBoolOpt{}, - utils.MetaRerate: []*utils.DynamicBoolOpt{}, - utils.MetaStore: []*utils.DynamicBoolOpt{}, + utils.MetaAccounts: []*DynamicBoolOpt{}, + utils.MetaAttributes: []*DynamicBoolOpt{}, + utils.MetaChargers: []*DynamicBoolOpt{}, + utils.MetaEEs: []*DynamicBoolOpt{}, + utils.MetaRates: []*DynamicBoolOpt{}, + utils.MetaStats: []*DynamicBoolOpt{}, + utils.MetaThresholds: []*DynamicBoolOpt{}, + utils.MetaRefund: []*DynamicBoolOpt{}, + utils.MetaRerate: []*DynamicBoolOpt{}, + utils.MetaStore: []*DynamicBoolOpt{}, }, }, } @@ -3948,37 +3948,37 @@ func TestV1GetConfigSessionS(t *testing.T) { utils.MetaSMS: "1", }, utils.OptsCfg: map[string]any{ - utils.MetaAccounts: []*utils.DynamicBoolOpt{}, - utils.MetaAttributes: []*utils.DynamicBoolOpt{}, - utils.MetaCDRs: []*utils.DynamicBoolOpt{}, - utils.MetaChargers: []*utils.DynamicBoolOpt{}, - utils.MetaResources: []*utils.DynamicBoolOpt{}, - utils.MetaRoutes: []*utils.DynamicBoolOpt{}, - utils.MetaStats: []*utils.DynamicBoolOpt{}, - utils.MetaThresholds: []*utils.DynamicBoolOpt{}, - utils.MetaInitiate: []*utils.DynamicBoolOpt{}, - utils.MetaUpdate: []*utils.DynamicBoolOpt{}, - utils.MetaTerminate: []*utils.DynamicBoolOpt{}, - utils.MetaMessage: []*utils.DynamicBoolOpt{}, - utils.MetaAttributesDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaBlockerErrorCfg: []*utils.DynamicBoolOpt{}, - utils.MetaCDRsDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaResourcesAuthorizeCfg: []*utils.DynamicBoolOpt{}, - utils.MetaResourcesAllocateCfg: []*utils.DynamicBoolOpt{}, - utils.MetaResourcesReleaseCfg: []*utils.DynamicBoolOpt{}, - utils.MetaResourcesDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaRoutesDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaStatsDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaThresholdsDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaMaxUsageCfg: []*utils.DynamicBoolOpt{}, - utils.MetaForceDurationCfg: []*utils.DynamicBoolOpt{}, - utils.MetaTTLCfg: []*utils.DynamicDurationOpt{}, - utils.MetaChargeableCfg: []*utils.DynamicBoolOpt{}, - utils.MetaDebitIntervalCfg: []*utils.DynamicDurationOpt{}, - utils.MetaTTLLastUsageCfg: []*utils.DynamicDurationPointerOpt{}, - utils.MetaTTLLastUsedCfg: []*utils.DynamicDurationPointerOpt{}, - utils.MetaTTLMaxDelayCfg: []*utils.DynamicDurationOpt{}, - utils.MetaTTLUsageCfg: []*utils.DynamicDurationPointerOpt{}, + utils.MetaAccounts: []*DynamicBoolOpt{}, + utils.MetaAttributes: []*DynamicBoolOpt{}, + utils.MetaCDRs: []*DynamicBoolOpt{}, + utils.MetaChargers: []*DynamicBoolOpt{}, + utils.MetaResources: []*DynamicBoolOpt{}, + utils.MetaRoutes: []*DynamicBoolOpt{}, + utils.MetaStats: []*DynamicBoolOpt{}, + utils.MetaThresholds: []*DynamicBoolOpt{}, + utils.MetaInitiate: []*DynamicBoolOpt{}, + utils.MetaUpdate: []*DynamicBoolOpt{}, + utils.MetaTerminate: []*DynamicBoolOpt{}, + utils.MetaMessage: []*DynamicBoolOpt{}, + utils.MetaAttributesDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaBlockerErrorCfg: []*DynamicBoolOpt{}, + utils.MetaCDRsDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaResourcesAuthorizeCfg: []*DynamicBoolOpt{}, + utils.MetaResourcesAllocateCfg: []*DynamicBoolOpt{}, + utils.MetaResourcesReleaseCfg: []*DynamicBoolOpt{}, + utils.MetaResourcesDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaRoutesDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaStatsDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaThresholdsDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaMaxUsageCfg: []*DynamicBoolOpt{}, + utils.MetaForceDurationCfg: []*DynamicBoolOpt{}, + utils.MetaTTLCfg: []*DynamicDurationOpt{}, + utils.MetaChargeableCfg: []*DynamicBoolOpt{}, + utils.MetaDebitIntervalCfg: []*DynamicDurationOpt{}, + utils.MetaTTLLastUsageCfg: []*DynamicDurationPointerOpt{}, + utils.MetaTTLLastUsedCfg: []*DynamicDurationPointerOpt{}, + utils.MetaTTLMaxDelayCfg: []*DynamicDurationOpt{}, + utils.MetaTTLUsageCfg: []*DynamicDurationPointerOpt{}, }, }, } @@ -4171,10 +4171,10 @@ func TestV1GetConfigAttribute(t *testing.T) { utils.NotExistsIndexedFieldsCfg: []string{}, utils.NestedFieldsCfg: false, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileRunsCfg: []*utils.DynamicIntOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaProcessRunsCfg: []*DynamicIntOpt{}, + utils.MetaProfileRunsCfg: []*DynamicIntOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, }, }, } @@ -4222,9 +4222,9 @@ func TestV1GetConfigResourceS(t *testing.T) { utils.NotExistsIndexedFieldsCfg: []string{}, utils.NestedFieldsCfg: false, utils.OptsCfg: map[string]any{ - utils.MetaUsageIDCfg: []*utils.DynamicStringOpt{}, - utils.MetaUsageTTLCfg: []*utils.DynamicDurationOpt{}, - utils.MetaUnitsCfg: []*utils.DynamicFloat64Opt{}, + utils.MetaUsageIDCfg: []*DynamicStringOpt{}, + utils.MetaUsageTTLCfg: []*DynamicDurationOpt{}, + utils.MetaUnitsCfg: []*DynamicFloat64Opt{}, }, }, } @@ -4251,10 +4251,10 @@ func TestV1GetConfigStats(t *testing.T) { utils.NotExistsIndexedFieldsCfg: []string{}, utils.NestedFieldsCfg: false, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, - utils.OptsRoundingDecimals: []*utils.DynamicIntOpt{}, - utils.OptsPrometheusStatIDs: []*utils.DynamicStringSliceOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, + utils.OptsRoundingDecimals: []*DynamicIntOpt{}, + utils.OptsPrometheusStatIDs: []*DynamicStringSliceOpt{}, }, utils.EEsConnsCfg: []string{}, utils.EEsExporterIDsCfg: []string(nil), @@ -4282,8 +4282,8 @@ func TestV1GetConfigThresholds(t *testing.T) { utils.NestedFieldsCfg: false, utils.ActionSConnsCfg: []string{}, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, }, }, } @@ -4312,9 +4312,9 @@ func TestV1GetConfigAcounts(t *testing.T) { utils.MaxIterations: 1000, utils.MaxUsage: "259200000000000", // 72h in ns utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaUsage: []*utils.DynamicDecimalBigOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaUsage: []*DynamicDecimalOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, }, }, } @@ -4344,14 +4344,14 @@ func TestV1GetConfigRoutes(t *testing.T) { utils.AccountSConnsCfg: []string{}, utils.DefaultRatioCfg: 1, utils.OptsCfg: map[string]any{ - utils.OptsContext: []*utils.DynamicStringOpt{}, - utils.MetaProfileCountCfg: []*utils.DynamicIntPointerOpt{}, - utils.MetaIgnoreErrorsCfg: []*utils.DynamicBoolOpt{}, - utils.MetaMaxCostCfg: []*utils.DynamicInterfaceOpt{}, - utils.MetaLimitCfg: []*utils.DynamicIntPointerOpt{}, - utils.MetaOffsetCfg: []*utils.DynamicIntPointerOpt{}, - utils.MetaMaxItemsCfg: []*utils.DynamicIntPointerOpt{}, - utils.MetaUsage: []*utils.DynamicDecimalBigOpt{}, + utils.OptsContext: []*DynamicStringOpt{}, + utils.MetaProfileCountCfg: []*DynamicIntPointerOpt{}, + utils.MetaIgnoreErrorsCfg: []*DynamicBoolOpt{}, + utils.MetaMaxCostCfg: []*DynamicInterfaceOpt{}, + utils.MetaLimitCfg: []*DynamicIntPointerOpt{}, + utils.MetaOffsetCfg: []*DynamicIntPointerOpt{}, + utils.MetaMaxItemsCfg: []*DynamicIntPointerOpt{}, + utils.MetaUsage: []*DynamicDecimalOpt{}, }, }, } @@ -4417,7 +4417,7 @@ func TestV1GetConfigDispatcherS(t *testing.T) { utils.NestedFieldsCfg: false, utils.AttributeSConnsCfg: []string{}, utils.OptsCfg: map[string]any{ - utils.MetaDispatcherSCfg: []*utils.DynamicBoolOpt{}, + utils.MetaDispatcherSCfg: []*DynamicBoolOpt{}, }, }, } @@ -4817,7 +4817,7 @@ func TestV1GetConfigSectionAnalyzer(t *testing.T) { utils.EEsConnsCfg: []string{}, utils.TTLCfg: "24h0m0s", utils.OptsCfg: map[string]any{ - utils.MetaExporterIDs: []*utils.DynamicStringSliceOpt{}, + utils.MetaExporterIDs: []*DynamicStringSliceOpt{}, }, }, } @@ -4848,11 +4848,11 @@ func TestV1GetConfigSectionRateS(t *testing.T) { utils.RateNestedFieldsCfg: false, utils.Verbosity: 1000, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaStartTime: []*utils.DynamicStringOpt{}, - utils.MetaUsage: []*utils.DynamicDecimalBigOpt{}, - utils.MetaIntervalStartCfg: []*utils.DynamicDecimalBigOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaStartTime: []*DynamicStringOpt{}, + utils.MetaUsage: []*DynamicDecimalOpt{}, + utils.MetaIntervalStartCfg: []*DynamicDecimalOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, }, }, } @@ -5793,9 +5793,9 @@ func TestActionSConfig(t *testing.T) { NestedFields: false, DynaprepaidActionProfile: []string{}, Opts: &ActionsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, - PosterAttempts: []*utils.DynamicIntOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, + PosterAttempts: []*DynamicIntOpt{}, }, } cgrConfig := NewDefaultCGRConfig() @@ -5824,9 +5824,9 @@ func TestV1GetConfigSectionActionSJSON(t *testing.T) { utils.NestedFieldsCfg: false, utils.DynaprepaidActionplansCfg: []string{}, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, - utils.MetaPosterAttempts: []*utils.DynamicIntOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, + utils.MetaPosterAttempts: []*DynamicIntOpt{}, }, }, } @@ -5921,7 +5921,7 @@ func TestSetCfgInDb(t *testing.T) { ExistsIndexedFields: &[]string{"field1"}, NotExistsIndexedFields: &[]string{"field1"}, Opts: &AttributesOpts{ - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { Value: 2, }, @@ -5945,7 +5945,7 @@ func TestSetCfgInDb(t *testing.T) { Exists_indexed_fields: &[]string{"field2"}, Notexists_indexed_fields: &[]string{"field2"}, Opts: &AttributesOptsJson{ - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { Value: 3, }, @@ -5967,7 +5967,7 @@ func TestSetCfgInDb(t *testing.T) { Exists_indexed_fields: &[]string{"field2"}, Notexists_indexed_fields: &[]string{"field2"}, Opts: &AttributesOptsJson{ - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { Value: 2, }, @@ -6008,7 +6008,7 @@ func TestSetNilCfgInDb(t *testing.T) { ExistsIndexedFields: &[]string{"field1"}, NotExistsIndexedFields: &[]string{"field1"}, Opts: &AttributesOpts{ - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { FilterIDs: []string{}, Value: 2, diff --git a/config/configsanity_test.go b/config/configsanity_test.go index ee6b2ff10..c74b7f6fa 100644 --- a/config/configsanity_test.go +++ b/config/configsanity_test.go @@ -971,7 +971,7 @@ func TestConfigSanityAttributesCfg(t *testing.T) { cfg.attributeSCfg = &AttributeSCfg{ Enabled: true, Opts: &AttributesOpts{ - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { FilterIDs: []string{}, Value: 0, @@ -1968,7 +1968,7 @@ func TestCGRConfigcheckConfigSanityCacheSIdErr(t *testing.T) { cfg.attributeSCfg = &AttributeSCfg{ Enabled: true, Opts: &AttributesOpts{ - ProcessRuns: []*utils.DynamicIntOpt{ + ProcessRuns: []*DynamicIntOpt{ { Value: 2, }, diff --git a/config/dispatcherscfg.go b/config/dispatcherscfg.go index 6dea976a4..c4900610e 100644 --- a/config/dispatcherscfg.go +++ b/config/dispatcherscfg.go @@ -30,7 +30,7 @@ const ( ) type DispatchersOpts struct { - Dispatchers []*utils.DynamicBoolOpt + Dispatchers []*DynamicBoolOpt } // DispatcherSCfg is the configuration of dispatcher service @@ -138,9 +138,9 @@ func (DispatcherSCfg) SName() string { return DispatcherSJSON } func (dps DispatcherSCfg) CloneSection() Section { return dps.Clone() } func (dspOpts *DispatchersOpts) Clone() *DispatchersOpts { - var dpS []*utils.DynamicBoolOpt + var dpS []*DynamicBoolOpt if dspOpts.Dispatchers != nil { - dpS = utils.CloneDynamicBoolOpt(dspOpts.Dispatchers) + dpS = CloneDynamicBoolOpt(dspOpts.Dispatchers) } return &DispatchersOpts{ Dispatchers: dpS, @@ -178,7 +178,7 @@ func (dps DispatcherSCfg) Clone() (cln *DispatcherSCfg) { } type DispatchersOptsJson struct { - Dispatchers []*utils.DynamicBoolOpt `json:"*dispatchers"` + Dispatchers []*DynamicBoolOpt `json:"*dispatchers"` } type DispatcherSJsonCfg struct { @@ -198,7 +198,7 @@ func diffDispatchersOptsJsonCfg(d *DispatchersOptsJson, v1, v2 *DispatchersOpts) if d == nil { d = new(DispatchersOptsJson) } - if !utils.DynamicBoolOptEqual(v1.Dispatchers, v2.Dispatchers) { + if !DynamicBoolOptEqual(v1.Dispatchers, v2.Dispatchers) { d.Dispatchers = v2.Dispatchers } return d diff --git a/config/dispatcherscfg_test.go b/config/dispatcherscfg_test.go index 65afe9627..d78c71935 100644 --- a/config/dispatcherscfg_test.go +++ b/config/dispatcherscfg_test.go @@ -48,7 +48,7 @@ func TestDispatcherSCfgloadFromJsonCfg(t *testing.T) { AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaDispatchers, utils.MetaAttributes), "*conn1"}, NestedFields: true, Opts: &DispatchersOpts{ - []*utils.DynamicBoolOpt{}, + []*DynamicBoolOpt{}, }, } jsnCfg := NewDefaultCGRConfig() @@ -87,7 +87,7 @@ func TestDispatcherSCfgAsMapInterface(t *testing.T) { utils.NestedFieldsCfg: false, utils.AttributeSConnsCfg: []string{}, utils.OptsCfg: map[string]any{ - utils.MetaDispatcherSCfg: []*utils.DynamicBoolOpt{}, + utils.MetaDispatcherSCfg: []*DynamicBoolOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -123,7 +123,7 @@ func TestDispatcherSCfgAsMapInterface1(t *testing.T) { utils.NestedFieldsCfg: false, utils.AttributeSConnsCfg: []string{"*internal", "*conn1"}, utils.OptsCfg: map[string]any{ - utils.MetaDispatcherSCfg: []*utils.DynamicBoolOpt{}, + utils.MetaDispatcherSCfg: []*DynamicBoolOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -147,7 +147,7 @@ func TestDispatcherSCfgAsMapInterface2(t *testing.T) { utils.NestedFieldsCfg: false, utils.AttributeSConnsCfg: []string{}, utils.OptsCfg: map[string]any{ - utils.MetaDispatcherSCfg: []*utils.DynamicBoolOpt{}, + utils.MetaDispatcherSCfg: []*DynamicBoolOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -273,7 +273,7 @@ func TestDispatcherSCfgCloneTest(t *testing.T) { func TestDispatchersOptsLoadFromJSONCfgNil(t *testing.T) { var jsnCfg *DispatchersOptsJson dspOpts := &DispatchersOpts{ - Dispatchers: []*utils.DynamicBoolOpt{ + Dispatchers: []*DynamicBoolOpt{ { Tenant: "Filler val", }, @@ -290,7 +290,7 @@ func TestDiffDispatchersOptsJsonCfg(t *testing.T) { var d *DispatchersOptsJson v1 := &DispatchersOpts{ - Dispatchers: []*utils.DynamicBoolOpt{ + Dispatchers: []*DynamicBoolOpt{ { Tenant: "1", }, @@ -298,7 +298,7 @@ func TestDiffDispatchersOptsJsonCfg(t *testing.T) { } v2 := &DispatchersOpts{ - Dispatchers: []*utils.DynamicBoolOpt{ + Dispatchers: []*DynamicBoolOpt{ { Tenant: "2", }, @@ -306,7 +306,7 @@ func TestDiffDispatchersOptsJsonCfg(t *testing.T) { } expected := &DispatchersOptsJson{ - Dispatchers: []*utils.DynamicBoolOpt{ + Dispatchers: []*DynamicBoolOpt{ { Tenant: "2", }, diff --git a/config/generalcfg.go b/config/generalcfg.go index ff74cb45b..7dca8f6ae 100644 --- a/config/generalcfg.go +++ b/config/generalcfg.go @@ -28,7 +28,7 @@ import ( ) type GeneralOpts struct { - ExporterIDs []*utils.DynamicStringSliceOpt + ExporterIDs []*DynamicStringSliceOpt } // GeneralCfg is the general config section @@ -237,7 +237,7 @@ func (generalOpts *GeneralOpts) Clone() *GeneralOpts { return nil } return &GeneralOpts{ - ExporterIDs: utils.CloneDynamicStringSliceOpt(generalOpts.ExporterIDs), + ExporterIDs: CloneDynamicStringSliceOpt(generalOpts.ExporterIDs), } } @@ -272,7 +272,7 @@ func (gencfg GeneralCfg) Clone() *GeneralCfg { } type GeneralOptsJson struct { - ExporterIDs []*utils.DynamicStringSliceOpt `json:"*exporterIDs"` + ExporterIDs []*DynamicStringSliceOpt `json:"*exporterIDs"` } // General config section @@ -309,7 +309,7 @@ func diffGeneralOptsJsonCfg(d *GeneralOptsJson, v1, v2 *GeneralOpts) *GeneralOpt if d == nil { d = new(GeneralOptsJson) } - if !utils.DynamicStringSliceOptEqual(v1.ExporterIDs, v2.ExporterIDs) { + if !DynamicStringSliceOptEqual(v1.ExporterIDs, v2.ExporterIDs) { d.ExporterIDs = v2.ExporterIDs } return d diff --git a/config/generalcfg_test.go b/config/generalcfg_test.go index 2944c499f..87cecc13f 100644 --- a/config/generalcfg_test.go +++ b/config/generalcfg_test.go @@ -64,7 +64,7 @@ func TestGeneralCfgloadFromJsonCfg(t *testing.T) { RSRSep: ";", DefaultCaching: utils.MetaReload, Opts: &GeneralOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{}, + ExporterIDs: []*DynamicStringSliceOpt{}, }, } jsnCfg := NewDefaultCGRConfig() @@ -156,7 +156,7 @@ func TestGeneralCfgAsMapInterface(t *testing.T) { utils.DecimalPrecisionCfg: 0, utils.DecimalRoundingModeCfg: "*toNearestEven", utils.OptsCfg: map[string]any{ - utils.MetaExporterIDs: []*utils.DynamicStringSliceOpt{}, + utils.MetaExporterIDs: []*DynamicStringSliceOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -203,7 +203,7 @@ func TestGeneralCfgAsMapInterface1(t *testing.T) { utils.DecimalPrecisionCfg: 0, utils.DecimalRoundingModeCfg: "*toNearestEven", utils.OptsCfg: map[string]any{ - utils.MetaExporterIDs: []*utils.DynamicStringSliceOpt{}, + utils.MetaExporterIDs: []*DynamicStringSliceOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -233,7 +233,7 @@ func TestGeneralCfgClone(t *testing.T) { RSRSep: ";", DefaultCaching: utils.MetaReload, Opts: &GeneralOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{ + ExporterIDs: []*DynamicStringSliceOpt{ { Values: []string{"*ees"}, }, @@ -271,7 +271,7 @@ func TestDiffGeneralJsonCfg(t *testing.T) { RSRSep: "", DefaultCaching: utils.MetaClear, Opts: &GeneralOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{ + ExporterIDs: []*DynamicStringSliceOpt{ { Values: []string{"*ees"}, }, @@ -304,7 +304,7 @@ func TestDiffGeneralJsonCfg(t *testing.T) { DefaultCaching: utils.MetaReload, LockingTimeout: 2 * time.Second, Opts: &GeneralOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{ + ExporterIDs: []*DynamicStringSliceOpt{ { Values: []string{"*syslog"}, }, @@ -337,7 +337,7 @@ func TestDiffGeneralJsonCfg(t *testing.T) { Digest_equal: utils.StringPointer(":"), Max_parallel_conns: utils.IntPointer(100), Opts: &GeneralOptsJson{ - ExporterIDs: []*utils.DynamicStringSliceOpt{ + ExporterIDs: []*DynamicStringSliceOpt{ { Values: []string{"*syslog"}, }, @@ -407,7 +407,7 @@ func TestGeneralCfgCloneSection(t *testing.T) { RSRSep: "", DefaultCaching: utils.MetaClear, Opts: &GeneralOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{}, + ExporterIDs: []*DynamicStringSliceOpt{}, }, } diff --git a/utils/libdynamics.go b/config/libdynamics.go similarity index 84% rename from utils/libdynamics.go rename to config/libdynamics.go index e6d7b44d1..1d88a966e 100644 --- a/utils/libdynamics.go +++ b/config/libdynamics.go @@ -15,12 +15,14 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see */ -package utils +package config import ( "slices" + "strings" "time" + "github.com/cgrates/cgrates/utils" "github.com/ericlagergren/decimal" ) @@ -60,10 +62,11 @@ type DynamicDurationOpt struct { Value time.Duration } -type DynamicDecimalBigOpt struct { +type DynamicDecimalOpt struct { FilterIDs []string `json:",omitempty"` Tenant string - Value *decimal.Big + value *decimal.Big + dynVal RSRParsers } type DynamicInterfaceOpt struct { @@ -168,13 +171,13 @@ func CloneDynamicDurationOpt(in []*DynamicDurationOpt) (cl []*DynamicDurationOpt return } -func CloneDynamicDecimalBigOpt(in []*DynamicDecimalBigOpt) (cl []*DynamicDecimalBigOpt) { - cl = make([]*DynamicDecimalBigOpt, len(in)) +func CloneDynamicDecimalOpt(in []*DynamicDecimalOpt) (cl []*DynamicDecimalOpt) { + cl = make([]*DynamicDecimalOpt, len(in)) for i, val := range in { - cl[i] = &DynamicDecimalBigOpt{ + cl[i] = &DynamicDecimalOpt{ Tenant: val.Tenant, FilterIDs: slices.Clone(val.FilterIDs), - Value: CloneDecimalBig(val.Value), + value: utils.CloneDecimalBig(val.value), } } return @@ -186,7 +189,7 @@ func CloneDynamicIntPointerOpt(in []*DynamicIntPointerOpt) (cl []*DynamicIntPoin cl[i] = &DynamicIntPointerOpt{ Tenant: val.Tenant, FilterIDs: slices.Clone(val.FilterIDs), - Value: IntPointer(*val.Value), + Value: utils.IntPointer(*val.Value), } } return @@ -198,7 +201,7 @@ func CloneDynamicDurationPointerOpt(in []*DynamicDurationPointerOpt) (cl []*Dyna cl[i] = &DynamicDurationPointerOpt{ Tenant: val.Tenant, FilterIDs: slices.Clone(val.FilterIDs), - Value: DurationPointer(*val.Value), + Value: utils.DurationPointer(*val.Value), } } return @@ -312,7 +315,7 @@ func DynamicDurationOptEqual(v1, v2 []*DynamicDurationOpt) bool { return true } -func DynamicDecimalBigOptEqual(v1, v2 []*DynamicDecimalBigOpt) bool { +func DynamicDecimalOptEqual(v1, v2 []*DynamicDecimalOpt) bool { if len(v1) != len(v2) { return false } @@ -321,7 +324,7 @@ func DynamicDecimalBigOptEqual(v1, v2 []*DynamicDecimalBigOpt) bool { return false } if !slices.Equal(v1[i].FilterIDs, v2[i].FilterIDs) || - v1[i].Value.Cmp(v2[i].Value) != 0 { + v1[i].value.Cmp(v2[i].value) != 0 { return false } } @@ -382,27 +385,35 @@ func DynamicDurationPointerOptEqual(v1, v2 []*DynamicDurationPointerOpt) bool { return true } -func StringToDecimalBigDynamicOpts(strOpts []*DynamicStringOpt) (decOpts []*DynamicDecimalBigOpt, err error) { - decOpts = make([]*DynamicDecimalBigOpt, len(strOpts)) +func StringToDecimalBigDynamicOpts(strOpts []*DynamicStringOpt) (decOpts []*DynamicDecimalOpt, err error) { + decOpts = make([]*DynamicDecimalOpt, len(strOpts)) for index, opt := range strOpts { - decOpts[index] = &DynamicDecimalBigOpt{ + decOpts[index] = &DynamicDecimalOpt{ Tenant: opt.Tenant, FilterIDs: opt.FilterIDs, } - if decOpts[index].Value, err = StringAsBig(opt.Value); err != nil { + if strings.HasPrefix(opt.Value, utils.DynamicDataPrefix) { + decOpts[index].dynVal, err = NewRSRParsers(opt.Value, CgrConfig().GeneralCfg().RSRSep) + if err != nil { + return nil, err + } + continue + } + + if decOpts[index].value, err = utils.StringAsBig(opt.Value); err != nil { return } } return } -func DecimalBigToStringDynamicOpts(decOpts []*DynamicDecimalBigOpt) (strOpts []*DynamicStringOpt) { +func DecimalToStringDynamicOpts(decOpts []*DynamicDecimalOpt) (strOpts []*DynamicStringOpt) { strOpts = make([]*DynamicStringOpt, len(decOpts)) for index, opt := range decOpts { strOpts[index] = &DynamicStringOpt{ Tenant: opt.Tenant, FilterIDs: opt.FilterIDs, - Value: opt.Value.String(), + Value: opt.value.String(), } } return @@ -415,7 +426,7 @@ func StringToDurationDynamicOpts(strOpts []*DynamicStringOpt) (durOpts []*Dynami Tenant: opt.Tenant, FilterIDs: opt.FilterIDs, } - if durOpts[index].Value, err = ParseDurationWithNanosecs(opt.Value); err != nil { + if durOpts[index].Value, err = utils.ParseDurationWithNanosecs(opt.Value); err != nil { return } } @@ -440,7 +451,7 @@ func IntToIntPointerDynamicOpts(intOpts []*DynamicIntOpt) (intPtOpts []*DynamicI intPtOpts[index] = &DynamicIntPointerOpt{ Tenant: opt.Tenant, FilterIDs: opt.FilterIDs, - Value: IntPointer(opt.Value), + Value: utils.IntPointer(opt.Value), } } return @@ -462,13 +473,13 @@ func StringToDurationPointerDynamicOpts(strOpts []*DynamicStringOpt) (durPtOpts durPtOpts = make([]*DynamicDurationPointerOpt, len(strOpts)) for index, opt := range strOpts { var durOpt time.Duration - if durOpt, err = ParseDurationWithNanosecs(opt.Value); err != nil { + if durOpt, err = utils.ParseDurationWithNanosecs(opt.Value); err != nil { return } durPtOpts[index] = &DynamicDurationPointerOpt{ Tenant: opt.Tenant, FilterIDs: opt.FilterIDs, - Value: DurationPointer(durOpt), + Value: utils.DurationPointer(durOpt), } } return @@ -485,3 +496,23 @@ func DurationPointerToStringDynamicOpts(durPtOpts []*DynamicDurationPointerOpt) } return } + +func (dynDec *DynamicDecimalOpt) Value(dP utils.DataProvider) (*decimal.Big, error) { + if dynDec.value == nil { + out, err := dynDec.dynVal.ParseDataProvider(dP) + if err != nil { + return nil, err + } + return utils.StringAsBig(out) + } + return dynDec.value, nil +} + +func NewDynamicDecimalOpt(filterIDs []string, tenant string, value *decimal.Big, dynValue RSRParsers) *DynamicDecimalOpt { + return &DynamicDecimalOpt{ + FilterIDs: filterIDs, + Tenant: tenant, + value: value, + dynVal: dynValue, + } +} diff --git a/utils/libdynamics_test.go b/config/libdynamics_test.go similarity index 88% rename from utils/libdynamics_test.go rename to config/libdynamics_test.go index 0d7ef5bf9..259aa629a 100644 --- a/utils/libdynamics_test.go +++ b/config/libdynamics_test.go @@ -16,13 +16,14 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ -package utils +package config import ( "reflect" "testing" "time" + "github.com/cgrates/cgrates/utils" "github.com/ericlagergren/decimal" ) @@ -147,17 +148,11 @@ func TestCloneDynamicDurationOpt(t *testing.T) { } func TestCloneDynamicDecimalBigOpt(t *testing.T) { - in := []*DynamicDecimalBigOpt{ - { - Value: decimal.WithContext(DecimalContext).SetUint64(10), - FilterIDs: []string{"fltr1"}, - }, - { - Value: decimal.WithContext(DecimalContext).SetUint64(2), - FilterIDs: []string{"fltr2"}, - }, + in := []*DynamicDecimalOpt{ + NewDynamicDecimalOpt([]string{"fltr1"}, "", decimal.WithContext(utils.DecimalContext).SetUint64(10), nil), + NewDynamicDecimalOpt([]string{"fltr2"}, "", decimal.WithContext(utils.DecimalContext).SetUint64(2), nil), } - clone := CloneDynamicDecimalBigOpt(in) + clone := CloneDynamicDecimalOpt(in) if !reflect.DeepEqual(in, clone) { t.Error("Expected objects to match") } @@ -521,60 +516,36 @@ func TestDynamicDurationOptEquals(t *testing.T) { } func TestDynamicDecimalBigOptEquals(t *testing.T) { - v1 := []*DynamicDecimalBigOpt{ - { - Tenant: "cgrates.org", - Value: decimal.WithContext(DecimalContext).SetUint64(10), - FilterIDs: []string{"fltr1"}, - }, - { - Tenant: "cgrates.org", - Value: decimal.WithContext(DecimalContext).SetUint64(2), - FilterIDs: []string{"fltr2"}, - }, + v1 := []*DynamicDecimalOpt{ + NewDynamicDecimalOpt([]string{"fltr1"}, "cgrates.org", decimal.WithContext(utils.DecimalContext).SetUint64(10), nil), + NewDynamicDecimalOpt([]string{"fltr2"}, "cgrates.org", decimal.WithContext(utils.DecimalContext).SetUint64(2), nil), } - v2 := []*DynamicDecimalBigOpt{ - { - Tenant: "cgrates.org", - Value: decimal.WithContext(DecimalContext).SetUint64(10), - FilterIDs: []string{"fltr1"}, - }, - { - Tenant: "cgrates.org", - Value: decimal.WithContext(DecimalContext).SetUint64(2), - FilterIDs: []string{"fltr2"}, - }, + v2 := []*DynamicDecimalOpt{ + NewDynamicDecimalOpt([]string{"fltr1"}, "cgrates.org", decimal.WithContext(utils.DecimalContext).SetUint64(10), nil), + NewDynamicDecimalOpt([]string{"fltr2"}, "cgrates.org", decimal.WithContext(utils.DecimalContext).SetUint64(2), nil), } - if !DynamicDecimalBigOptEqual(v1, v2) { + if !DynamicDecimalOptEqual(v1, v2) { t.Error("Expected both slices to be the same") } - v1[0].Value = decimal.WithContext(DecimalContext).SetUint64(16) - if DynamicDecimalBigOptEqual(v1, v2) { - t.Error("Expected slices to differ") - } - //Test if different tenants v1[0].Tenant = "cgrates.net" - if DynamicDecimalBigOptEqual(v1, v2) { + if DynamicDecimalOptEqual(v1, v2) { t.Error("Expected slices to differ") } v1[0].Tenant = "cgrates.org" //Test if different filters v1[0].FilterIDs = append(v1[0].FilterIDs, "new_fltr") - if DynamicDecimalBigOptEqual(v1, v2) { + if DynamicDecimalOptEqual(v1, v2) { t.Error("Expected slices to differ") } //Test if different lengths - v1 = append(v1, &DynamicDecimalBigOpt{ - Value: decimal.WithContext(DecimalContext).SetUint64(10), - FilterIDs: []string{"fltr1"}, - }) - if DynamicDecimalBigOptEqual(v1, v2) { + v1 = append(v1, NewDynamicDecimalOpt([]string{"fltr1"}, "", decimal.WithContext(utils.DecimalContext).SetUint64(10), nil)) + if DynamicDecimalOptEqual(v1, v2) { t.Error("Expected slices to differ") } } @@ -647,12 +618,8 @@ func TestStringToDecimalBigDynamicOpts(t *testing.T) { }, } - exp := []*DynamicDecimalBigOpt{ - { - FilterIDs: []string{"fld1", "fld2"}, - Tenant: "cgrates.org", - Value: decimal.WithContext(DecimalContext).SetUint64(200), - }, + exp := []*DynamicDecimalOpt{ + NewDynamicDecimalOpt([]string{"fld1", "fld2"}, "cgrates.org", decimal.WithContext(utils.DecimalContext).SetUint64(200), nil), } rcv, err := StringToDecimalBigDynamicOpts(dsOpt) @@ -676,7 +643,7 @@ func TestDynamicIntPointerOptEqual(t *testing.T) { { FilterIDs: []string{"fld1", "fld2"}, Tenant: "cgrates.org", - Value: IntPointer(200), + Value: utils.IntPointer(200), }, } @@ -684,7 +651,7 @@ func TestDynamicIntPointerOptEqual(t *testing.T) { { FilterIDs: []string{"fld1", "fld2"}, Tenant: "cgrates.org", - Value: IntPointer(200), + Value: utils.IntPointer(200), }, } @@ -700,11 +667,11 @@ func TestDynamicIntPointerOptEqual(t *testing.T) { v1[0].Tenant = "cgrates.org" //Test if different values - v1[0].Value = IntPointer(500) + v1[0].Value = utils.IntPointer(500) if DynamicIntPointerOptEqual(v1, v2) { t.Error("Expected slices to differ") } - v1[0].Value = IntPointer(200) + v1[0].Value = utils.IntPointer(200) //Test if different filters v1[0].FilterIDs = append(v1[0].FilterIDs, "new_fltr") @@ -714,7 +681,7 @@ func TestDynamicIntPointerOptEqual(t *testing.T) { //Test if different lengths v1 = append(v1, &DynamicIntPointerOpt{ - Value: IntPointer(2), + Value: utils.IntPointer(2), FilterIDs: []string{"fltr1"}, }) if DynamicIntPointerOptEqual(v1, v2) { @@ -727,7 +694,7 @@ func TestDynamicDurationPointerOptEqual(t *testing.T) { { FilterIDs: []string{"fld3"}, Tenant: "cgrates.org", - Value: DurationPointer(3 * time.Second), + Value: utils.DurationPointer(3 * time.Second), }, } @@ -735,7 +702,7 @@ func TestDynamicDurationPointerOptEqual(t *testing.T) { { FilterIDs: []string{"fld3"}, Tenant: "cgrates.org", - Value: DurationPointer(3 * time.Second), + Value: utils.DurationPointer(3 * time.Second), }, } @@ -750,11 +717,11 @@ func TestDynamicDurationPointerOptEqual(t *testing.T) { v1[0].Tenant = "cgrates.org" //Test if different values - v1[0].Value = DurationPointer(4 * time.Second) + v1[0].Value = utils.DurationPointer(4 * time.Second) if DynamicDurationPointerOptEqual(v1, v2) { t.Error("Expected slices to differ") } - v1[0].Value = DurationPointer(3 * time.Second) + v1[0].Value = utils.DurationPointer(3 * time.Second) //Test if different filters v1[0].FilterIDs = append(v1[0].FilterIDs, "new_fltr") @@ -764,7 +731,7 @@ func TestDynamicDurationPointerOptEqual(t *testing.T) { //Test if different lengths v1 = append(v1, &DynamicDurationPointerOpt{ - Value: DurationPointer(2), + Value: utils.DurationPointer(2), FilterIDs: []string{"fltr1"}, }) if DynamicDurationPointerOptEqual(v1, v2) { @@ -773,12 +740,8 @@ func TestDynamicDurationPointerOptEqual(t *testing.T) { } func TestDecimalBigToStringDynamicOpts(t *testing.T) { - dbOpt := []*DynamicDecimalBigOpt{ - { - FilterIDs: []string{"test_filter", "test_filter2"}, - Tenant: "cgrates.org", - Value: decimal.WithContext(DecimalContext).SetUint64(300), - }, + dbOpt := []*DynamicDecimalOpt{ + NewDynamicDecimalOpt([]string{"test_filter", "test_filter2"}, "cgrates.org", decimal.WithContext(utils.DecimalContext).SetUint64(300), nil), } exp := []*DynamicStringOpt{ @@ -789,7 +752,7 @@ func TestDecimalBigToStringDynamicOpts(t *testing.T) { }, } - rcv := DecimalBigToStringDynamicOpts(dbOpt) + rcv := DecimalToStringDynamicOpts(dbOpt) if !reflect.DeepEqual(rcv, exp) { t.Errorf("Expected %v \n but received \n %v", exp, rcv) } @@ -864,7 +827,7 @@ func TestIntToIntPointerDynamicOpts(t *testing.T) { { FilterIDs: []string{"test_filter", "test_filter2"}, Tenant: "cgrates.org", - Value: IntPointer(50), + Value: utils.IntPointer(50), }, } @@ -887,7 +850,7 @@ func TestIntPointerToIntDynamicOpts(t *testing.T) { { FilterIDs: []string{"test_filter", "test_filter2"}, Tenant: "cgrates.org", - Value: IntPointer(50), + Value: utils.IntPointer(50), }, } @@ -910,7 +873,7 @@ func TestStringToDurationPointerDynamicOpts(t *testing.T) { { FilterIDs: []string{"test_filter", "test_filter2"}, Tenant: "cgrates.org", - Value: DurationPointer(50 * time.Second), + Value: utils.DurationPointer(50 * time.Second), }, } @@ -942,7 +905,7 @@ func TestDurationPointerToStringDynamicOpts(t *testing.T) { { FilterIDs: []string{"test_filter", "test_filter2"}, Tenant: "cgrates.org", - Value: DurationPointer(50 * time.Second), + Value: utils.DurationPointer(50 * time.Second), }, } @@ -957,7 +920,7 @@ func TestCloneDynamicIntPointerOpt(t *testing.T) { { FilterIDs: []string{"fld1", "fld2"}, Tenant: "cgrates.org", - Value: IntPointer(200), + Value: utils.IntPointer(200), }, } @@ -965,7 +928,7 @@ func TestCloneDynamicIntPointerOpt(t *testing.T) { { FilterIDs: []string{"fld1", "fld2"}, Tenant: "cgrates.org", - Value: IntPointer(200), + Value: utils.IntPointer(200), }, } @@ -980,7 +943,7 @@ func TestCloneDynamicDurationPointerOpt(t *testing.T) { { FilterIDs: []string{"test_filter", "test_filter2"}, Tenant: "cgrates.org", - Value: DurationPointer(50 * time.Second), + Value: utils.DurationPointer(50 * time.Second), }, } @@ -988,7 +951,7 @@ func TestCloneDynamicDurationPointerOpt(t *testing.T) { { FilterIDs: []string{"test_filter", "test_filter2"}, Tenant: "cgrates.org", - Value: DurationPointer(50 * time.Second), + Value: utils.DurationPointer(50 * time.Second), }, } diff --git a/config/multifiles_it_test.go b/config/multifiles_it_test.go index 654f9ef18..cc187e0c7 100644 --- a/config/multifiles_it_test.go +++ b/config/multifiles_it_test.go @@ -74,7 +74,7 @@ func TestMfEnvReaderITRead(t *testing.T) { RSRSep: ";", MaxParallelConns: 100, Opts: &GeneralOpts{ - ExporterIDs: []*utils.DynamicStringSliceOpt{}, + ExporterIDs: []*DynamicStringSliceOpt{}, }, } if !reflect.DeepEqual(expected, *mfCgrCfg.generalCfg) { diff --git a/config/ratescfg.go b/config/ratescfg.go index 6651c21ee..78dc1cc89 100644 --- a/config/ratescfg.go +++ b/config/ratescfg.go @@ -39,11 +39,11 @@ const ( ) type RatesOpts struct { - ProfileIDs []*utils.DynamicStringSliceOpt - StartTime []*utils.DynamicStringOpt - Usage []*utils.DynamicDecimalBigOpt - IntervalStart []*utils.DynamicDecimalBigOpt - ProfileIgnoreFilters []*utils.DynamicBoolOpt + ProfileIDs []*DynamicStringSliceOpt + StartTime []*DynamicStringOpt + Usage []*DynamicDecimalOpt + IntervalStart []*DynamicDecimalOpt + ProfileIgnoreFilters []*DynamicBoolOpt } // RateSCfg the rates config section @@ -87,15 +87,15 @@ func (rateOpts *RatesOpts) loadFromJSONCfg(jsnCfg *RatesOptsJson) (err error) { rateOpts.StartTime = append(rateOpts.StartTime, jsnCfg.StartTime...) } if jsnCfg.Usage != nil { - var usage []*utils.DynamicDecimalBigOpt - if usage, err = utils.StringToDecimalBigDynamicOpts(jsnCfg.Usage); err != nil { + var usage []*DynamicDecimalOpt + if usage, err = StringToDecimalBigDynamicOpts(jsnCfg.Usage); err != nil { return } rateOpts.Usage = append(rateOpts.Usage, usage...) } if jsnCfg.IntervalStart != nil { - var intervalStart []*utils.DynamicDecimalBigOpt - if intervalStart, err = utils.StringToDecimalBigDynamicOpts(jsnCfg.IntervalStart); err != nil { + var intervalStart []*DynamicDecimalOpt + if intervalStart, err = StringToDecimalBigDynamicOpts(jsnCfg.IntervalStart); err != nil { return } rateOpts.IntervalStart = append(rateOpts.IntervalStart, intervalStart...) @@ -220,25 +220,25 @@ func (RateSCfg) SName() string { return RateSJSON } func (rCfg RateSCfg) CloneSection() Section { return rCfg.Clone() } func (rateOpts *RatesOpts) Clone() *RatesOpts { - var ratePrfIDs []*utils.DynamicStringSliceOpt + var ratePrfIDs []*DynamicStringSliceOpt if rateOpts.ProfileIDs != nil { - ratePrfIDs = utils.CloneDynamicStringSliceOpt(rateOpts.ProfileIDs) + ratePrfIDs = CloneDynamicStringSliceOpt(rateOpts.ProfileIDs) } - var startTime []*utils.DynamicStringOpt + var startTime []*DynamicStringOpt if rateOpts.StartTime != nil { - startTime = utils.CloneDynamicStringOpt(rateOpts.StartTime) + startTime = CloneDynamicStringOpt(rateOpts.StartTime) } - var usage []*utils.DynamicDecimalBigOpt + var usage []*DynamicDecimalOpt if rateOpts.Usage != nil { - usage = utils.CloneDynamicDecimalBigOpt(rateOpts.Usage) + usage = CloneDynamicDecimalOpt(rateOpts.Usage) } - var intervalStart []*utils.DynamicDecimalBigOpt + var intervalStart []*DynamicDecimalOpt if rateOpts.IntervalStart != nil { - intervalStart = utils.CloneDynamicDecimalBigOpt(rateOpts.IntervalStart) + intervalStart = CloneDynamicDecimalOpt(rateOpts.IntervalStart) } - var profileIgnoreFilters []*utils.DynamicBoolOpt + var profileIgnoreFilters []*DynamicBoolOpt if rateOpts.ProfileIgnoreFilters != nil { - profileIgnoreFilters = utils.CloneDynamicBoolOpt(rateOpts.ProfileIgnoreFilters) + profileIgnoreFilters = CloneDynamicBoolOpt(rateOpts.ProfileIgnoreFilters) } return &RatesOpts{ ProfileIDs: ratePrfIDs, @@ -294,11 +294,11 @@ func (rCfg RateSCfg) Clone() (cln *RateSCfg) { } type RatesOptsJson struct { - ProfileIDs []*utils.DynamicStringSliceOpt `json:"*profileIDs"` - StartTime []*utils.DynamicStringOpt `json:"*startTime"` - Usage []*utils.DynamicStringOpt `json:"*usage"` - IntervalStart []*utils.DynamicStringOpt `json:"*intervalStart"` - ProfileIgnoreFilters []*utils.DynamicBoolOpt `json:"*profileIgnoreFilters"` + ProfileIDs []*DynamicStringSliceOpt `json:"*profileIDs"` + StartTime []*DynamicStringOpt `json:"*startTime"` + Usage []*DynamicStringOpt `json:"*usage"` + IntervalStart []*DynamicStringOpt `json:"*intervalStart"` + ProfileIgnoreFilters []*DynamicBoolOpt `json:"*profileIgnoreFilters"` } type RateSJsonCfg struct { @@ -325,19 +325,19 @@ func diffRatesOptsJsonCfg(d *RatesOptsJson, v1, v2 *RatesOpts) *RatesOptsJson { if d == nil { d = new(RatesOptsJson) } - if !utils.DynamicStringSliceOptEqual(v1.ProfileIDs, v2.ProfileIDs) { + if !DynamicStringSliceOptEqual(v1.ProfileIDs, v2.ProfileIDs) { d.ProfileIDs = v2.ProfileIDs } - if !utils.DynamicStringOptEqual(v1.StartTime, v2.StartTime) { + if !DynamicStringOptEqual(v1.StartTime, v2.StartTime) { d.StartTime = v2.StartTime } - if !utils.DynamicDecimalBigOptEqual(v1.Usage, v2.Usage) { - d.Usage = utils.DecimalBigToStringDynamicOpts(v2.Usage) + if !DynamicDecimalOptEqual(v1.Usage, v2.Usage) { + d.Usage = DecimalToStringDynamicOpts(v2.Usage) } - if !utils.DynamicDecimalBigOptEqual(v1.IntervalStart, v2.IntervalStart) { - d.IntervalStart = utils.DecimalBigToStringDynamicOpts(v2.IntervalStart) + if !DynamicDecimalOptEqual(v1.IntervalStart, v2.IntervalStart) { + d.IntervalStart = DecimalToStringDynamicOpts(v2.IntervalStart) } - if !utils.DynamicBoolOptEqual(v1.ProfileIgnoreFilters, v2.ProfileIgnoreFilters) { + if !DynamicBoolOptEqual(v1.ProfileIgnoreFilters, v2.ProfileIgnoreFilters) { d.ProfileIgnoreFilters = v2.ProfileIgnoreFilters } return d diff --git a/config/ratescfg_test.go b/config/ratescfg_test.go index 0503bf00d..4444c008d 100644 --- a/config/ratescfg_test.go +++ b/config/ratescfg_test.go @@ -63,11 +63,11 @@ func TestRateSConfigloadFromJsonCfg(t *testing.T) { RateNestedFields: true, Verbosity: 20, Opts: &RatesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - StartTime: []*utils.DynamicStringOpt{}, - Usage: []*utils.DynamicDecimalBigOpt{}, - IntervalStart: []*utils.DynamicDecimalBigOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + StartTime: []*DynamicStringOpt{}, + Usage: []*DynamicDecimalOpt{}, + IntervalStart: []*DynamicDecimalOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } jsonCfg := NewDefaultCGRConfig() @@ -102,11 +102,11 @@ func TestRatesCfgAsMapInterface(t *testing.T) { utils.RateNestedFieldsCfg: false, utils.Verbosity: 1000, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaStartTime: []*utils.DynamicStringOpt{}, - utils.MetaUsage: []*utils.DynamicDecimalBigOpt{}, - utils.MetaIntervalStartCfg: []*utils.DynamicDecimalBigOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaStartTime: []*DynamicStringOpt{}, + utils.MetaUsage: []*DynamicDecimalOpt{}, + utils.MetaIntervalStartCfg: []*DynamicDecimalOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -154,11 +154,11 @@ func TestRatesCfgAsMapInterface1(t *testing.T) { utils.RateNestedFieldsCfg: true, utils.Verbosity: 1000, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaStartTime: []*utils.DynamicStringOpt{}, - utils.MetaUsage: []*utils.DynamicDecimalBigOpt{}, - utils.MetaIntervalStartCfg: []*utils.DynamicDecimalBigOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaStartTime: []*DynamicStringOpt{}, + utils.MetaUsage: []*DynamicDecimalOpt{}, + utils.MetaIntervalStartCfg: []*DynamicDecimalOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -232,31 +232,25 @@ func TestDiffRateSJsonCfg(t *testing.T) { RateNestedFields: false, Verbosity: 2, Opts: &RatesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.org", Values: []string{"RP1"}, }, }, - StartTime: []*utils.DynamicStringOpt{ + StartTime: []*DynamicStringOpt{ { Tenant: "cgrates.org", Value: "", }, }, - Usage: []*utils.DynamicDecimalBigOpt{ - { - Tenant: "cgrates.org", - Value: decimal.WithContext(utils.DecimalContext).SetUint64(2), - }, + Usage: []*DynamicDecimalOpt{ + NewDynamicDecimalOpt(nil, "cgrates.org", decimal.WithContext(utils.DecimalContext).SetUint64(2), nil), }, - IntervalStart: []*utils.DynamicDecimalBigOpt{ - { - Tenant: "cgrates.org", - Value: decimal.WithContext(utils.DecimalContext).SetUint64(2), - }, + IntervalStart: []*DynamicDecimalOpt{ + NewDynamicDecimalOpt(nil, "cgrates.org", decimal.WithContext(utils.DecimalContext).SetUint64(2), nil), }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, @@ -279,33 +273,27 @@ func TestDiffRateSJsonCfg(t *testing.T) { RateNestedFields: true, Verbosity: 3, Opts: &RatesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { - Tenant: "cgrates.net", + Tenant: "cgrates.org", Values: []string{"RP2"}, }, }, - StartTime: []*utils.DynamicStringOpt{ + StartTime: []*DynamicStringOpt{ { - Tenant: "cgrates.net", + Tenant: "cgrates.org", Value: utils.MetaNow, }, }, - Usage: []*utils.DynamicDecimalBigOpt{ - { - Tenant: "cgrates.net", - Value: decimal.WithContext(utils.DecimalContext).SetUint64(3), - }, + Usage: []*DynamicDecimalOpt{ + NewDynamicDecimalOpt(nil, "cgrates.org", decimal.WithContext(utils.DecimalContext).SetUint64(3), nil), }, - IntervalStart: []*utils.DynamicDecimalBigOpt{ - { - Tenant: "cgrates.net", - Value: decimal.WithContext(utils.DecimalContext).SetUint64(3), - }, + IntervalStart: []*DynamicDecimalOpt{ + NewDynamicDecimalOpt(nil, "cgrates.org", decimal.WithContext(utils.DecimalContext).SetUint64(3), nil), }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { - Tenant: "cgrates.net", + Tenant: "cgrates.org", Value: true, }, }, @@ -326,33 +314,33 @@ func TestDiffRateSJsonCfg(t *testing.T) { Rate_nested_fields: utils.BoolPointer(true), Verbosity: utils.IntPointer(3), Opts: &RatesOptsJson{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { - Tenant: "cgrates.net", + Tenant: "cgrates.org", Values: []string{"RP2"}, }, }, - StartTime: []*utils.DynamicStringOpt{ + StartTime: []*DynamicStringOpt{ { - Tenant: "cgrates.net", + Tenant: "cgrates.org", Value: utils.MetaNow, }, }, - Usage: []*utils.DynamicStringOpt{ + Usage: []*DynamicStringOpt{ { - Tenant: "cgrates.net", + Tenant: "cgrates.org", Value: "3", }, }, - IntervalStart: []*utils.DynamicStringOpt{ + IntervalStart: []*DynamicStringOpt{ { - Tenant: "cgrates.net", + Tenant: "cgrates.org", Value: "3", }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { - Tenant: "cgrates.net", + Tenant: "cgrates.org", Value: true, }, }, @@ -389,7 +377,7 @@ func TestRateSCloneSection(t *testing.T) { RateNestedFields: false, Verbosity: 2, Opts: &RatesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Values: []string{"RP1"}, }, @@ -411,7 +399,7 @@ func TestRateSCloneSection(t *testing.T) { RateNestedFields: false, Verbosity: 2, Opts: &RatesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Values: []string{"RP1"}, }, @@ -427,27 +415,23 @@ func TestRateSCloneSection(t *testing.T) { func TestRatesOptsLoadFromJSON(t *testing.T) { rateOpts := &RatesOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Values: []string{}, }, }, - StartTime: []*utils.DynamicStringOpt{ + StartTime: []*DynamicStringOpt{ { Value: utils.MetaNow, }, }, - Usage: []*utils.DynamicDecimalBigOpt{ - { - Value: nil, - }, + Usage: []*DynamicDecimalOpt{ + {}, }, - IntervalStart: []*utils.DynamicDecimalBigOpt{ - { - Value: nil, - }, + IntervalStart: []*DynamicDecimalOpt{ + {}, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Value: false, }, @@ -460,13 +444,13 @@ func TestRatesOptsLoadFromJSON(t *testing.T) { } jsnCfg := &RatesOptsJson{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.org", Values: []string{"RP2"}, }, }, - Usage: []*utils.DynamicStringOpt{ + Usage: []*DynamicStringOpt{ { Tenant: "cgrates.org", Value: "error", @@ -479,7 +463,7 @@ func TestRatesOptsLoadFromJSON(t *testing.T) { } jsnCfg = &RatesOptsJson{ - IntervalStart: []*utils.DynamicStringOpt{ + IntervalStart: []*DynamicStringOpt{ { Tenant: "cgrates.org", Value: "error", diff --git a/config/resourcescfg.go b/config/resourcescfg.go index 0dcaff086..d1a3e84b1 100644 --- a/config/resourcescfg.go +++ b/config/resourcescfg.go @@ -33,9 +33,9 @@ const ( ) type ResourcesOpts struct { - UsageID []*utils.DynamicStringOpt - UsageTTL []*utils.DynamicDurationOpt - Units []*utils.DynamicFloat64Opt + UsageID []*DynamicStringOpt + UsageTTL []*DynamicDurationOpt + Units []*DynamicFloat64Opt } // ResourceSConfig is resorces section config @@ -70,8 +70,8 @@ func (rsOpts *ResourcesOpts) loadFromJSONCfg(jsnCfg *ResourcesOptsJson) (err err rsOpts.UsageID = append(rsOpts.UsageID, jsnCfg.UsageID...) } if jsnCfg.UsageTTL != nil { - var usageTTL []*utils.DynamicDurationOpt - if usageTTL, err = utils.StringToDurationDynamicOpts(jsnCfg.UsageTTL); err != nil { + var usageTTL []*DynamicDurationOpt + if usageTTL, err = StringToDurationDynamicOpts(jsnCfg.UsageTTL); err != nil { return } rsOpts.UsageTTL = append(rsOpts.UsageTTL, usageTTL...) @@ -166,17 +166,17 @@ func (ResourceSConfig) SName() string { return ResourceSJSON } func (rlcfg ResourceSConfig) CloneSection() Section { return rlcfg.Clone() } func (rsOpts *ResourcesOpts) Clone() (cln *ResourcesOpts) { - var usageID []*utils.DynamicStringOpt + var usageID []*DynamicStringOpt if rsOpts.UsageID != nil { - usageID = utils.CloneDynamicStringOpt(rsOpts.UsageID) + usageID = CloneDynamicStringOpt(rsOpts.UsageID) } - var usageTTL []*utils.DynamicDurationOpt + var usageTTL []*DynamicDurationOpt if rsOpts.UsageTTL != nil { - usageTTL = utils.CloneDynamicDurationOpt(rsOpts.UsageTTL) + usageTTL = CloneDynamicDurationOpt(rsOpts.UsageTTL) } - var units []*utils.DynamicFloat64Opt + var units []*DynamicFloat64Opt if rsOpts.Units != nil { - units = utils.CloneDynamicFloat64Opt(rsOpts.Units) + units = CloneDynamicFloat64Opt(rsOpts.Units) } cln = &ResourcesOpts{ UsageID: usageID, @@ -218,9 +218,9 @@ func (rlcfg ResourceSConfig) Clone() (cln *ResourceSConfig) { } type ResourcesOptsJson struct { - UsageID []*utils.DynamicStringOpt `json:"*usageID"` - UsageTTL []*utils.DynamicStringOpt `json:"*usageTTL"` - Units []*utils.DynamicFloat64Opt `json:"*units"` + UsageID []*DynamicStringOpt `json:"*usageID"` + UsageTTL []*DynamicStringOpt `json:"*usageTTL"` + Units []*DynamicFloat64Opt `json:"*units"` } // ResourceLimiter service config section @@ -242,13 +242,13 @@ func diffResourcesOptsJsonCfg(d *ResourcesOptsJson, v1, v2 *ResourcesOpts) *Reso if d == nil { d = new(ResourcesOptsJson) } - if !utils.DynamicStringOptEqual(v1.UsageID, v2.UsageID) { + if !DynamicStringOptEqual(v1.UsageID, v2.UsageID) { d.UsageID = v2.UsageID } - if !utils.DynamicDurationOptEqual(v1.UsageTTL, v2.UsageTTL) { - d.UsageTTL = utils.DurationToStringDynamicOpts(v2.UsageTTL) + if !DynamicDurationOptEqual(v1.UsageTTL, v2.UsageTTL) { + d.UsageTTL = DurationToStringDynamicOpts(v2.UsageTTL) } - if !utils.DynamicFloat64OptEqual(v1.Units, v2.Units) { + if !DynamicFloat64OptEqual(v1.Units, v2.Units) { d.Units = v2.Units } return d diff --git a/config/resourcescfg_test.go b/config/resourcescfg_test.go index 0f5c8b494..ec2493dd2 100644 --- a/config/resourcescfg_test.go +++ b/config/resourcescfg_test.go @@ -50,9 +50,9 @@ func TestResourceSConfigloadFromJsonCfgCase1(t *testing.T) { NotExistsIndexedFields: &[]string{"*req.index1"}, NestedFields: true, Opts: &ResourcesOpts{ - UsageID: []*utils.DynamicStringOpt{}, - UsageTTL: []*utils.DynamicDurationOpt{}, - Units: []*utils.DynamicFloat64Opt{}, + UsageID: []*DynamicStringOpt{}, + UsageTTL: []*DynamicDurationOpt{}, + Units: []*DynamicFloat64Opt{}, }, } cfg := NewDefaultCGRConfig() @@ -69,17 +69,17 @@ func TestResourceSConfigloadFromJsonCfgCase1(t *testing.T) { func TestResourceSLoadFromJSONOpts(t *testing.T) { resOpts := &ResourcesOpts{ - UsageID: []*utils.DynamicStringOpt{ + UsageID: []*DynamicStringOpt{ { Value: utils.EmptyString, }, }, - UsageTTL: []*utils.DynamicDurationOpt{ + UsageTTL: []*DynamicDurationOpt{ { Value: 72 * time.Hour, }, }, - Units: []*utils.DynamicFloat64Opt{ + Units: []*DynamicFloat64Opt{ { Value: 1, }, @@ -87,19 +87,19 @@ func TestResourceSLoadFromJSONOpts(t *testing.T) { } resOptsJson := &ResourcesOptsJson{ - UsageID: []*utils.DynamicStringOpt{ + UsageID: []*DynamicStringOpt{ { Tenant: "cgrates.org", Value: "usg2", }, }, - UsageTTL: []*utils.DynamicStringOpt{ + UsageTTL: []*DynamicStringOpt{ { Tenant: "cgrates.org", Value: "error", }, }, - Units: []*utils.DynamicFloat64Opt{ + Units: []*DynamicFloat64Opt{ { Tenant: "cgrates.org", Value: 2.5, @@ -142,9 +142,9 @@ func TestResourceSConfigAsMapInterface(t *testing.T) { utils.NotExistsIndexedFieldsCfg: []string{}, utils.NestedFieldsCfg: false, utils.OptsCfg: map[string]any{ - utils.MetaUsageIDCfg: []*utils.DynamicStringOpt{}, - utils.MetaUsageTTLCfg: []*utils.DynamicDurationOpt{}, - utils.MetaUnitsCfg: []*utils.DynamicFloat64Opt{}, + utils.MetaUsageIDCfg: []*DynamicStringOpt{}, + utils.MetaUsageTTLCfg: []*DynamicDurationOpt{}, + utils.MetaUnitsCfg: []*DynamicFloat64Opt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -181,9 +181,9 @@ func TestResourceSConfigAsMapInterface1(t *testing.T) { utils.NotExistsIndexedFieldsCfg: []string{"*req.prefix_indexed_fields1"}, utils.NestedFieldsCfg: true, utils.OptsCfg: map[string]any{ - utils.MetaUsageIDCfg: []*utils.DynamicStringOpt{}, - utils.MetaUsageTTLCfg: []*utils.DynamicDurationOpt{}, - utils.MetaUnitsCfg: []*utils.DynamicFloat64Opt{}, + utils.MetaUsageIDCfg: []*DynamicStringOpt{}, + utils.MetaUsageTTLCfg: []*DynamicDurationOpt{}, + utils.MetaUnitsCfg: []*DynamicFloat64Opt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -236,17 +236,17 @@ func TestDiffResourceSJsonCfg(t *testing.T) { SuffixIndexedFields: &[]string{"*req.index3"}, NestedFields: false, Opts: &ResourcesOpts{ - UsageID: []*utils.DynamicStringOpt{ + UsageID: []*DynamicStringOpt{ { Value: "usg1", }, }, - UsageTTL: []*utils.DynamicDurationOpt{ + UsageTTL: []*DynamicDurationOpt{ { Value: time.Second, }, }, - Units: []*utils.DynamicFloat64Opt{ + Units: []*DynamicFloat64Opt{ { Value: 1, }, @@ -264,17 +264,17 @@ func TestDiffResourceSJsonCfg(t *testing.T) { SuffixIndexedFields: &[]string{"*req.index33"}, NestedFields: true, Opts: &ResourcesOpts{ - UsageID: []*utils.DynamicStringOpt{ + UsageID: []*DynamicStringOpt{ { Value: "usg2", }, }, - UsageTTL: []*utils.DynamicDurationOpt{ + UsageTTL: []*DynamicDurationOpt{ { Value: time.Minute, }, }, - Units: []*utils.DynamicFloat64Opt{ + Units: []*DynamicFloat64Opt{ { Value: 2, }, @@ -292,17 +292,17 @@ func TestDiffResourceSJsonCfg(t *testing.T) { Suffix_indexed_fields: &[]string{"*req.index33"}, Nested_fields: utils.BoolPointer(true), Opts: &ResourcesOptsJson{ - UsageID: []*utils.DynamicStringOpt{ + UsageID: []*DynamicStringOpt{ { Value: "usg2", }, }, - UsageTTL: []*utils.DynamicStringOpt{ + UsageTTL: []*DynamicStringOpt{ { Value: "1m0s", }, }, - Units: []*utils.DynamicFloat64Opt{ + Units: []*DynamicFloat64Opt{ { Value: 2, }, @@ -336,17 +336,17 @@ func TestResourcesCloneSection(t *testing.T) { SuffixIndexedFields: &[]string{"*req.index3"}, NestedFields: false, Opts: &ResourcesOpts{ - UsageID: []*utils.DynamicStringOpt{ + UsageID: []*DynamicStringOpt{ { Value: "usg1", }, }, - UsageTTL: []*utils.DynamicDurationOpt{ + UsageTTL: []*DynamicDurationOpt{ { Value: time.Second, }, }, - Units: []*utils.DynamicFloat64Opt{ + Units: []*DynamicFloat64Opt{ { Value: 1, }, @@ -364,17 +364,17 @@ func TestResourcesCloneSection(t *testing.T) { SuffixIndexedFields: &[]string{"*req.index3"}, NestedFields: false, Opts: &ResourcesOpts{ - UsageID: []*utils.DynamicStringOpt{ + UsageID: []*DynamicStringOpt{ { Value: "usg1", }, }, - UsageTTL: []*utils.DynamicDurationOpt{ + UsageTTL: []*DynamicDurationOpt{ { Value: time.Second, }, }, - Units: []*utils.DynamicFloat64Opt{ + Units: []*DynamicFloat64Opt{ { Value: 1, }, diff --git a/config/routescfg.go b/config/routescfg.go index 5affc4016..d3b22a9a3 100644 --- a/config/routescfg.go +++ b/config/routescfg.go @@ -39,14 +39,14 @@ const ( ) type RoutesOpts struct { - Context []*utils.DynamicStringOpt - IgnoreErrors []*utils.DynamicBoolOpt - MaxCost []*utils.DynamicInterfaceOpt - Limit []*utils.DynamicIntPointerOpt - Offset []*utils.DynamicIntPointerOpt - MaxItems []*utils.DynamicIntPointerOpt - ProfileCount []*utils.DynamicIntPointerOpt - Usage []*utils.DynamicDecimalBigOpt + Context []*DynamicStringOpt + IgnoreErrors []*DynamicBoolOpt + MaxCost []*DynamicInterfaceOpt + Limit []*DynamicIntPointerOpt + Offset []*DynamicIntPointerOpt + MaxItems []*DynamicIntPointerOpt + ProfileCount []*DynamicIntPointerOpt + Usage []*DynamicDecimalOpt } // RouteSCfg is the configuration of route service @@ -91,20 +91,20 @@ func (rtsOpts *RoutesOpts) loadFromJSONCfg(jsnCfg *RoutesOptsJson) (err error) { rtsOpts.MaxCost = append(rtsOpts.MaxCost, jsnCfg.MaxCost...) } if jsnCfg.Limit != nil { - rtsOpts.Limit = append(rtsOpts.Limit, utils.IntToIntPointerDynamicOpts(jsnCfg.Limit)...) + rtsOpts.Limit = append(rtsOpts.Limit, IntToIntPointerDynamicOpts(jsnCfg.Limit)...) } if jsnCfg.Offset != nil { - rtsOpts.Offset = append(rtsOpts.Offset, utils.IntToIntPointerDynamicOpts(jsnCfg.Offset)...) + rtsOpts.Offset = append(rtsOpts.Offset, IntToIntPointerDynamicOpts(jsnCfg.Offset)...) } if jsnCfg.MaxItems != nil { - rtsOpts.MaxItems = append(rtsOpts.MaxItems, utils.IntToIntPointerDynamicOpts(jsnCfg.MaxItems)...) + rtsOpts.MaxItems = append(rtsOpts.MaxItems, IntToIntPointerDynamicOpts(jsnCfg.MaxItems)...) } if jsnCfg.ProfileCount != nil { - rtsOpts.ProfileCount = append(rtsOpts.ProfileCount, utils.IntToIntPointerDynamicOpts(jsnCfg.ProfileCount)...) + rtsOpts.ProfileCount = append(rtsOpts.ProfileCount, IntToIntPointerDynamicOpts(jsnCfg.ProfileCount)...) } if jsnCfg.Usage != nil { - var usage []*utils.DynamicDecimalBigOpt - if usage, err = utils.StringToDecimalBigDynamicOpts(jsnCfg.Usage); err != nil { + var usage []*DynamicDecimalOpt + if usage, err = StringToDecimalBigDynamicOpts(jsnCfg.Usage); err != nil { return } rtsOpts.Usage = append(rtsOpts.Usage, usage...) @@ -164,37 +164,37 @@ func (rts *RouteSCfg) loadFromJSONCfg(jsnCfg *RouteSJsonCfg) (err error) { return } func (rts *RoutesOpts) Clone() (cln *RoutesOpts) { - var context []*utils.DynamicStringOpt + var context []*DynamicStringOpt if rts.Context != nil { - context = utils.CloneDynamicStringOpt(rts.Context) + context = CloneDynamicStringOpt(rts.Context) } - var ignoreErrors []*utils.DynamicBoolOpt + var ignoreErrors []*DynamicBoolOpt if rts.IgnoreErrors != nil { - ignoreErrors = utils.CloneDynamicBoolOpt(rts.IgnoreErrors) + ignoreErrors = CloneDynamicBoolOpt(rts.IgnoreErrors) } - var maxCost []*utils.DynamicInterfaceOpt + var maxCost []*DynamicInterfaceOpt if rts.MaxCost != nil { - maxCost = utils.CloneDynamicInterfaceOpt(rts.MaxCost) + maxCost = CloneDynamicInterfaceOpt(rts.MaxCost) } - var profileCount []*utils.DynamicIntPointerOpt + var profileCount []*DynamicIntPointerOpt if rts.ProfileCount != nil { - profileCount = utils.CloneDynamicIntPointerOpt(rts.ProfileCount) + profileCount = CloneDynamicIntPointerOpt(rts.ProfileCount) } - var limit []*utils.DynamicIntPointerOpt + var limit []*DynamicIntPointerOpt if rts.Limit != nil { - limit = utils.CloneDynamicIntPointerOpt(rts.Limit) + limit = CloneDynamicIntPointerOpt(rts.Limit) } - var offset []*utils.DynamicIntPointerOpt + var offset []*DynamicIntPointerOpt if rts.Offset != nil { - offset = utils.CloneDynamicIntPointerOpt(rts.Offset) + offset = CloneDynamicIntPointerOpt(rts.Offset) } - var maxItems []*utils.DynamicIntPointerOpt + var maxItems []*DynamicIntPointerOpt if rts.MaxItems != nil { - maxItems = utils.CloneDynamicIntPointerOpt(rts.MaxItems) + maxItems = CloneDynamicIntPointerOpt(rts.MaxItems) } - var usage []*utils.DynamicDecimalBigOpt + var usage []*DynamicDecimalOpt if rts.Usage != nil { - usage = utils.CloneDynamicDecimalBigOpt(rts.Usage) + usage = CloneDynamicDecimalOpt(rts.Usage) } cln = &RoutesOpts{ Context: context, @@ -308,14 +308,14 @@ func (rts RouteSCfg) Clone() (cln *RouteSCfg) { } type RoutesOptsJson struct { - Context []*utils.DynamicStringOpt `json:"*context"` - IgnoreErrors []*utils.DynamicBoolOpt `json:"*ignoreErrors"` - MaxCost []*utils.DynamicInterfaceOpt `json:"*maxCost"` - Limit []*utils.DynamicIntOpt `json:"*limit"` - Offset []*utils.DynamicIntOpt `json:"*offset"` - MaxItems []*utils.DynamicIntOpt `json:"*maxItems"` - ProfileCount []*utils.DynamicIntOpt `json:"*profileCount"` - Usage []*utils.DynamicStringOpt `json:"*usage"` + Context []*DynamicStringOpt `json:"*context"` + IgnoreErrors []*DynamicBoolOpt `json:"*ignoreErrors"` + MaxCost []*DynamicInterfaceOpt `json:"*maxCost"` + Limit []*DynamicIntOpt `json:"*limit"` + Offset []*DynamicIntOpt `json:"*offset"` + MaxItems []*DynamicIntOpt `json:"*maxItems"` + ProfileCount []*DynamicIntOpt `json:"*profileCount"` + Usage []*DynamicStringOpt `json:"*usage"` } // Route service config section @@ -341,29 +341,29 @@ func diffRoutesOptsJsonCfg(d *RoutesOptsJson, v1, v2 *RoutesOpts) *RoutesOptsJso if d == nil { d = new(RoutesOptsJson) } - if !utils.DynamicStringOptEqual(v1.Context, v2.Context) { + if !DynamicStringOptEqual(v1.Context, v2.Context) { d.Context = v2.Context } - if !utils.DynamicIntPointerOptEqual(v1.Limit, v2.Limit) { - d.Limit = utils.IntPointerToIntDynamicOpts(v2.Limit) + if !DynamicIntPointerOptEqual(v1.Limit, v2.Limit) { + d.Limit = IntPointerToIntDynamicOpts(v2.Limit) } - if !utils.DynamicIntPointerOptEqual(v1.Offset, v2.Offset) { - d.Offset = utils.IntPointerToIntDynamicOpts(v2.Offset) + if !DynamicIntPointerOptEqual(v1.Offset, v2.Offset) { + d.Offset = IntPointerToIntDynamicOpts(v2.Offset) } - if !utils.DynamicIntPointerOptEqual(v1.MaxItems, v2.MaxItems) { - d.MaxItems = utils.IntPointerToIntDynamicOpts(v2.MaxItems) + if !DynamicIntPointerOptEqual(v1.MaxItems, v2.MaxItems) { + d.MaxItems = IntPointerToIntDynamicOpts(v2.MaxItems) } - if !utils.DynamicInterfaceOptEqual(v1.MaxCost, v2.MaxCost) { + if !DynamicInterfaceOptEqual(v1.MaxCost, v2.MaxCost) { d.MaxCost = v2.MaxCost } - if !utils.DynamicBoolOptEqual(v1.IgnoreErrors, v2.IgnoreErrors) { + if !DynamicBoolOptEqual(v1.IgnoreErrors, v2.IgnoreErrors) { d.IgnoreErrors = v2.IgnoreErrors } - if !utils.DynamicIntPointerOptEqual(v1.ProfileCount, v2.ProfileCount) { - d.ProfileCount = utils.IntPointerToIntDynamicOpts(v2.ProfileCount) + if !DynamicIntPointerOptEqual(v1.ProfileCount, v2.ProfileCount) { + d.ProfileCount = IntPointerToIntDynamicOpts(v2.ProfileCount) } - if !utils.DynamicDecimalBigOptEqual(v1.Usage, v2.Usage) { - d.Usage = utils.DecimalBigToStringDynamicOpts(v2.Usage) + if !DynamicDecimalOptEqual(v1.Usage, v2.Usage) { + d.Usage = DecimalToStringDynamicOpts(v2.Usage) } return d } diff --git a/config/routescfg_test.go b/config/routescfg_test.go index 66de771e2..f56b7e5d5 100644 --- a/config/routescfg_test.go +++ b/config/routescfg_test.go @@ -59,14 +59,14 @@ func TestRouteSCfgloadFromJsonCfg(t *testing.T) { DefaultRatio: 10, NestedFields: true, Opts: &RoutesOpts{ - Context: []*utils.DynamicStringOpt{}, - ProfileCount: []*utils.DynamicIntPointerOpt{}, - IgnoreErrors: []*utils.DynamicBoolOpt{}, - MaxCost: []*utils.DynamicInterfaceOpt{}, - Limit: []*utils.DynamicIntPointerOpt{}, - Offset: []*utils.DynamicIntPointerOpt{}, - MaxItems: []*utils.DynamicIntPointerOpt{}, - Usage: []*utils.DynamicDecimalBigOpt{}, + Context: []*DynamicStringOpt{}, + ProfileCount: []*DynamicIntPointerOpt{}, + IgnoreErrors: []*DynamicBoolOpt{}, + MaxCost: []*DynamicInterfaceOpt{}, + Limit: []*DynamicIntPointerOpt{}, + Offset: []*DynamicIntPointerOpt{}, + MaxItems: []*DynamicIntPointerOpt{}, + Usage: []*DynamicDecimalOpt{}, }, } jsonCfg := NewDefaultCGRConfig() @@ -76,7 +76,7 @@ func TestRouteSCfgloadFromJsonCfg(t *testing.T) { t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(expected), utils.ToJSON(jsonCfg.routeSCfg)) } - cfgJSON.Opts.Usage = []*utils.DynamicStringOpt{ + cfgJSON.Opts.Usage = []*DynamicStringOpt{ { Tenant: "cgrates.org", Value: "error", @@ -119,14 +119,14 @@ func TestRouteSCfgAsMapInterface(t *testing.T) { utils.AccountSConnsCfg: []string{}, utils.DefaultRatioCfg: 1, utils.OptsCfg: map[string]any{ - utils.OptsContext: []*utils.DynamicStringOpt{}, - utils.MetaLimitCfg: []*utils.DynamicIntPointerOpt{}, - utils.MetaOffsetCfg: []*utils.DynamicIntPointerOpt{}, - utils.MetaMaxItemsCfg: []*utils.DynamicIntPointerOpt{}, - utils.MetaProfileCountCfg: []*utils.DynamicIntPointerOpt{}, - utils.MetaIgnoreErrorsCfg: []*utils.DynamicBoolOpt{}, - utils.MetaMaxCostCfg: []*utils.DynamicInterfaceOpt{}, - utils.MetaUsage: []*utils.DynamicDecimalBigOpt{}, + utils.OptsContext: []*DynamicStringOpt{}, + utils.MetaLimitCfg: []*DynamicIntPointerOpt{}, + utils.MetaOffsetCfg: []*DynamicIntPointerOpt{}, + utils.MetaMaxItemsCfg: []*DynamicIntPointerOpt{}, + utils.MetaProfileCountCfg: []*DynamicIntPointerOpt{}, + utils.MetaIgnoreErrorsCfg: []*DynamicBoolOpt{}, + utils.MetaMaxCostCfg: []*DynamicInterfaceOpt{}, + utils.MetaUsage: []*DynamicDecimalOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -171,14 +171,14 @@ func TestRouteSCfgAsMapInterface1(t *testing.T) { utils.AccountSConnsCfg: []string{utils.MetaInternal, "conn1"}, utils.DefaultRatioCfg: 2, utils.OptsCfg: map[string]any{ - utils.OptsContext: []*utils.DynamicStringOpt{}, - utils.MetaLimitCfg: []*utils.DynamicIntPointerOpt{}, - utils.MetaOffsetCfg: []*utils.DynamicIntPointerOpt{}, - utils.MetaMaxItemsCfg: []*utils.DynamicIntPointerOpt{}, - utils.MetaProfileCountCfg: []*utils.DynamicIntPointerOpt{}, - utils.MetaIgnoreErrorsCfg: []*utils.DynamicBoolOpt{}, - utils.MetaMaxCostCfg: []*utils.DynamicInterfaceOpt{}, - utils.MetaUsage: []*utils.DynamicDecimalBigOpt{}, + utils.OptsContext: []*DynamicStringOpt{}, + utils.MetaLimitCfg: []*DynamicIntPointerOpt{}, + utils.MetaOffsetCfg: []*DynamicIntPointerOpt{}, + utils.MetaMaxItemsCfg: []*DynamicIntPointerOpt{}, + utils.MetaProfileCountCfg: []*DynamicIntPointerOpt{}, + utils.MetaIgnoreErrorsCfg: []*DynamicBoolOpt{}, + utils.MetaMaxCostCfg: []*DynamicInterfaceOpt{}, + utils.MetaUsage: []*DynamicDecimalOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -245,43 +245,40 @@ func TestDiffRouteSJsonCfg(t *testing.T) { AccountSConns: []string{"*localhost"}, DefaultRatio: 2, Opts: &RoutesOpts{ - Context: []*utils.DynamicStringOpt{ + Context: []*DynamicStringOpt{ { Value: utils.MetaAny, }, }, - IgnoreErrors: []*utils.DynamicBoolOpt{ + IgnoreErrors: []*DynamicBoolOpt{ { Value: true, }, }, - MaxCost: []*utils.DynamicInterfaceOpt{ + MaxCost: []*DynamicInterfaceOpt{ { Value: 5, }, }, - Limit: []*utils.DynamicIntPointerOpt{ + Limit: []*DynamicIntPointerOpt{ { Value: utils.IntPointer(2), }, }, - Offset: []*utils.DynamicIntPointerOpt{ + Offset: []*DynamicIntPointerOpt{ { Value: utils.IntPointer(2), }, }, - ProfileCount: []*utils.DynamicIntPointerOpt{ + ProfileCount: []*DynamicIntPointerOpt{ { Value: utils.IntPointer(1), }, }, - Usage: []*utils.DynamicDecimalBigOpt{ - { - Tenant: "cgrates.net", - Value: decimal.WithContext(utils.DecimalContext).SetUint64(3), - }, + Usage: []*DynamicDecimalOpt{ + NewDynamicDecimalOpt(nil, "cgrates.org", decimal.WithContext(utils.DecimalContext).SetUint64(3), nil), }, - MaxItems: []*utils.DynamicIntPointerOpt{ + MaxItems: []*DynamicIntPointerOpt{ { FilterIDs: []string{"id1"}, Tenant: "cgrates.net", @@ -305,43 +302,40 @@ func TestDiffRouteSJsonCfg(t *testing.T) { AccountSConns: []string{"*birpc"}, DefaultRatio: 3, Opts: &RoutesOpts{ - Context: []*utils.DynamicStringOpt{ + Context: []*DynamicStringOpt{ { Value: utils.MetaSessionS, }, }, - IgnoreErrors: []*utils.DynamicBoolOpt{ + IgnoreErrors: []*DynamicBoolOpt{ { Value: false, }, }, - MaxCost: []*utils.DynamicInterfaceOpt{ + MaxCost: []*DynamicInterfaceOpt{ { Value: 6, }, }, - Limit: []*utils.DynamicIntPointerOpt{ + Limit: []*DynamicIntPointerOpt{ { Value: utils.IntPointer(3), }, }, - Offset: []*utils.DynamicIntPointerOpt{ + Offset: []*DynamicIntPointerOpt{ { Value: utils.IntPointer(3), }, }, - ProfileCount: []*utils.DynamicIntPointerOpt{ + ProfileCount: []*DynamicIntPointerOpt{ { Value: utils.IntPointer(2), }, }, - Usage: []*utils.DynamicDecimalBigOpt{ - { - Tenant: "cgrates.org", - Value: decimal.WithContext(utils.DecimalContext).SetUint64(2), - }, + Usage: []*DynamicDecimalOpt{ + NewDynamicDecimalOpt(nil, "cgrates.org", decimal.WithContext(utils.DecimalContext).SetUint64(2), nil), }, - MaxItems: []*utils.DynamicIntPointerOpt{ + MaxItems: []*DynamicIntPointerOpt{ { FilterIDs: []string{"id2"}, Tenant: "cgrates.org", @@ -365,43 +359,43 @@ func TestDiffRouteSJsonCfg(t *testing.T) { Accounts_conns: &[]string{"*birpc"}, Default_ratio: utils.IntPointer(3), Opts: &RoutesOptsJson{ - Context: []*utils.DynamicStringOpt{ + Context: []*DynamicStringOpt{ { Value: utils.MetaSessionS, }, }, - IgnoreErrors: []*utils.DynamicBoolOpt{ + IgnoreErrors: []*DynamicBoolOpt{ { Value: false, }, }, - MaxCost: []*utils.DynamicInterfaceOpt{ + MaxCost: []*DynamicInterfaceOpt{ { Value: 6, }, }, - Limit: []*utils.DynamicIntOpt{ + Limit: []*DynamicIntOpt{ { Value: 3, }, }, - Offset: []*utils.DynamicIntOpt{ + Offset: []*DynamicIntOpt{ { Value: 3, }, }, - ProfileCount: []*utils.DynamicIntOpt{ + ProfileCount: []*DynamicIntOpt{ { Value: 2, }, }, - Usage: []*utils.DynamicStringOpt{ + Usage: []*DynamicStringOpt{ { Tenant: "cgrates.org", Value: "2", }, }, - MaxItems: []*utils.DynamicIntOpt{ + MaxItems: []*DynamicIntOpt{ { FilterIDs: []string{"id2"}, Tenant: "cgrates.org", @@ -440,32 +434,32 @@ func TestRouteSCloneSection(t *testing.T) { DefaultRatio: 2, Opts: &RoutesOpts{ - Context: []*utils.DynamicStringOpt{ + Context: []*DynamicStringOpt{ { Value: utils.MetaAny, }, }, - IgnoreErrors: []*utils.DynamicBoolOpt{ + IgnoreErrors: []*DynamicBoolOpt{ { Value: true, }, }, - MaxCost: []*utils.DynamicInterfaceOpt{ + MaxCost: []*DynamicInterfaceOpt{ { Value: 5, }, }, - Limit: []*utils.DynamicIntPointerOpt{ + Limit: []*DynamicIntPointerOpt{ { Value: utils.IntPointer(1), }, }, - Offset: []*utils.DynamicIntPointerOpt{ + Offset: []*DynamicIntPointerOpt{ { Value: utils.IntPointer(1), }, }, - ProfileCount: []*utils.DynamicIntPointerOpt{ + ProfileCount: []*DynamicIntPointerOpt{ { Value: utils.IntPointer(1), }, @@ -485,32 +479,32 @@ func TestRouteSCloneSection(t *testing.T) { StatSConns: []string{"*localhost"}, DefaultRatio: 2, Opts: &RoutesOpts{ - Context: []*utils.DynamicStringOpt{ + Context: []*DynamicStringOpt{ { Value: utils.MetaAny, }, }, - IgnoreErrors: []*utils.DynamicBoolOpt{ + IgnoreErrors: []*DynamicBoolOpt{ { Value: true, }, }, - MaxCost: []*utils.DynamicInterfaceOpt{ + MaxCost: []*DynamicInterfaceOpt{ { Value: 5, }, }, - Limit: []*utils.DynamicIntPointerOpt{ + Limit: []*DynamicIntPointerOpt{ { Value: utils.IntPointer(1), }, }, - Offset: []*utils.DynamicIntPointerOpt{ + Offset: []*DynamicIntPointerOpt{ { Value: utils.IntPointer(1), }, }, - ProfileCount: []*utils.DynamicIntPointerOpt{ + ProfileCount: []*DynamicIntPointerOpt{ { Value: utils.IntPointer(1), }, diff --git a/config/sessionscfg.go b/config/sessionscfg.go index 65af001ed..d55bc2bdf 100644 --- a/config/sessionscfg.go +++ b/config/sessionscfg.go @@ -60,37 +60,37 @@ const ( ) type SessionsOpts struct { - Accounts []*utils.DynamicBoolOpt - Attributes []*utils.DynamicBoolOpt - CDRs []*utils.DynamicBoolOpt - Chargers []*utils.DynamicBoolOpt - Resources []*utils.DynamicBoolOpt - Routes []*utils.DynamicBoolOpt - Stats []*utils.DynamicBoolOpt - Thresholds []*utils.DynamicBoolOpt - Initiate []*utils.DynamicBoolOpt - Update []*utils.DynamicBoolOpt - Terminate []*utils.DynamicBoolOpt - Message []*utils.DynamicBoolOpt - AttributesDerivedReply []*utils.DynamicBoolOpt - BlockerError []*utils.DynamicBoolOpt - CDRsDerivedReply []*utils.DynamicBoolOpt - ResourcesAuthorize []*utils.DynamicBoolOpt - ResourcesAllocate []*utils.DynamicBoolOpt - ResourcesRelease []*utils.DynamicBoolOpt - ResourcesDerivedReply []*utils.DynamicBoolOpt - RoutesDerivedReply []*utils.DynamicBoolOpt - StatsDerivedReply []*utils.DynamicBoolOpt - ThresholdsDerivedReply []*utils.DynamicBoolOpt - MaxUsage []*utils.DynamicBoolOpt - ForceDuration []*utils.DynamicBoolOpt - TTL []*utils.DynamicDurationOpt - Chargeable []*utils.DynamicBoolOpt - TTLLastUsage []*utils.DynamicDurationPointerOpt - TTLLastUsed []*utils.DynamicDurationPointerOpt - DebitInterval []*utils.DynamicDurationOpt - TTLMaxDelay []*utils.DynamicDurationOpt - TTLUsage []*utils.DynamicDurationPointerOpt + Accounts []*DynamicBoolOpt + Attributes []*DynamicBoolOpt + CDRs []*DynamicBoolOpt + Chargers []*DynamicBoolOpt + Resources []*DynamicBoolOpt + Routes []*DynamicBoolOpt + Stats []*DynamicBoolOpt + Thresholds []*DynamicBoolOpt + Initiate []*DynamicBoolOpt + Update []*DynamicBoolOpt + Terminate []*DynamicBoolOpt + Message []*DynamicBoolOpt + AttributesDerivedReply []*DynamicBoolOpt + BlockerError []*DynamicBoolOpt + CDRsDerivedReply []*DynamicBoolOpt + ResourcesAuthorize []*DynamicBoolOpt + ResourcesAllocate []*DynamicBoolOpt + ResourcesRelease []*DynamicBoolOpt + ResourcesDerivedReply []*DynamicBoolOpt + RoutesDerivedReply []*DynamicBoolOpt + StatsDerivedReply []*DynamicBoolOpt + ThresholdsDerivedReply []*DynamicBoolOpt + MaxUsage []*DynamicBoolOpt + ForceDuration []*DynamicBoolOpt + TTL []*DynamicDurationOpt + Chargeable []*DynamicBoolOpt + TTLLastUsage []*DynamicDurationPointerOpt + TTLLastUsed []*DynamicDurationPointerOpt + DebitInterval []*DynamicDurationOpt + TTLMaxDelay []*DynamicDurationOpt + TTLUsage []*DynamicDurationPointerOpt } // SessionSCfg is the config section for SessionS @@ -207,8 +207,8 @@ func (sesOpts *SessionsOpts) loadFromJSONCfg(jsnCfg *SessionsOptsJson) (err erro sesOpts.ForceDuration = append(sesOpts.ForceDuration, jsnCfg.ForceDuration...) } if jsnCfg.TTL != nil { - var ttl []*utils.DynamicDurationOpt - if ttl, err = utils.StringToDurationDynamicOpts(jsnCfg.TTL); err != nil { + var ttl []*DynamicDurationOpt + if ttl, err = StringToDurationDynamicOpts(jsnCfg.TTL); err != nil { return } sesOpts.TTL = append(sesOpts.TTL, ttl...) @@ -217,36 +217,36 @@ func (sesOpts *SessionsOpts) loadFromJSONCfg(jsnCfg *SessionsOptsJson) (err erro sesOpts.Chargeable = append(sesOpts.Chargeable, jsnCfg.Chargeable...) } if jsnCfg.TTLLastUsage != nil { - var lastUsage []*utils.DynamicDurationPointerOpt - if lastUsage, err = utils.StringToDurationPointerDynamicOpts(jsnCfg.TTLLastUsage); err != nil { + var lastUsage []*DynamicDurationPointerOpt + if lastUsage, err = StringToDurationPointerDynamicOpts(jsnCfg.TTLLastUsage); err != nil { return } sesOpts.TTLLastUsage = append(sesOpts.TTLLastUsage, lastUsage...) } if jsnCfg.TTLLastUsed != nil { - var lastUsed []*utils.DynamicDurationPointerOpt - if lastUsed, err = utils.StringToDurationPointerDynamicOpts(jsnCfg.TTLLastUsed); err != nil { + var lastUsed []*DynamicDurationPointerOpt + if lastUsed, err = StringToDurationPointerDynamicOpts(jsnCfg.TTLLastUsed); err != nil { return } sesOpts.TTLLastUsed = append(sesOpts.TTLLastUsed, lastUsed...) } if jsnCfg.DebitInterval != nil { - var debitInterval []*utils.DynamicDurationOpt - if debitInterval, err = utils.StringToDurationDynamicOpts(jsnCfg.DebitInterval); err != nil { + var debitInterval []*DynamicDurationOpt + if debitInterval, err = StringToDurationDynamicOpts(jsnCfg.DebitInterval); err != nil { return } sesOpts.DebitInterval = append(sesOpts.DebitInterval, debitInterval...) } if jsnCfg.TTLMaxDelay != nil { - var maxDelay []*utils.DynamicDurationOpt - if maxDelay, err = utils.StringToDurationDynamicOpts(jsnCfg.TTLMaxDelay); err != nil { + var maxDelay []*DynamicDurationOpt + if maxDelay, err = StringToDurationDynamicOpts(jsnCfg.TTLMaxDelay); err != nil { return } sesOpts.TTLMaxDelay = append(sesOpts.TTLMaxDelay, maxDelay...) } if jsnCfg.TTLUsage != nil { - var usage []*utils.DynamicDurationPointerOpt - if usage, err = utils.StringToDurationPointerDynamicOpts(jsnCfg.TTLUsage); err != nil { + var usage []*DynamicDurationPointerOpt + if usage, err = StringToDurationPointerDynamicOpts(jsnCfg.TTLUsage); err != nil { return } sesOpts.TTLUsage = append(sesOpts.TTLUsage, usage...) @@ -460,129 +460,129 @@ func (SessionSCfg) SName() string { return SessionSJSON } func (scfg SessionSCfg) CloneSection() Section { return scfg.Clone() } func (sesOpts *SessionsOpts) Clone() (cln *SessionsOpts) { - var acntS []*utils.DynamicBoolOpt + var acntS []*DynamicBoolOpt if sesOpts.Accounts != nil { - acntS = utils.CloneDynamicBoolOpt(sesOpts.Accounts) + acntS = CloneDynamicBoolOpt(sesOpts.Accounts) } - var attrS []*utils.DynamicBoolOpt + var attrS []*DynamicBoolOpt if sesOpts.Attributes != nil { - attrS = utils.CloneDynamicBoolOpt(sesOpts.Attributes) + attrS = CloneDynamicBoolOpt(sesOpts.Attributes) } - var cdrS []*utils.DynamicBoolOpt + var cdrS []*DynamicBoolOpt if sesOpts.CDRs != nil { - cdrS = utils.CloneDynamicBoolOpt(sesOpts.CDRs) + cdrS = CloneDynamicBoolOpt(sesOpts.CDRs) } - var chrgS []*utils.DynamicBoolOpt + var chrgS []*DynamicBoolOpt if sesOpts.Chargers != nil { - chrgS = utils.CloneDynamicBoolOpt(sesOpts.Chargers) + chrgS = CloneDynamicBoolOpt(sesOpts.Chargers) } - var reS []*utils.DynamicBoolOpt + var reS []*DynamicBoolOpt if sesOpts.Resources != nil { - reS = utils.CloneDynamicBoolOpt(sesOpts.Resources) + reS = CloneDynamicBoolOpt(sesOpts.Resources) } - var rouS []*utils.DynamicBoolOpt + var rouS []*DynamicBoolOpt if sesOpts.Routes != nil { - rouS = utils.CloneDynamicBoolOpt(sesOpts.Routes) + rouS = CloneDynamicBoolOpt(sesOpts.Routes) } - var stS []*utils.DynamicBoolOpt + var stS []*DynamicBoolOpt if sesOpts.Stats != nil { - stS = utils.CloneDynamicBoolOpt(sesOpts.Stats) + stS = CloneDynamicBoolOpt(sesOpts.Stats) } - var thdS []*utils.DynamicBoolOpt + var thdS []*DynamicBoolOpt if sesOpts.Thresholds != nil { - thdS = utils.CloneDynamicBoolOpt(sesOpts.Thresholds) + thdS = CloneDynamicBoolOpt(sesOpts.Thresholds) } - var initS []*utils.DynamicBoolOpt + var initS []*DynamicBoolOpt if sesOpts.Initiate != nil { - initS = utils.CloneDynamicBoolOpt(sesOpts.Initiate) + initS = CloneDynamicBoolOpt(sesOpts.Initiate) } - var updS []*utils.DynamicBoolOpt + var updS []*DynamicBoolOpt if sesOpts.Update != nil { - updS = utils.CloneDynamicBoolOpt(sesOpts.Update) + updS = CloneDynamicBoolOpt(sesOpts.Update) } - var termS []*utils.DynamicBoolOpt + var termS []*DynamicBoolOpt if sesOpts.Terminate != nil { - termS = utils.CloneDynamicBoolOpt(sesOpts.Terminate) + termS = CloneDynamicBoolOpt(sesOpts.Terminate) } - var msg []*utils.DynamicBoolOpt + var msg []*DynamicBoolOpt if sesOpts.Message != nil { - msg = utils.CloneDynamicBoolOpt(sesOpts.Message) + msg = CloneDynamicBoolOpt(sesOpts.Message) } - var attrDerivedReply []*utils.DynamicBoolOpt + var attrDerivedReply []*DynamicBoolOpt if sesOpts.AttributesDerivedReply != nil { - attrDerivedReply = utils.CloneDynamicBoolOpt(sesOpts.AttributesDerivedReply) + attrDerivedReply = CloneDynamicBoolOpt(sesOpts.AttributesDerivedReply) } - var blockerErr []*utils.DynamicBoolOpt + var blockerErr []*DynamicBoolOpt if sesOpts.BlockerError != nil { - blockerErr = utils.CloneDynamicBoolOpt(sesOpts.BlockerError) + blockerErr = CloneDynamicBoolOpt(sesOpts.BlockerError) } - var cdrsDerivedReply []*utils.DynamicBoolOpt + var cdrsDerivedReply []*DynamicBoolOpt if sesOpts.CDRsDerivedReply != nil { - cdrsDerivedReply = utils.CloneDynamicBoolOpt(sesOpts.CDRsDerivedReply) + cdrsDerivedReply = CloneDynamicBoolOpt(sesOpts.CDRsDerivedReply) } - var resAuthorize []*utils.DynamicBoolOpt + var resAuthorize []*DynamicBoolOpt if sesOpts.ResourcesAuthorize != nil { - resAuthorize = utils.CloneDynamicBoolOpt(sesOpts.ResourcesAuthorize) + resAuthorize = CloneDynamicBoolOpt(sesOpts.ResourcesAuthorize) } - var resAllocate []*utils.DynamicBoolOpt + var resAllocate []*DynamicBoolOpt if sesOpts.ResourcesAllocate != nil { - resAllocate = utils.CloneDynamicBoolOpt(sesOpts.ResourcesAllocate) + resAllocate = CloneDynamicBoolOpt(sesOpts.ResourcesAllocate) } - var resRelease []*utils.DynamicBoolOpt + var resRelease []*DynamicBoolOpt if sesOpts.ResourcesRelease != nil { - resRelease = utils.CloneDynamicBoolOpt(sesOpts.ResourcesRelease) + resRelease = CloneDynamicBoolOpt(sesOpts.ResourcesRelease) } - var resDerivedReply []*utils.DynamicBoolOpt + var resDerivedReply []*DynamicBoolOpt if sesOpts.ResourcesDerivedReply != nil { - resDerivedReply = utils.CloneDynamicBoolOpt(sesOpts.ResourcesDerivedReply) + resDerivedReply = CloneDynamicBoolOpt(sesOpts.ResourcesDerivedReply) } - var rouDerivedReply []*utils.DynamicBoolOpt + var rouDerivedReply []*DynamicBoolOpt if sesOpts.RoutesDerivedReply != nil { - rouDerivedReply = utils.CloneDynamicBoolOpt(sesOpts.RoutesDerivedReply) + rouDerivedReply = CloneDynamicBoolOpt(sesOpts.RoutesDerivedReply) } - var stsDerivedReply []*utils.DynamicBoolOpt + var stsDerivedReply []*DynamicBoolOpt if sesOpts.StatsDerivedReply != nil { - stsDerivedReply = utils.CloneDynamicBoolOpt(sesOpts.StatsDerivedReply) + stsDerivedReply = CloneDynamicBoolOpt(sesOpts.StatsDerivedReply) } - var thdsDerivedReply []*utils.DynamicBoolOpt + var thdsDerivedReply []*DynamicBoolOpt if sesOpts.ThresholdsDerivedReply != nil { - thdsDerivedReply = utils.CloneDynamicBoolOpt(sesOpts.ThresholdsDerivedReply) + thdsDerivedReply = CloneDynamicBoolOpt(sesOpts.ThresholdsDerivedReply) } - var maxUsage []*utils.DynamicBoolOpt + var maxUsage []*DynamicBoolOpt if sesOpts.MaxUsage != nil { - maxUsage = utils.CloneDynamicBoolOpt(sesOpts.MaxUsage) + maxUsage = CloneDynamicBoolOpt(sesOpts.MaxUsage) } - var forceDuration []*utils.DynamicBoolOpt + var forceDuration []*DynamicBoolOpt if sesOpts.ForceDuration != nil { - forceDuration = utils.CloneDynamicBoolOpt(sesOpts.ForceDuration) + forceDuration = CloneDynamicBoolOpt(sesOpts.ForceDuration) } - var ttl []*utils.DynamicDurationOpt + var ttl []*DynamicDurationOpt if sesOpts.TTL != nil { - ttl = utils.CloneDynamicDurationOpt(sesOpts.TTL) + ttl = CloneDynamicDurationOpt(sesOpts.TTL) } - var chargeable []*utils.DynamicBoolOpt + var chargeable []*DynamicBoolOpt if sesOpts.Chargeable != nil { - chargeable = utils.CloneDynamicBoolOpt(sesOpts.Chargeable) + chargeable = CloneDynamicBoolOpt(sesOpts.Chargeable) } - var debitIvl []*utils.DynamicDurationOpt + var debitIvl []*DynamicDurationOpt if sesOpts.DebitInterval != nil { - debitIvl = utils.CloneDynamicDurationOpt(sesOpts.DebitInterval) + debitIvl = CloneDynamicDurationOpt(sesOpts.DebitInterval) } - var lastUsg []*utils.DynamicDurationPointerOpt + var lastUsg []*DynamicDurationPointerOpt if sesOpts.TTLLastUsage != nil { - lastUsg = utils.CloneDynamicDurationPointerOpt(sesOpts.TTLLastUsage) + lastUsg = CloneDynamicDurationPointerOpt(sesOpts.TTLLastUsage) } - var lastUsed []*utils.DynamicDurationPointerOpt + var lastUsed []*DynamicDurationPointerOpt if sesOpts.TTLLastUsed != nil { - lastUsed = utils.CloneDynamicDurationPointerOpt(sesOpts.TTLLastUsed) + lastUsed = CloneDynamicDurationPointerOpt(sesOpts.TTLLastUsed) } - var maxDelay []*utils.DynamicDurationOpt + var maxDelay []*DynamicDurationOpt if sesOpts.TTLMaxDelay != nil { - maxDelay = utils.CloneDynamicDurationOpt(sesOpts.TTLMaxDelay) + maxDelay = CloneDynamicDurationOpt(sesOpts.TTLMaxDelay) } - var usg []*utils.DynamicDurationPointerOpt + var usg []*DynamicDurationPointerOpt if sesOpts.TTLUsage != nil { - usg = utils.CloneDynamicDurationPointerOpt(sesOpts.TTLUsage) + usg = CloneDynamicDurationPointerOpt(sesOpts.TTLUsage) } return &SessionsOpts{ Accounts: acntS, @@ -771,37 +771,37 @@ func diffSTIRJsonCfg(d *STIRJsonCfg, v1, v2 *STIRcfg) *STIRJsonCfg { } type SessionsOptsJson struct { - Accounts []*utils.DynamicBoolOpt `json:"*accounts"` - Attributes []*utils.DynamicBoolOpt `json:"*attributes"` - CDRs []*utils.DynamicBoolOpt `json:"*cdrs"` - Chargers []*utils.DynamicBoolOpt `json:"*chargers"` - Resources []*utils.DynamicBoolOpt `json:"*resources"` - Routes []*utils.DynamicBoolOpt `json:"*routes"` - Stats []*utils.DynamicBoolOpt `json:"*stats"` - Thresholds []*utils.DynamicBoolOpt `json:"*thresholds"` - Initiate []*utils.DynamicBoolOpt `json:"*initiate"` - Update []*utils.DynamicBoolOpt `json:"*update"` - Terminate []*utils.DynamicBoolOpt `json:"*terminate"` - Message []*utils.DynamicBoolOpt `json:"*message"` - AttributesDerivedReply []*utils.DynamicBoolOpt `json:"*attributesDerivedReply"` - BlockerError []*utils.DynamicBoolOpt `json:"*blockerError"` - CDRsDerivedReply []*utils.DynamicBoolOpt `json:"*cdrsDerivedReply"` - ResourcesAuthorize []*utils.DynamicBoolOpt `json:"*resourcesAuthorize"` - ResourcesAllocate []*utils.DynamicBoolOpt `json:"*resourcesAllocate"` - ResourcesRelease []*utils.DynamicBoolOpt `json:"*resourcesRelease"` - ResourcesDerivedReply []*utils.DynamicBoolOpt `json:"*resourcesDerivedReply"` - RoutesDerivedReply []*utils.DynamicBoolOpt `json:"*routesDerivedReply"` - StatsDerivedReply []*utils.DynamicBoolOpt `json:"*statsDerivedReply"` - ThresholdsDerivedReply []*utils.DynamicBoolOpt `json:"*thresholdsDerivedReply"` - MaxUsage []*utils.DynamicBoolOpt `json:"*maxUsage"` - ForceDuration []*utils.DynamicBoolOpt `json:"*forceDuration"` - TTL []*utils.DynamicStringOpt `json:"*ttl"` - Chargeable []*utils.DynamicBoolOpt `json:"*chargeable"` - DebitInterval []*utils.DynamicStringOpt `json:"*debitInterval"` - TTLLastUsage []*utils.DynamicStringOpt `json:"*ttlLastUsage"` - TTLLastUsed []*utils.DynamicStringOpt `json:"*ttlLastUsed"` - TTLMaxDelay []*utils.DynamicStringOpt `json:"*ttlMaxDelay"` - TTLUsage []*utils.DynamicStringOpt `json:"*ttlUsage"` + Accounts []*DynamicBoolOpt `json:"*accounts"` + Attributes []*DynamicBoolOpt `json:"*attributes"` + CDRs []*DynamicBoolOpt `json:"*cdrs"` + Chargers []*DynamicBoolOpt `json:"*chargers"` + Resources []*DynamicBoolOpt `json:"*resources"` + Routes []*DynamicBoolOpt `json:"*routes"` + Stats []*DynamicBoolOpt `json:"*stats"` + Thresholds []*DynamicBoolOpt `json:"*thresholds"` + Initiate []*DynamicBoolOpt `json:"*initiate"` + Update []*DynamicBoolOpt `json:"*update"` + Terminate []*DynamicBoolOpt `json:"*terminate"` + Message []*DynamicBoolOpt `json:"*message"` + AttributesDerivedReply []*DynamicBoolOpt `json:"*attributesDerivedReply"` + BlockerError []*DynamicBoolOpt `json:"*blockerError"` + CDRsDerivedReply []*DynamicBoolOpt `json:"*cdrsDerivedReply"` + ResourcesAuthorize []*DynamicBoolOpt `json:"*resourcesAuthorize"` + ResourcesAllocate []*DynamicBoolOpt `json:"*resourcesAllocate"` + ResourcesRelease []*DynamicBoolOpt `json:"*resourcesRelease"` + ResourcesDerivedReply []*DynamicBoolOpt `json:"*resourcesDerivedReply"` + RoutesDerivedReply []*DynamicBoolOpt `json:"*routesDerivedReply"` + StatsDerivedReply []*DynamicBoolOpt `json:"*statsDerivedReply"` + ThresholdsDerivedReply []*DynamicBoolOpt `json:"*thresholdsDerivedReply"` + MaxUsage []*DynamicBoolOpt `json:"*maxUsage"` + ForceDuration []*DynamicBoolOpt `json:"*forceDuration"` + TTL []*DynamicStringOpt `json:"*ttl"` + Chargeable []*DynamicBoolOpt `json:"*chargeable"` + DebitInterval []*DynamicStringOpt `json:"*debitInterval"` + TTLLastUsage []*DynamicStringOpt `json:"*ttlLastUsage"` + TTLLastUsed []*DynamicStringOpt `json:"*ttlLastUsed"` + TTLMaxDelay []*DynamicStringOpt `json:"*ttlMaxDelay"` + TTLUsage []*DynamicStringOpt `json:"*ttlUsage"` } // SessionSJsonCfg config section @@ -836,98 +836,98 @@ func diffSessionsOptsJsonCfg(d *SessionsOptsJson, v1, v2 *SessionsOpts) *Session if d == nil { d = new(SessionsOptsJson) } - if !utils.DynamicBoolOptEqual(v1.Accounts, v2.Accounts) { + if !DynamicBoolOptEqual(v1.Accounts, v2.Accounts) { d.Accounts = v2.Accounts } - if !utils.DynamicBoolOptEqual(v1.Attributes, v2.Attributes) { + if !DynamicBoolOptEqual(v1.Attributes, v2.Attributes) { d.Attributes = v2.Attributes } - if !utils.DynamicBoolOptEqual(v1.CDRs, v2.CDRs) { + if !DynamicBoolOptEqual(v1.CDRs, v2.CDRs) { d.CDRs = v2.CDRs } - if !utils.DynamicBoolOptEqual(v1.Chargers, v2.Chargers) { + if !DynamicBoolOptEqual(v1.Chargers, v2.Chargers) { d.Chargers = v2.Chargers } - if !utils.DynamicBoolOptEqual(v1.Resources, v2.Resources) { + if !DynamicBoolOptEqual(v1.Resources, v2.Resources) { d.Resources = v2.Resources } - if !utils.DynamicBoolOptEqual(v1.Routes, v2.Routes) { + if !DynamicBoolOptEqual(v1.Routes, v2.Routes) { d.Routes = v2.Routes } - if !utils.DynamicBoolOptEqual(v1.Stats, v2.Stats) { + if !DynamicBoolOptEqual(v1.Stats, v2.Stats) { d.Stats = v2.Stats } - if !utils.DynamicBoolOptEqual(v1.Thresholds, v2.Thresholds) { + if !DynamicBoolOptEqual(v1.Thresholds, v2.Thresholds) { d.Thresholds = v2.Thresholds } - if !utils.DynamicBoolOptEqual(v1.Initiate, v2.Initiate) { + if !DynamicBoolOptEqual(v1.Initiate, v2.Initiate) { d.Initiate = v2.Initiate } - if !utils.DynamicBoolOptEqual(v1.Update, v2.Update) { + if !DynamicBoolOptEqual(v1.Update, v2.Update) { d.Update = v2.Update } - if !utils.DynamicBoolOptEqual(v1.Terminate, v2.Terminate) { + if !DynamicBoolOptEqual(v1.Terminate, v2.Terminate) { d.Terminate = v2.Terminate } - if !utils.DynamicBoolOptEqual(v1.Message, v2.Message) { + if !DynamicBoolOptEqual(v1.Message, v2.Message) { d.Message = v2.Message } - if !utils.DynamicBoolOptEqual(v1.AttributesDerivedReply, v2.AttributesDerivedReply) { + if !DynamicBoolOptEqual(v1.AttributesDerivedReply, v2.AttributesDerivedReply) { d.AttributesDerivedReply = v2.AttributesDerivedReply } - if !utils.DynamicBoolOptEqual(v1.BlockerError, v2.BlockerError) { + if !DynamicBoolOptEqual(v1.BlockerError, v2.BlockerError) { d.BlockerError = v2.BlockerError } - if !utils.DynamicBoolOptEqual(v1.CDRsDerivedReply, v2.CDRsDerivedReply) { + if !DynamicBoolOptEqual(v1.CDRsDerivedReply, v2.CDRsDerivedReply) { d.CDRsDerivedReply = v2.CDRsDerivedReply } - if !utils.DynamicBoolOptEqual(v1.ResourcesAuthorize, v2.ResourcesAuthorize) { + if !DynamicBoolOptEqual(v1.ResourcesAuthorize, v2.ResourcesAuthorize) { d.ResourcesAuthorize = v2.ResourcesAuthorize } - if !utils.DynamicBoolOptEqual(v1.ResourcesAllocate, v2.ResourcesAllocate) { + if !DynamicBoolOptEqual(v1.ResourcesAllocate, v2.ResourcesAllocate) { d.ResourcesAllocate = v2.ResourcesAllocate } - if !utils.DynamicBoolOptEqual(v1.ResourcesRelease, v2.ResourcesRelease) { + if !DynamicBoolOptEqual(v1.ResourcesRelease, v2.ResourcesRelease) { d.ResourcesRelease = v2.ResourcesRelease } - if !utils.DynamicBoolOptEqual(v1.ResourcesDerivedReply, v2.ResourcesDerivedReply) { + if !DynamicBoolOptEqual(v1.ResourcesDerivedReply, v2.ResourcesDerivedReply) { d.ResourcesDerivedReply = v2.ResourcesDerivedReply } - if !utils.DynamicBoolOptEqual(v1.RoutesDerivedReply, v2.RoutesDerivedReply) { + if !DynamicBoolOptEqual(v1.RoutesDerivedReply, v2.RoutesDerivedReply) { d.RoutesDerivedReply = v2.RoutesDerivedReply } - if !utils.DynamicBoolOptEqual(v1.StatsDerivedReply, v2.StatsDerivedReply) { + if !DynamicBoolOptEqual(v1.StatsDerivedReply, v2.StatsDerivedReply) { d.StatsDerivedReply = v2.StatsDerivedReply } - if !utils.DynamicBoolOptEqual(v1.ThresholdsDerivedReply, v2.ThresholdsDerivedReply) { + if !DynamicBoolOptEqual(v1.ThresholdsDerivedReply, v2.ThresholdsDerivedReply) { d.ThresholdsDerivedReply = v2.ThresholdsDerivedReply } - if !utils.DynamicBoolOptEqual(v1.MaxUsage, v2.MaxUsage) { + if !DynamicBoolOptEqual(v1.MaxUsage, v2.MaxUsage) { d.MaxUsage = v2.MaxUsage } - if !utils.DynamicBoolOptEqual(v1.ForceDuration, v2.ForceDuration) { + if !DynamicBoolOptEqual(v1.ForceDuration, v2.ForceDuration) { d.ForceDuration = v2.ForceDuration } - if !utils.DynamicDurationOptEqual(v1.TTL, v2.TTL) { - d.TTL = utils.DurationToStringDynamicOpts(v2.TTL) + if !DynamicDurationOptEqual(v1.TTL, v2.TTL) { + d.TTL = DurationToStringDynamicOpts(v2.TTL) } - if !utils.DynamicBoolOptEqual(v1.Chargeable, v2.Chargeable) { + if !DynamicBoolOptEqual(v1.Chargeable, v2.Chargeable) { d.Chargeable = v2.Chargeable } - if !utils.DynamicDurationPointerOptEqual(v1.TTLLastUsage, v2.TTLLastUsage) { - d.TTLLastUsage = utils.DurationPointerToStringDynamicOpts(v2.TTLLastUsage) + if !DynamicDurationPointerOptEqual(v1.TTLLastUsage, v2.TTLLastUsage) { + d.TTLLastUsage = DurationPointerToStringDynamicOpts(v2.TTLLastUsage) } - if !utils.DynamicDurationPointerOptEqual(v1.TTLLastUsed, v2.TTLLastUsed) { - d.TTLLastUsed = utils.DurationPointerToStringDynamicOpts(v2.TTLLastUsed) + if !DynamicDurationPointerOptEqual(v1.TTLLastUsed, v2.TTLLastUsed) { + d.TTLLastUsed = DurationPointerToStringDynamicOpts(v2.TTLLastUsed) } - if !utils.DynamicDurationOptEqual(v1.DebitInterval, v2.DebitInterval) { - d.DebitInterval = utils.DurationToStringDynamicOpts(v2.DebitInterval) + if !DynamicDurationOptEqual(v1.DebitInterval, v2.DebitInterval) { + d.DebitInterval = DurationToStringDynamicOpts(v2.DebitInterval) } - if !utils.DynamicDurationOptEqual(v1.TTLMaxDelay, v2.TTLMaxDelay) { - d.TTLMaxDelay = utils.DurationToStringDynamicOpts(v2.TTLMaxDelay) + if !DynamicDurationOptEqual(v1.TTLMaxDelay, v2.TTLMaxDelay) { + d.TTLMaxDelay = DurationToStringDynamicOpts(v2.TTLMaxDelay) } - if !utils.DynamicDurationPointerOptEqual(v1.TTLUsage, v2.TTLUsage) { - d.TTLUsage = utils.DurationPointerToStringDynamicOpts(v2.TTLUsage) + if !DynamicDurationPointerOptEqual(v1.TTLUsage, v2.TTLUsage) { + d.TTLUsage = DurationPointerToStringDynamicOpts(v2.TTLUsage) } return d } diff --git a/config/sessionscfg_test.go b/config/sessionscfg_test.go index adc3c9097..e31abc808 100644 --- a/config/sessionscfg_test.go +++ b/config/sessionscfg_test.go @@ -92,7 +92,7 @@ func TestSessionSCfgloadFromJsonCfgCase1(t *testing.T) { Privatekey_path: utils.StringPointer("randomPath"), }, Opts: &SessionsOptsJson{ - DebitInterval: []*utils.DynamicStringOpt{ + DebitInterval: []*DynamicStringOpt{ { Value: (2 * time.Second).String(), }, @@ -134,41 +134,41 @@ func TestSessionSCfgloadFromJsonCfgCase1(t *testing.T) { utils.MetaSMS: 1, }, Opts: &SessionsOpts{ - Accounts: []*utils.DynamicBoolOpt{}, - Attributes: []*utils.DynamicBoolOpt{}, - CDRs: []*utils.DynamicBoolOpt{}, - Chargers: []*utils.DynamicBoolOpt{}, - Resources: []*utils.DynamicBoolOpt{}, - Routes: []*utils.DynamicBoolOpt{}, - Stats: []*utils.DynamicBoolOpt{}, - Thresholds: []*utils.DynamicBoolOpt{}, - Initiate: []*utils.DynamicBoolOpt{}, - Update: []*utils.DynamicBoolOpt{}, - Terminate: []*utils.DynamicBoolOpt{}, - Message: []*utils.DynamicBoolOpt{}, - AttributesDerivedReply: []*utils.DynamicBoolOpt{}, - BlockerError: []*utils.DynamicBoolOpt{}, - CDRsDerivedReply: []*utils.DynamicBoolOpt{}, - ResourcesAuthorize: []*utils.DynamicBoolOpt{}, - ResourcesAllocate: []*utils.DynamicBoolOpt{}, - ResourcesRelease: []*utils.DynamicBoolOpt{}, - ResourcesDerivedReply: []*utils.DynamicBoolOpt{}, - RoutesDerivedReply: []*utils.DynamicBoolOpt{}, - StatsDerivedReply: []*utils.DynamicBoolOpt{}, - ThresholdsDerivedReply: []*utils.DynamicBoolOpt{}, - MaxUsage: []*utils.DynamicBoolOpt{}, - ForceDuration: []*utils.DynamicBoolOpt{}, - TTL: []*utils.DynamicDurationOpt{}, - Chargeable: []*utils.DynamicBoolOpt{}, - DebitInterval: []*utils.DynamicDurationOpt{ + Accounts: []*DynamicBoolOpt{}, + Attributes: []*DynamicBoolOpt{}, + CDRs: []*DynamicBoolOpt{}, + Chargers: []*DynamicBoolOpt{}, + Resources: []*DynamicBoolOpt{}, + Routes: []*DynamicBoolOpt{}, + Stats: []*DynamicBoolOpt{}, + Thresholds: []*DynamicBoolOpt{}, + Initiate: []*DynamicBoolOpt{}, + Update: []*DynamicBoolOpt{}, + Terminate: []*DynamicBoolOpt{}, + Message: []*DynamicBoolOpt{}, + AttributesDerivedReply: []*DynamicBoolOpt{}, + BlockerError: []*DynamicBoolOpt{}, + CDRsDerivedReply: []*DynamicBoolOpt{}, + ResourcesAuthorize: []*DynamicBoolOpt{}, + ResourcesAllocate: []*DynamicBoolOpt{}, + ResourcesRelease: []*DynamicBoolOpt{}, + ResourcesDerivedReply: []*DynamicBoolOpt{}, + RoutesDerivedReply: []*DynamicBoolOpt{}, + StatsDerivedReply: []*DynamicBoolOpt{}, + ThresholdsDerivedReply: []*DynamicBoolOpt{}, + MaxUsage: []*DynamicBoolOpt{}, + ForceDuration: []*DynamicBoolOpt{}, + TTL: []*DynamicDurationOpt{}, + Chargeable: []*DynamicBoolOpt{}, + DebitInterval: []*DynamicDurationOpt{ { Value: 2 * time.Second, }, }, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{}, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{}, - TTLMaxDelay: []*utils.DynamicDurationOpt{}, - TTLUsage: []*utils.DynamicDurationPointerOpt{}, + TTLLastUsage: []*DynamicDurationPointerOpt{}, + TTLLastUsed: []*DynamicDurationPointerOpt{}, + TTLMaxDelay: []*DynamicDurationOpt{}, + TTLUsage: []*DynamicDurationPointerOpt{}, }, } jsonCfg := NewDefaultCGRConfig() @@ -194,7 +194,7 @@ func TestSessionSCfgloadFromJsonCfgCase1(t *testing.T) { func TestSessionSCfgloadFromJsonCfgCase13(t *testing.T) { cfgJSON := &SessionSJsonCfg{ Opts: &SessionsOptsJson{ - TTL: []*utils.DynamicStringOpt{ + TTL: []*DynamicStringOpt{ { Tenant: "cgrates.org", Value: "1c", @@ -210,7 +210,7 @@ func TestSessionSCfgloadFromJsonCfgCase13(t *testing.T) { cfgJSON.Opts.TTL = nil ///// - cfgJSON.Opts.DebitInterval = []*utils.DynamicStringOpt{ + cfgJSON.Opts.DebitInterval = []*DynamicStringOpt{ { Tenant: "cgrates.org", Value: "1c", @@ -222,7 +222,7 @@ func TestSessionSCfgloadFromJsonCfgCase13(t *testing.T) { cfgJSON.Opts.DebitInterval = nil ///// - cfgJSON.Opts.TTLLastUsage = []*utils.DynamicStringOpt{ + cfgJSON.Opts.TTLLastUsage = []*DynamicStringOpt{ { Tenant: "cgrates.org", Value: "1c", @@ -234,7 +234,7 @@ func TestSessionSCfgloadFromJsonCfgCase13(t *testing.T) { cfgJSON.Opts.TTLLastUsage = nil ///// - cfgJSON.Opts.TTLLastUsed = []*utils.DynamicStringOpt{ + cfgJSON.Opts.TTLLastUsed = []*DynamicStringOpt{ { Tenant: "cgrates.org", Value: "1c", @@ -246,7 +246,7 @@ func TestSessionSCfgloadFromJsonCfgCase13(t *testing.T) { cfgJSON.Opts.TTLLastUsed = nil ///// - cfgJSON.Opts.TTLUsage = []*utils.DynamicStringOpt{ + cfgJSON.Opts.TTLUsage = []*DynamicStringOpt{ { Tenant: "cgrates.org", Value: "1c", @@ -258,7 +258,7 @@ func TestSessionSCfgloadFromJsonCfgCase13(t *testing.T) { cfgJSON.Opts.TTLUsage = nil ///// - cfgJSON.Opts.TTLMaxDelay = []*utils.DynamicStringOpt{ + cfgJSON.Opts.TTLMaxDelay = []*DynamicStringOpt{ { Tenant: "cgrates.org", Value: "1c", @@ -306,22 +306,22 @@ func TestSessionSCfgloadFromJsonCfgCase8(t *testing.T) { func TestSessionSCfgloadFromJsonCfgCase10(t *testing.T) { cfgJSON := &SessionSJsonCfg{ Opts: &SessionsOptsJson{ - TTLLastUsage: []*utils.DynamicStringOpt{ + TTLLastUsage: []*DynamicStringOpt{ { Value: "1", }, }, - TTLLastUsed: []*utils.DynamicStringOpt{ + TTLLastUsed: []*DynamicStringOpt{ { Value: "10", }, }, - TTLMaxDelay: []*utils.DynamicStringOpt{ + TTLMaxDelay: []*DynamicStringOpt{ { Value: "100", }, }, - TTLUsage: []*utils.DynamicStringOpt{ + TTLUsage: []*DynamicStringOpt{ { Value: "1", }, @@ -363,49 +363,49 @@ func TestSessionSCfgloadFromJsonCfgCase10(t *testing.T) { utils.MetaSMS: 1, }, Opts: &SessionsOpts{ - Accounts: []*utils.DynamicBoolOpt{}, - Attributes: []*utils.DynamicBoolOpt{}, - CDRs: []*utils.DynamicBoolOpt{}, - Chargers: []*utils.DynamicBoolOpt{}, - Resources: []*utils.DynamicBoolOpt{}, - Routes: []*utils.DynamicBoolOpt{}, - Stats: []*utils.DynamicBoolOpt{}, - Thresholds: []*utils.DynamicBoolOpt{}, - Initiate: []*utils.DynamicBoolOpt{}, - Update: []*utils.DynamicBoolOpt{}, - Terminate: []*utils.DynamicBoolOpt{}, - Message: []*utils.DynamicBoolOpt{}, - AttributesDerivedReply: []*utils.DynamicBoolOpt{}, - BlockerError: []*utils.DynamicBoolOpt{}, - CDRsDerivedReply: []*utils.DynamicBoolOpt{}, - ResourcesAuthorize: []*utils.DynamicBoolOpt{}, - ResourcesAllocate: []*utils.DynamicBoolOpt{}, - ResourcesRelease: []*utils.DynamicBoolOpt{}, - ResourcesDerivedReply: []*utils.DynamicBoolOpt{}, - RoutesDerivedReply: []*utils.DynamicBoolOpt{}, - StatsDerivedReply: []*utils.DynamicBoolOpt{}, - ThresholdsDerivedReply: []*utils.DynamicBoolOpt{}, - MaxUsage: []*utils.DynamicBoolOpt{}, - ForceDuration: []*utils.DynamicBoolOpt{}, - TTL: []*utils.DynamicDurationOpt{}, - Chargeable: []*utils.DynamicBoolOpt{}, - DebitInterval: []*utils.DynamicDurationOpt{}, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{ + Accounts: []*DynamicBoolOpt{}, + Attributes: []*DynamicBoolOpt{}, + CDRs: []*DynamicBoolOpt{}, + Chargers: []*DynamicBoolOpt{}, + Resources: []*DynamicBoolOpt{}, + Routes: []*DynamicBoolOpt{}, + Stats: []*DynamicBoolOpt{}, + Thresholds: []*DynamicBoolOpt{}, + Initiate: []*DynamicBoolOpt{}, + Update: []*DynamicBoolOpt{}, + Terminate: []*DynamicBoolOpt{}, + Message: []*DynamicBoolOpt{}, + AttributesDerivedReply: []*DynamicBoolOpt{}, + BlockerError: []*DynamicBoolOpt{}, + CDRsDerivedReply: []*DynamicBoolOpt{}, + ResourcesAuthorize: []*DynamicBoolOpt{}, + ResourcesAllocate: []*DynamicBoolOpt{}, + ResourcesRelease: []*DynamicBoolOpt{}, + ResourcesDerivedReply: []*DynamicBoolOpt{}, + RoutesDerivedReply: []*DynamicBoolOpt{}, + StatsDerivedReply: []*DynamicBoolOpt{}, + ThresholdsDerivedReply: []*DynamicBoolOpt{}, + MaxUsage: []*DynamicBoolOpt{}, + ForceDuration: []*DynamicBoolOpt{}, + TTL: []*DynamicDurationOpt{}, + Chargeable: []*DynamicBoolOpt{}, + DebitInterval: []*DynamicDurationOpt{}, + TTLLastUsage: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(1), }, }, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{ + TTLLastUsed: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(10), }, }, - TTLMaxDelay: []*utils.DynamicDurationOpt{ + TTLMaxDelay: []*DynamicDurationOpt{ { Value: 100, }, }, - TTLUsage: []*utils.DynamicDurationPointerOpt{ + TTLUsage: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(1), }, @@ -517,37 +517,37 @@ func TestSessionSCfgAsMapInterfaceCase1(t *testing.T) { utils.MetaSMS: "1", }, utils.OptsCfg: map[string]any{ - utils.MetaAccounts: []*utils.DynamicBoolOpt{}, - utils.MetaAttributes: []*utils.DynamicBoolOpt{}, - utils.MetaCDRs: []*utils.DynamicBoolOpt{}, - utils.MetaChargers: []*utils.DynamicBoolOpt{}, - utils.MetaResources: []*utils.DynamicBoolOpt{}, - utils.MetaRoutes: []*utils.DynamicBoolOpt{}, - utils.MetaStats: []*utils.DynamicBoolOpt{}, - utils.MetaThresholds: []*utils.DynamicBoolOpt{}, - utils.MetaInitiate: []*utils.DynamicBoolOpt{}, - utils.MetaUpdate: []*utils.DynamicBoolOpt{}, - utils.MetaTerminate: []*utils.DynamicBoolOpt{}, - utils.MetaMessage: []*utils.DynamicBoolOpt{}, - utils.MetaAttributesDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaBlockerErrorCfg: []*utils.DynamicBoolOpt{}, - utils.MetaCDRsDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaResourcesAuthorizeCfg: []*utils.DynamicBoolOpt{}, - utils.MetaResourcesAllocateCfg: []*utils.DynamicBoolOpt{}, - utils.MetaResourcesReleaseCfg: []*utils.DynamicBoolOpt{}, - utils.MetaResourcesDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaRoutesDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaStatsDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaThresholdsDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaMaxUsageCfg: []*utils.DynamicBoolOpt{}, - utils.MetaForceDurationCfg: []*utils.DynamicBoolOpt{}, - utils.MetaTTLCfg: []*utils.DynamicDurationOpt{}, - utils.MetaChargeableCfg: []*utils.DynamicBoolOpt{}, - utils.MetaDebitIntervalCfg: []*utils.DynamicDurationOpt{}, - utils.MetaTTLLastUsageCfg: []*utils.DynamicDurationPointerOpt{}, - utils.MetaTTLLastUsedCfg: []*utils.DynamicDurationPointerOpt{}, - utils.MetaTTLMaxDelayCfg: []*utils.DynamicDurationOpt{}, - utils.MetaTTLUsageCfg: []*utils.DynamicDurationPointerOpt{}, + utils.MetaAccounts: []*DynamicBoolOpt{}, + utils.MetaAttributes: []*DynamicBoolOpt{}, + utils.MetaCDRs: []*DynamicBoolOpt{}, + utils.MetaChargers: []*DynamicBoolOpt{}, + utils.MetaResources: []*DynamicBoolOpt{}, + utils.MetaRoutes: []*DynamicBoolOpt{}, + utils.MetaStats: []*DynamicBoolOpt{}, + utils.MetaThresholds: []*DynamicBoolOpt{}, + utils.MetaInitiate: []*DynamicBoolOpt{}, + utils.MetaUpdate: []*DynamicBoolOpt{}, + utils.MetaTerminate: []*DynamicBoolOpt{}, + utils.MetaMessage: []*DynamicBoolOpt{}, + utils.MetaAttributesDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaBlockerErrorCfg: []*DynamicBoolOpt{}, + utils.MetaCDRsDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaResourcesAuthorizeCfg: []*DynamicBoolOpt{}, + utils.MetaResourcesAllocateCfg: []*DynamicBoolOpt{}, + utils.MetaResourcesReleaseCfg: []*DynamicBoolOpt{}, + utils.MetaResourcesDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaRoutesDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaStatsDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaThresholdsDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaMaxUsageCfg: []*DynamicBoolOpt{}, + utils.MetaForceDurationCfg: []*DynamicBoolOpt{}, + utils.MetaTTLCfg: []*DynamicDurationOpt{}, + utils.MetaChargeableCfg: []*DynamicBoolOpt{}, + utils.MetaDebitIntervalCfg: []*DynamicDurationOpt{}, + utils.MetaTTLLastUsageCfg: []*DynamicDurationPointerOpt{}, + utils.MetaTTLLastUsedCfg: []*DynamicDurationPointerOpt{}, + utils.MetaTTLMaxDelayCfg: []*DynamicDurationOpt{}, + utils.MetaTTLUsageCfg: []*DynamicDurationPointerOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -634,45 +634,45 @@ func TestSessionSCfgAsMapInterfaceCase2(t *testing.T) { utils.MetaSMS: "1", }, utils.OptsCfg: map[string]any{ - utils.MetaAccounts: []*utils.DynamicBoolOpt{}, - utils.MetaAttributes: []*utils.DynamicBoolOpt{}, - utils.MetaCDRs: []*utils.DynamicBoolOpt{}, - utils.MetaChargers: []*utils.DynamicBoolOpt{}, - utils.MetaResources: []*utils.DynamicBoolOpt{}, - utils.MetaRoutes: []*utils.DynamicBoolOpt{}, - utils.MetaStats: []*utils.DynamicBoolOpt{}, - utils.MetaThresholds: []*utils.DynamicBoolOpt{}, - utils.MetaInitiate: []*utils.DynamicBoolOpt{}, - utils.MetaUpdate: []*utils.DynamicBoolOpt{}, - utils.MetaTerminate: []*utils.DynamicBoolOpt{}, - utils.MetaMessage: []*utils.DynamicBoolOpt{}, - utils.MetaAttributesDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaBlockerErrorCfg: []*utils.DynamicBoolOpt{}, - utils.MetaCDRsDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaResourcesAuthorizeCfg: []*utils.DynamicBoolOpt{}, - utils.MetaResourcesAllocateCfg: []*utils.DynamicBoolOpt{}, - utils.MetaResourcesReleaseCfg: []*utils.DynamicBoolOpt{}, - utils.MetaResourcesDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaRoutesDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaStatsDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaThresholdsDerivedReplyCfg: []*utils.DynamicBoolOpt{}, - utils.MetaMaxUsageCfg: []*utils.DynamicBoolOpt{}, - utils.MetaForceDurationCfg: []*utils.DynamicBoolOpt{}, - utils.MetaTTLCfg: []*utils.DynamicDurationOpt{ + utils.MetaAccounts: []*DynamicBoolOpt{}, + utils.MetaAttributes: []*DynamicBoolOpt{}, + utils.MetaCDRs: []*DynamicBoolOpt{}, + utils.MetaChargers: []*DynamicBoolOpt{}, + utils.MetaResources: []*DynamicBoolOpt{}, + utils.MetaRoutes: []*DynamicBoolOpt{}, + utils.MetaStats: []*DynamicBoolOpt{}, + utils.MetaThresholds: []*DynamicBoolOpt{}, + utils.MetaInitiate: []*DynamicBoolOpt{}, + utils.MetaUpdate: []*DynamicBoolOpt{}, + utils.MetaTerminate: []*DynamicBoolOpt{}, + utils.MetaMessage: []*DynamicBoolOpt{}, + utils.MetaAttributesDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaBlockerErrorCfg: []*DynamicBoolOpt{}, + utils.MetaCDRsDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaResourcesAuthorizeCfg: []*DynamicBoolOpt{}, + utils.MetaResourcesAllocateCfg: []*DynamicBoolOpt{}, + utils.MetaResourcesReleaseCfg: []*DynamicBoolOpt{}, + utils.MetaResourcesDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaRoutesDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaStatsDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaThresholdsDerivedReplyCfg: []*DynamicBoolOpt{}, + utils.MetaMaxUsageCfg: []*DynamicBoolOpt{}, + utils.MetaForceDurationCfg: []*DynamicBoolOpt{}, + utils.MetaTTLCfg: []*DynamicDurationOpt{ { Value: time.Second, }, }, - utils.MetaChargeableCfg: []*utils.DynamicBoolOpt{}, - utils.MetaDebitIntervalCfg: []*utils.DynamicDurationOpt{ + utils.MetaChargeableCfg: []*DynamicBoolOpt{}, + utils.MetaDebitIntervalCfg: []*DynamicDurationOpt{ { Value: 8 * time.Second, }, }, - utils.MetaTTLLastUsageCfg: []*utils.DynamicDurationPointerOpt{}, - utils.MetaTTLLastUsedCfg: []*utils.DynamicDurationPointerOpt{}, - utils.MetaTTLMaxDelayCfg: []*utils.DynamicDurationOpt{}, - utils.MetaTTLUsageCfg: []*utils.DynamicDurationPointerOpt{}, + utils.MetaTTLLastUsageCfg: []*DynamicDurationPointerOpt{}, + utils.MetaTTLLastUsedCfg: []*DynamicDurationPointerOpt{}, + utils.MetaTTLMaxDelayCfg: []*DynamicDurationOpt{}, + utils.MetaTTLUsageCfg: []*DynamicDurationPointerOpt{}, }, } cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr) @@ -1494,32 +1494,32 @@ func TestSessionSCfgClone(t *testing.T) { utils.MetaSMS: 1, }, Opts: &SessionsOpts{ - DebitInterval: []*utils.DynamicDurationOpt{ + DebitInterval: []*DynamicDurationOpt{ { Value: 2, }, }, - TTL: []*utils.DynamicDurationOpt{ + TTL: []*DynamicDurationOpt{ { Value: 0, }, }, - TTLMaxDelay: []*utils.DynamicDurationOpt{ + TTLMaxDelay: []*DynamicDurationOpt{ { Value: time.Second, }, }, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{ + TTLLastUsed: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(time.Second), }, }, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{ + TTLLastUsage: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(time.Second), }, }, - TTLUsage: []*utils.DynamicDurationPointerOpt{ + TTLUsage: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(time.Second), }, @@ -1641,32 +1641,32 @@ func TestDiffSessionSJsonCfg(t *testing.T) { PrivateKeyPath: "/private/key/path", }, Opts: &SessionsOpts{ - DebitInterval: []*utils.DynamicDurationOpt{ + DebitInterval: []*DynamicDurationOpt{ { Value: time.Second, }, }, - TTL: []*utils.DynamicDurationOpt{ + TTL: []*DynamicDurationOpt{ { Value: time.Second, }, }, - TTLMaxDelay: []*utils.DynamicDurationOpt{ + TTLMaxDelay: []*DynamicDurationOpt{ { Value: time.Second, }, }, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{ + TTLLastUsage: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(time.Second), }, }, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{ + TTLLastUsed: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(time.Second), }, }, - TTLUsage: []*utils.DynamicDurationPointerOpt{ + TTLUsage: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(time.Second), }, @@ -1711,32 +1711,32 @@ func TestDiffSessionSJsonCfg(t *testing.T) { PrivateKeyPath: "/private/key/path/2", }, Opts: &SessionsOpts{ - DebitInterval: []*utils.DynamicDurationOpt{ + DebitInterval: []*DynamicDurationOpt{ { Value: 2 * time.Second, }, }, - TTL: []*utils.DynamicDurationOpt{ + TTL: []*DynamicDurationOpt{ { Value: 2 * time.Second, }, }, - TTLMaxDelay: []*utils.DynamicDurationOpt{ + TTLMaxDelay: []*DynamicDurationOpt{ { Value: 2 * time.Second, }, }, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{ + TTLLastUsage: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(2 * time.Second), }, }, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{ + TTLLastUsed: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(2 * time.Second), }, }, - TTLUsage: []*utils.DynamicDurationPointerOpt{ + TTLUsage: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(2 * time.Second), }, @@ -1777,32 +1777,32 @@ func TestDiffSessionSJsonCfg(t *testing.T) { Privatekey_path: utils.StringPointer("/private/key/path/2"), }, Opts: &SessionsOptsJson{ - DebitInterval: []*utils.DynamicStringOpt{ + DebitInterval: []*DynamicStringOpt{ { Value: (2 * time.Second).String(), }, }, - TTL: []*utils.DynamicStringOpt{ + TTL: []*DynamicStringOpt{ { Value: (2 * time.Second).String(), }, }, - TTLMaxDelay: []*utils.DynamicStringOpt{ + TTLMaxDelay: []*DynamicStringOpt{ { Value: (2 * time.Second).String(), }, }, - TTLLastUsage: []*utils.DynamicStringOpt{ + TTLLastUsage: []*DynamicStringOpt{ { Value: (2 * time.Second).String(), }, }, - TTLLastUsed: []*utils.DynamicStringOpt{ + TTLLastUsed: []*DynamicStringOpt{ { Value: (2 * time.Second).String(), }, }, - TTLUsage: []*utils.DynamicStringOpt{ + TTLUsage: []*DynamicStringOpt{ { Value: (2 * time.Second).String(), }, @@ -1820,10 +1820,10 @@ func TestDiffSessionSJsonCfg(t *testing.T) { v2.Opts.TTLLastUsage = nil v2.Opts.TTLUsage = nil - expected.Opts.TTLMaxDelay = []*utils.DynamicStringOpt{} - expected.Opts.TTLLastUsed = []*utils.DynamicStringOpt{} - expected.Opts.TTLLastUsage = []*utils.DynamicStringOpt{} - expected.Opts.TTLUsage = []*utils.DynamicStringOpt{} + expected.Opts.TTLMaxDelay = []*DynamicStringOpt{} + expected.Opts.TTLLastUsed = []*DynamicStringOpt{} + expected.Opts.TTLLastUsage = []*DynamicStringOpt{} + expected.Opts.TTLUsage = []*DynamicStringOpt{} rcv = diffSessionSJsonCfg(d, v1, v2) if !reflect.DeepEqual(rcv, expected) { @@ -1865,27 +1865,27 @@ func TestSessionSCloneSection(t *testing.T) { PrivateKeyPath: "/private/key/path", }, Opts: &SessionsOpts{ - DebitInterval: []*utils.DynamicDurationOpt{ + DebitInterval: []*DynamicDurationOpt{ { Value: time.Second, }, }, - TTL: []*utils.DynamicDurationOpt{ + TTL: []*DynamicDurationOpt{ { Value: time.Second, }, }, - TTLMaxDelay: []*utils.DynamicDurationOpt{ + TTLMaxDelay: []*DynamicDurationOpt{ { Value: time.Second, }, }, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{ + TTLLastUsage: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(time.Second), }, }, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{ + TTLLastUsed: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(time.Second), }, @@ -1926,27 +1926,27 @@ func TestSessionSCloneSection(t *testing.T) { PrivateKeyPath: "/private/key/path", }, Opts: &SessionsOpts{ - DebitInterval: []*utils.DynamicDurationOpt{ + DebitInterval: []*DynamicDurationOpt{ { Value: time.Second, }, }, - TTL: []*utils.DynamicDurationOpt{ + TTL: []*DynamicDurationOpt{ { Value: time.Second, }, }, - TTLMaxDelay: []*utils.DynamicDurationOpt{ + TTLMaxDelay: []*DynamicDurationOpt{ { Value: time.Second, }, }, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{ + TTLLastUsage: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(time.Second), }, }, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{ + TTLLastUsed: []*DynamicDurationPointerOpt{ { Value: utils.DurationPointer(time.Second), }, @@ -1964,187 +1964,187 @@ func TestDiffSessionsOptsJsonCfg(t *testing.T) { var d *SessionsOptsJson v1 := &SessionsOpts{ - Accounts: []*utils.DynamicBoolOpt{ + Accounts: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Attributes: []*utils.DynamicBoolOpt{ + Attributes: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - CDRs: []*utils.DynamicBoolOpt{ + CDRs: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Chargers: []*utils.DynamicBoolOpt{ + Chargers: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Resources: []*utils.DynamicBoolOpt{ + Resources: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Routes: []*utils.DynamicBoolOpt{ + Routes: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Stats: []*utils.DynamicBoolOpt{ + Stats: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Thresholds: []*utils.DynamicBoolOpt{ + Thresholds: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Initiate: []*utils.DynamicBoolOpt{ + Initiate: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Update: []*utils.DynamicBoolOpt{ + Update: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Terminate: []*utils.DynamicBoolOpt{ + Terminate: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - Message: []*utils.DynamicBoolOpt{ + Message: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - AttributesDerivedReply: []*utils.DynamicBoolOpt{ + AttributesDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - BlockerError: []*utils.DynamicBoolOpt{ + BlockerError: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - CDRsDerivedReply: []*utils.DynamicBoolOpt{ + CDRsDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - ResourcesAuthorize: []*utils.DynamicBoolOpt{ + ResourcesAuthorize: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - ResourcesAllocate: []*utils.DynamicBoolOpt{ + ResourcesAllocate: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - ResourcesRelease: []*utils.DynamicBoolOpt{ + ResourcesRelease: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - ResourcesDerivedReply: []*utils.DynamicBoolOpt{ + ResourcesDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - RoutesDerivedReply: []*utils.DynamicBoolOpt{ + RoutesDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - StatsDerivedReply: []*utils.DynamicBoolOpt{ + StatsDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - ThresholdsDerivedReply: []*utils.DynamicBoolOpt{ + ThresholdsDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - MaxUsage: []*utils.DynamicBoolOpt{ + MaxUsage: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - ForceDuration: []*utils.DynamicBoolOpt{ + ForceDuration: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - TTL: []*utils.DynamicDurationOpt{ + TTL: []*DynamicDurationOpt{ { Tenant: "cgrates.org", Value: 3 * time.Second, }, }, - Chargeable: []*utils.DynamicBoolOpt{ + Chargeable: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{ + TTLLastUsage: []*DynamicDurationPointerOpt{ { Tenant: "cgrates.org", Value: utils.DurationPointer(5 * time.Second), }, }, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{ + TTLLastUsed: []*DynamicDurationPointerOpt{ { Tenant: "cgrates.org", Value: utils.DurationPointer(5 * time.Second), }, }, - DebitInterval: []*utils.DynamicDurationOpt{ + DebitInterval: []*DynamicDurationOpt{ { Tenant: "cgrates.org", Value: 3 * time.Second, }, }, - TTLMaxDelay: []*utils.DynamicDurationOpt{ + TTLMaxDelay: []*DynamicDurationOpt{ { Tenant: "cgrates.org", Value: 3 * time.Second, }, }, - TTLUsage: []*utils.DynamicDurationPointerOpt{ + TTLUsage: []*DynamicDurationPointerOpt{ { Tenant: "cgrates.org", Value: utils.DurationPointer(5 * time.Second), @@ -2153,187 +2153,187 @@ func TestDiffSessionsOptsJsonCfg(t *testing.T) { } v2 := &SessionsOpts{ - Accounts: []*utils.DynamicBoolOpt{ + Accounts: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Attributes: []*utils.DynamicBoolOpt{ + Attributes: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - CDRs: []*utils.DynamicBoolOpt{ + CDRs: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Chargers: []*utils.DynamicBoolOpt{ + Chargers: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Resources: []*utils.DynamicBoolOpt{ + Resources: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Routes: []*utils.DynamicBoolOpt{ + Routes: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Stats: []*utils.DynamicBoolOpt{ + Stats: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Thresholds: []*utils.DynamicBoolOpt{ + Thresholds: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Initiate: []*utils.DynamicBoolOpt{ + Initiate: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Update: []*utils.DynamicBoolOpt{ + Update: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Terminate: []*utils.DynamicBoolOpt{ + Terminate: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Message: []*utils.DynamicBoolOpt{ + Message: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - AttributesDerivedReply: []*utils.DynamicBoolOpt{ + AttributesDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - BlockerError: []*utils.DynamicBoolOpt{ + BlockerError: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - CDRsDerivedReply: []*utils.DynamicBoolOpt{ + CDRsDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - ResourcesAuthorize: []*utils.DynamicBoolOpt{ + ResourcesAuthorize: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - ResourcesAllocate: []*utils.DynamicBoolOpt{ + ResourcesAllocate: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - ResourcesRelease: []*utils.DynamicBoolOpt{ + ResourcesRelease: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - ResourcesDerivedReply: []*utils.DynamicBoolOpt{ + ResourcesDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - RoutesDerivedReply: []*utils.DynamicBoolOpt{ + RoutesDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - StatsDerivedReply: []*utils.DynamicBoolOpt{ + StatsDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - ThresholdsDerivedReply: []*utils.DynamicBoolOpt{ + ThresholdsDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - MaxUsage: []*utils.DynamicBoolOpt{ + MaxUsage: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - ForceDuration: []*utils.DynamicBoolOpt{ + ForceDuration: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - TTL: []*utils.DynamicDurationOpt{ + TTL: []*DynamicDurationOpt{ { Tenant: "cgrates.net", Value: 4 * time.Second, }, }, - Chargeable: []*utils.DynamicBoolOpt{ + Chargeable: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - TTLLastUsage: []*utils.DynamicDurationPointerOpt{ + TTLLastUsage: []*DynamicDurationPointerOpt{ { Tenant: "cgrates.net", Value: utils.DurationPointer(6 * time.Second), }, }, - TTLLastUsed: []*utils.DynamicDurationPointerOpt{ + TTLLastUsed: []*DynamicDurationPointerOpt{ { Tenant: "cgrates.net", Value: utils.DurationPointer(6 * time.Second), }, }, - DebitInterval: []*utils.DynamicDurationOpt{ + DebitInterval: []*DynamicDurationOpt{ { Tenant: "cgrates.net", Value: 4 * time.Second, }, }, - TTLMaxDelay: []*utils.DynamicDurationOpt{ + TTLMaxDelay: []*DynamicDurationOpt{ { Tenant: "cgrates.net", Value: 4 * time.Second, }, }, - TTLUsage: []*utils.DynamicDurationPointerOpt{ + TTLUsage: []*DynamicDurationPointerOpt{ { Tenant: "cgrates.net", Value: utils.DurationPointer(4 * time.Second), @@ -2342,187 +2342,187 @@ func TestDiffSessionsOptsJsonCfg(t *testing.T) { } expected := &SessionsOptsJson{ - Accounts: []*utils.DynamicBoolOpt{ + Accounts: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Attributes: []*utils.DynamicBoolOpt{ + Attributes: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - CDRs: []*utils.DynamicBoolOpt{ + CDRs: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Chargers: []*utils.DynamicBoolOpt{ + Chargers: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Resources: []*utils.DynamicBoolOpt{ + Resources: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Routes: []*utils.DynamicBoolOpt{ + Routes: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Stats: []*utils.DynamicBoolOpt{ + Stats: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Thresholds: []*utils.DynamicBoolOpt{ + Thresholds: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Initiate: []*utils.DynamicBoolOpt{ + Initiate: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Update: []*utils.DynamicBoolOpt{ + Update: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Terminate: []*utils.DynamicBoolOpt{ + Terminate: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - Message: []*utils.DynamicBoolOpt{ + Message: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - AttributesDerivedReply: []*utils.DynamicBoolOpt{ + AttributesDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - BlockerError: []*utils.DynamicBoolOpt{ + BlockerError: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - CDRsDerivedReply: []*utils.DynamicBoolOpt{ + CDRsDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - ResourcesAuthorize: []*utils.DynamicBoolOpt{ + ResourcesAuthorize: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - ResourcesAllocate: []*utils.DynamicBoolOpt{ + ResourcesAllocate: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - ResourcesRelease: []*utils.DynamicBoolOpt{ + ResourcesRelease: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - ResourcesDerivedReply: []*utils.DynamicBoolOpt{ + ResourcesDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - RoutesDerivedReply: []*utils.DynamicBoolOpt{ + RoutesDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - StatsDerivedReply: []*utils.DynamicBoolOpt{ + StatsDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - ThresholdsDerivedReply: []*utils.DynamicBoolOpt{ + ThresholdsDerivedReply: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - MaxUsage: []*utils.DynamicBoolOpt{ + MaxUsage: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - ForceDuration: []*utils.DynamicBoolOpt{ + ForceDuration: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - TTL: []*utils.DynamicStringOpt{ + TTL: []*DynamicStringOpt{ { Tenant: "cgrates.net", Value: "4s", }, }, - Chargeable: []*utils.DynamicBoolOpt{ + Chargeable: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - TTLLastUsage: []*utils.DynamicStringOpt{ + TTLLastUsage: []*DynamicStringOpt{ { Tenant: "cgrates.net", Value: "6s", }, }, - TTLLastUsed: []*utils.DynamicStringOpt{ + TTLLastUsed: []*DynamicStringOpt{ { Tenant: "cgrates.net", Value: "6s", }, }, - DebitInterval: []*utils.DynamicStringOpt{ + DebitInterval: []*DynamicStringOpt{ { Tenant: "cgrates.net", Value: "4s", }, }, - TTLMaxDelay: []*utils.DynamicStringOpt{ + TTLMaxDelay: []*DynamicStringOpt{ { Tenant: "cgrates.net", Value: "4s", }, }, - TTLUsage: []*utils.DynamicStringOpt{ + TTLUsage: []*DynamicStringOpt{ { Tenant: "cgrates.net", Value: "4s", diff --git a/config/statscfg.go b/config/statscfg.go index 51fab685f..646706712 100644 --- a/config/statscfg.go +++ b/config/statscfg.go @@ -31,10 +31,10 @@ var StatsProfileIDsDftOpt = []string{} const StatsProfileIgnoreFilters = false type StatsOpts struct { - ProfileIDs []*utils.DynamicStringSliceOpt - ProfileIgnoreFilters []*utils.DynamicBoolOpt - RoundingDecimals []*utils.DynamicIntOpt - PrometheusStatIDs []*utils.DynamicStringSliceOpt + ProfileIDs []*DynamicStringSliceOpt + ProfileIgnoreFilters []*DynamicBoolOpt + RoundingDecimals []*DynamicIntOpt + PrometheusStatIDs []*DynamicStringSliceOpt } // StatSCfg the stats config section @@ -181,21 +181,21 @@ func (StatSCfg) SName() string { return StatSJSON } func (st StatSCfg) CloneSection() Section { return st.Clone() } func (sqOpts *StatsOpts) Clone() *StatsOpts { - var sqIDs []*utils.DynamicStringSliceOpt + var sqIDs []*DynamicStringSliceOpt if sqOpts.ProfileIDs != nil { - sqIDs = utils.CloneDynamicStringSliceOpt(sqOpts.ProfileIDs) + sqIDs = CloneDynamicStringSliceOpt(sqOpts.ProfileIDs) } - var profileIgnoreFilters []*utils.DynamicBoolOpt + var profileIgnoreFilters []*DynamicBoolOpt if sqOpts.ProfileIgnoreFilters != nil { - profileIgnoreFilters = utils.CloneDynamicBoolOpt(sqOpts.ProfileIgnoreFilters) + profileIgnoreFilters = CloneDynamicBoolOpt(sqOpts.ProfileIgnoreFilters) } - var rounding []*utils.DynamicIntOpt + var rounding []*DynamicIntOpt if sqOpts.RoundingDecimals != nil { - rounding = utils.CloneDynamicIntOpt(sqOpts.RoundingDecimals) + rounding = CloneDynamicIntOpt(sqOpts.RoundingDecimals) } - var promMtrcs []*utils.DynamicStringSliceOpt + var promMtrcs []*DynamicStringSliceOpt if sqOpts.PrometheusStatIDs != nil { - promMtrcs = utils.CloneDynamicStringSliceOpt(sqOpts.PrometheusStatIDs) + promMtrcs = CloneDynamicStringSliceOpt(sqOpts.PrometheusStatIDs) } return &StatsOpts{ ProfileIDs: sqIDs, @@ -243,10 +243,10 @@ func (st StatSCfg) Clone() (cln *StatSCfg) { } type StatsOptsJson struct { - ProfileIDs []*utils.DynamicStringSliceOpt `json:"*profileIDs"` - ProfileIgnoreFilters []*utils.DynamicBoolOpt `json:"*profileIgnoreFilters"` - RoundingDecimals []*utils.DynamicIntOpt `json:"*roundingDecimals"` - PrometheusStatIDs []*utils.DynamicStringSliceOpt `json:"*prometheusStatIDs"` + ProfileIDs []*DynamicStringSliceOpt `json:"*profileIDs"` + ProfileIgnoreFilters []*DynamicBoolOpt `json:"*profileIgnoreFilters"` + RoundingDecimals []*DynamicIntOpt `json:"*roundingDecimals"` + PrometheusStatIDs []*DynamicStringSliceOpt `json:"*prometheusStatIDs"` } // Stat service config section @@ -271,16 +271,16 @@ func diffStatsOptsJsonCfg(d *StatsOptsJson, v1, v2 *StatsOpts) *StatsOptsJson { if d == nil { d = new(StatsOptsJson) } - if !utils.DynamicStringSliceOptEqual(v1.ProfileIDs, v2.ProfileIDs) { + if !DynamicStringSliceOptEqual(v1.ProfileIDs, v2.ProfileIDs) { d.ProfileIDs = v2.ProfileIDs } - if !utils.DynamicBoolOptEqual(v1.ProfileIgnoreFilters, v2.ProfileIgnoreFilters) { + if !DynamicBoolOptEqual(v1.ProfileIgnoreFilters, v2.ProfileIgnoreFilters) { d.ProfileIgnoreFilters = v2.ProfileIgnoreFilters } - if !utils.DynamicIntOptEqual(v1.RoundingDecimals, v2.RoundingDecimals) { + if !DynamicIntOptEqual(v1.RoundingDecimals, v2.RoundingDecimals) { d.RoundingDecimals = v2.RoundingDecimals } - if !utils.DynamicStringSliceOptEqual(v1.PrometheusStatIDs, v2.PrometheusStatIDs) { + if !DynamicStringSliceOptEqual(v1.PrometheusStatIDs, v2.PrometheusStatIDs) { d.PrometheusStatIDs = v2.PrometheusStatIDs } return d diff --git a/config/statscfg_test.go b/config/statscfg_test.go index e07a0093a..73028a5ce 100644 --- a/config/statscfg_test.go +++ b/config/statscfg_test.go @@ -52,10 +52,10 @@ func TestStatSCfgloadFromJsonCfgCase1(t *testing.T) { NotExistsIndexedFields: &[]string{"*req.index1", "*req.index2"}, NestedFields: true, Opts: &StatsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, - RoundingDecimals: []*utils.DynamicIntOpt{}, - PrometheusStatIDs: []*utils.DynamicStringSliceOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, + RoundingDecimals: []*DynamicIntOpt{}, + PrometheusStatIDs: []*DynamicStringSliceOpt{}, }, EEsConns: []string{}, } @@ -73,12 +73,12 @@ func TestStatSCfgloadFromJsonCfgCase1(t *testing.T) { func TestStatSCfgloadFromJsonCfgOptsNil(t *testing.T) { statsOpt := &StatsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Values: []string{}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Value: false, }, @@ -86,12 +86,12 @@ func TestStatSCfgloadFromJsonCfgOptsNil(t *testing.T) { } exp := &StatsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Values: []string{}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Value: false, }, @@ -131,10 +131,10 @@ func TestStatSCfgAsMapInterface(t *testing.T) { utils.NotExistsIndexedFieldsCfg: []string{}, utils.NestedFieldsCfg: false, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, - utils.OptsRoundingDecimals: []*utils.DynamicIntOpt{}, - utils.OptsPrometheusStatIDs: []*utils.DynamicStringSliceOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, + utils.OptsRoundingDecimals: []*DynamicIntOpt{}, + utils.OptsPrometheusStatIDs: []*DynamicStringSliceOpt{}, }, utils.EEsConnsCfg: []string{}, utils.EEsExporterIDsCfg: []string(nil), @@ -175,10 +175,10 @@ func TestStatSCfgAsMapInterface1(t *testing.T) { utils.NotExistsIndexedFieldsCfg: []string{"*req.notexists_indexed_fields"}, utils.NestedFieldsCfg: true, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, - utils.OptsRoundingDecimals: []*utils.DynamicIntOpt{}, - utils.OptsPrometheusStatIDs: []*utils.DynamicStringSliceOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, + utils.OptsRoundingDecimals: []*DynamicIntOpt{}, + utils.OptsPrometheusStatIDs: []*DynamicStringSliceOpt{}, }, utils.EEsConnsCfg: []string{}, utils.EEsExporterIDsCfg: []string(nil), @@ -234,25 +234,25 @@ func TestDiffStatServJsonCfg(t *testing.T) { SuffixIndexedFields: &[]string{"*req.index3"}, NestedFields: false, Opts: &StatsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.org", Values: []string{"statsid1"}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, }, }, - RoundingDecimals: []*utils.DynamicIntOpt{ + RoundingDecimals: []*DynamicIntOpt{ { Tenant: "cgrates.org", Value: 1, }, }, - PrometheusStatIDs: []*utils.DynamicStringSliceOpt{ + PrometheusStatIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.org", Values: []string{"statsid1"}, @@ -272,25 +272,25 @@ func TestDiffStatServJsonCfg(t *testing.T) { SuffixIndexedFields: &[]string{"*req.index33"}, NestedFields: true, Opts: &StatsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.net", Values: []string{"statsid2"}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - RoundingDecimals: []*utils.DynamicIntOpt{ + RoundingDecimals: []*DynamicIntOpt{ { Tenant: "cgrates.net", Value: 2, }, }, - PrometheusStatIDs: []*utils.DynamicStringSliceOpt{ + PrometheusStatIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.net", Values: []string{"statsid2"}, @@ -310,25 +310,25 @@ func TestDiffStatServJsonCfg(t *testing.T) { Suffix_indexed_fields: &[]string{"*req.index33"}, Nested_fields: utils.BoolPointer(true), Opts: &StatsOptsJson{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.net", Values: []string{"statsid2"}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, }, }, - RoundingDecimals: []*utils.DynamicIntOpt{ + RoundingDecimals: []*DynamicIntOpt{ { Tenant: "cgrates.net", Value: 2, }, }, - PrometheusStatIDs: []*utils.DynamicStringSliceOpt{ + PrometheusStatIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.net", Values: []string{"statsid2"}, @@ -364,7 +364,7 @@ func TestStatSCloneSection(t *testing.T) { SuffixIndexedFields: &[]string{"*req.index3"}, NestedFields: false, Opts: &StatsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, }, } @@ -379,7 +379,7 @@ func TestStatSCloneSection(t *testing.T) { SuffixIndexedFields: &[]string{"*req.index3"}, NestedFields: false, Opts: &StatsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, }, } diff --git a/config/thresholdscfg.go b/config/thresholdscfg.go index 55c1b404f..d3e1365a1 100644 --- a/config/thresholdscfg.go +++ b/config/thresholdscfg.go @@ -31,8 +31,8 @@ var ThresholdsProfileIDsDftOpt = []string{} const ThresholdsProfileIgnoreFiltersDftOpt = false type ThresholdsOpts struct { - ProfileIDs []*utils.DynamicStringSliceOpt - ProfileIgnoreFilters []*utils.DynamicBoolOpt + ProfileIDs []*DynamicStringSliceOpt + ProfileIgnoreFilters []*DynamicBoolOpt } // ThresholdSCfg the threshold config section @@ -155,13 +155,13 @@ func (ThresholdSCfg) SName() string { return ThresholdSJSON } func (t ThresholdSCfg) CloneSection() Section { return t.Clone() } func (thdOpts *ThresholdsOpts) Clone() *ThresholdsOpts { - var thIDs []*utils.DynamicStringSliceOpt + var thIDs []*DynamicStringSliceOpt if thdOpts.ProfileIDs != nil { - thIDs = utils.CloneDynamicStringSliceOpt(thdOpts.ProfileIDs) + thIDs = CloneDynamicStringSliceOpt(thdOpts.ProfileIDs) } - var profileIgnoreFilters []*utils.DynamicBoolOpt + var profileIgnoreFilters []*DynamicBoolOpt if thdOpts.ProfileIgnoreFilters != nil { - profileIgnoreFilters = utils.CloneDynamicBoolOpt(thdOpts.ProfileIgnoreFilters) + profileIgnoreFilters = CloneDynamicBoolOpt(thdOpts.ProfileIgnoreFilters) } return &ThresholdsOpts{ ProfileIDs: thIDs, @@ -201,8 +201,8 @@ func (t ThresholdSCfg) Clone() (cln *ThresholdSCfg) { } type ThresholdsOptsJson struct { - ProfileIDs []*utils.DynamicStringSliceOpt `json:"*profileIDs"` - ProfileIgnoreFilters []*utils.DynamicBoolOpt `json:"*profileIgnoreFilters"` + ProfileIDs []*DynamicStringSliceOpt `json:"*profileIDs"` + ProfileIgnoreFilters []*DynamicBoolOpt `json:"*profileIgnoreFilters"` } // Threshold service config section @@ -224,10 +224,10 @@ func diffThresholdsOptsJsonCfg(d *ThresholdsOptsJson, v1, v2 *ThresholdsOpts) *T if d == nil { d = new(ThresholdsOptsJson) } - if !utils.DynamicStringSliceOptEqual(v1.ProfileIDs, v2.ProfileIDs) { + if !DynamicStringSliceOptEqual(v1.ProfileIDs, v2.ProfileIDs) { d.ProfileIDs = v2.ProfileIDs } - if !utils.DynamicBoolOptEqual(v1.ProfileIgnoreFilters, v2.ProfileIgnoreFilters) { + if !DynamicBoolOptEqual(v1.ProfileIgnoreFilters, v2.ProfileIgnoreFilters) { d.ProfileIgnoreFilters = v2.ProfileIgnoreFilters } return d diff --git a/config/thresholdscfg_test.go b/config/thresholdscfg_test.go index 537c50881..04d565b42 100644 --- a/config/thresholdscfg_test.go +++ b/config/thresholdscfg_test.go @@ -51,8 +51,8 @@ func TestThresholdSCfgloadFromJsonCfgCase1(t *testing.T) { NestedFields: true, ActionSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaActions)}, Opts: &ThresholdsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, + ProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } jsonCfg := NewDefaultCGRConfig() @@ -70,13 +70,13 @@ func TestThresholdSCfgloadFromJsonCfgCase1(t *testing.T) { func TestThresholdSLoadFromJsonOpts(t *testing.T) { thrsOpt := &ThresholdsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.org", Values: []string{"thsd_p1"}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: true, @@ -84,13 +84,13 @@ func TestThresholdSLoadFromJsonOpts(t *testing.T) { }, } exp := &ThresholdsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.org", Values: []string{"thsd_p1"}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: true, @@ -129,8 +129,8 @@ func TestThresholdSCfgAsMapInterfaceCase1(t *testing.T) { utils.NestedFieldsCfg: false, utils.ActionSConnsCfg: []string{}, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -167,8 +167,8 @@ func TestThresholdSCfgAsMapInterfaceCase2(t *testing.T) { utils.NestedFieldsCfg: true, utils.ActionSConnsCfg: []string{utils.MetaInternal}, utils.OptsCfg: map[string]any{ - utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{}, - utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{}, + utils.MetaProfileIDs: []*DynamicStringSliceOpt{}, + utils.MetaProfileIgnoreFilters: []*DynamicBoolOpt{}, }, } if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { @@ -216,13 +216,13 @@ func TestDiffThresholdSJsonCfg(t *testing.T) { ActionSConns: []string{}, NestedFields: false, Opts: &ThresholdsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.org", Values: []string{"thsr_p1"}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.org", Value: false, @@ -241,13 +241,13 @@ func TestDiffThresholdSJsonCfg(t *testing.T) { ActionSConns: []string{"*internal"}, NestedFields: true, Opts: &ThresholdsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.net", Values: []string{"thsr_p2"}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, @@ -266,13 +266,13 @@ func TestDiffThresholdSJsonCfg(t *testing.T) { Actions_conns: &[]string{"*internal"}, Nested_fields: utils.BoolPointer(true), Opts: &ThresholdsOptsJson{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*DynamicStringSliceOpt{ { Tenant: "cgrates.net", Values: []string{"thsr_p2"}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*DynamicBoolOpt{ { Tenant: "cgrates.net", Value: true, @@ -307,7 +307,7 @@ func TestThresholdSCloneSection(t *testing.T) { ActionSConns: []string{}, NestedFields: false, Opts: &ThresholdsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, }, } @@ -321,7 +321,7 @@ func TestThresholdSCloneSection(t *testing.T) { ActionSConns: []string{}, NestedFields: false, Opts: &ThresholdsOpts{ - ProfileIDs: []*utils.DynamicStringSliceOpt{}, + ProfileIDs: []*DynamicStringSliceOpt{}, }, } diff --git a/engine/coverage.out b/engine/coverage.out deleted file mode 100644 index 5f02b1119..000000000 --- a/engine/coverage.out +++ /dev/null @@ -1 +0,0 @@ -mode: set diff --git a/engine/libdynopts.go b/engine/libdynopts.go index 3981211a7..52f4c9ebb 100644 --- a/engine/libdynopts.go +++ b/engine/libdynopts.go @@ -24,13 +24,14 @@ import ( "time" "github.com/cgrates/birpc/context" + "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/utils" "github.com/ericlagergren/decimal" ) // GetFloat64Opts checks the specified option names in order among the keys in APIOpts returning the first value it finds as float64, otherwise it // returns the config option if at least one filter passes or the default value if none of them do -func GetFloat64Opts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*utils.DynamicFloat64Opt, +func GetFloat64Opts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*config.DynamicFloat64Opt, dftOpt float64, optNames ...string) (cfgOpt float64, err error) { for _, optName := range optNames { if opt, has := ev.APIOpts[optName]; has { @@ -53,7 +54,7 @@ func GetFloat64Opts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *Fi // GetDurationOpts checks the specified option names in order among the keys in APIOpts returning the first value it finds as time.Duration, otherwise it // returns the config option if at least one filter passes or the default value if none of them do -func GetDurationOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*utils.DynamicDurationOpt, +func GetDurationOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*config.DynamicDurationOpt, dftOpt time.Duration, optNames ...string) (cfgOpt time.Duration, err error) { for _, optName := range optNames { if opt, has := ev.APIOpts[optName]; has { @@ -76,7 +77,7 @@ func GetDurationOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *F // GetStringOpts checks the specified option names in order among the keys in APIOpts returning the first value it finds as string, otherwise it // returns the config option if at least one filter passes or the default value if none of them do -func GetStringOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*utils.DynamicStringOpt, +func GetStringOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*config.DynamicStringOpt, dftOpt string, optNames ...string) (cfgOpt string, err error) { for _, optName := range optNames { if opt, has := ev.APIOpts[optName]; has { @@ -99,7 +100,7 @@ func GetStringOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *Fil // GetTimeOpts checks the specified option names in order among the keys in APIOpts returning the first value it finds as time.Time, otherwise it // returns the config option if at least one filter passes or the default value if none of them do -func GetTimeOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*utils.DynamicStringOpt, +func GetTimeOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*config.DynamicStringOpt, tmz string, dftOpt string, optNames ...string) (_ time.Time, err error) { for _, optName := range optNames { if opt, has := ev.APIOpts[optName]; has { @@ -123,7 +124,7 @@ func GetTimeOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *Filte // GetStringSliceOpts checks the specified option names in order among the keys in APIOpts returning the first value it finds as []string, otherwise it // returns the config option if at least one filter passes or the default value if none of them do -func GetStringSliceOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*utils.DynamicStringSliceOpt, +func GetStringSliceOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*config.DynamicStringSliceOpt, dftOpt []string, optNames ...string) (cfgOpt []string, err error) { for _, optName := range optNames { if opt, has := ev.APIOpts[optName]; has { @@ -146,7 +147,7 @@ func GetStringSliceOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS // GetIntOpts checks the specified option names in order among the keys in APIOpts returning the first value it finds as int, otherwise it // returns the config option if at least one filter passes or the default value if none of them do -func GetIntOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*utils.DynamicIntOpt, +func GetIntOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*config.DynamicIntOpt, dftOpt int, optNames ...string) (cfgOpt int, err error) { for _, optName := range optNames { if opt, has := ev.APIOpts[optName]; has { @@ -173,7 +174,7 @@ func GetIntOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *Filter // GetBoolOpts checks the specified option names in order among the keys in APIOpts returning the first value it finds as bool, otherwise it // returns the config option if at least one filter passes or the default value if none of them do -func GetBoolOpts(ctx *context.Context, tnt string, dP utils.DataProvider, fS *FilterS, dynOpts []*utils.DynamicBoolOpt, +func GetBoolOpts(ctx *context.Context, tnt string, dP utils.DataProvider, fS *FilterS, dynOpts []*config.DynamicBoolOpt, dftOpt bool, optNames ...string) (cfgOpt bool, err error) { values, err := dP.FieldAsInterface([]string{utils.MetaOpts}) if err != nil { @@ -203,7 +204,7 @@ func GetBoolOpts(ctx *context.Context, tnt string, dP utils.DataProvider, fS *Fi // GetDecimalBigOpts checks the specified option names in order among the keys in APIOpts returning the first value it finds as *decimal.Big, otherwise it // returns the config option if at least one filter passes or the default value if none of them do -func GetDecimalBigOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*utils.DynamicDecimalBigOpt, +func GetDecimalBigOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*config.DynamicDecimalOpt, dftOpt *decimal.Big, optNames ...string) (cfgOpt *decimal.Big, err error) { for _, optName := range optNames { if opt, has := ev.APIOpts[optName]; has { @@ -218,7 +219,7 @@ func GetDecimalBigOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS if pass, err := fS.Pass(ctx, tnt, opt.FilterIDs, evDP); err != nil { // check if the filter is passing for the DataProvider and return the option if it does return nil, err } else if pass { - return opt.Value, nil + return opt.Value(evDP) } } return dftOpt, nil // return the default value if there are no options and none of the filters pass @@ -226,7 +227,7 @@ func GetDecimalBigOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS // GetInterfaceOpts checks the specified option names in order among the keys in APIOpts returning the first value it finds as any, otherwise it // returns the config option if at least one filter passes or the default value if none of them do -func GetInterfaceOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*utils.DynamicInterfaceOpt, +func GetInterfaceOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*config.DynamicInterfaceOpt, dftOpt any, optNames ...string) (cfgOpt any, err error) { for _, optName := range optNames { if opt, has := ev.APIOpts[optName]; has { @@ -249,7 +250,7 @@ func GetInterfaceOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS * // GetIntPointerOpts checks the specified option names in order among the keys in APIOpts returning the first value it finds as *int, otherwise it // returns the config option if at least one filter passes or NOT_FOUND if none of them do -func GetIntPointerOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*utils.DynamicIntPointerOpt, +func GetIntPointerOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *FilterS, dynOpts []*config.DynamicIntPointerOpt, optNames ...string) (cfgOpt *int, err error) { for _, optName := range optNames { if opt, has := ev.APIOpts[optName]; has { @@ -277,7 +278,7 @@ func GetIntPointerOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS // GetDurationPointerOptsFromMultipleMaps checks the specified option names in order among the keys in APIOpts, then in startOpts, returning the first value it finds as *time.Duration, // otherwise it returns the config option if at least one filter passes or NOT_FOUND if none of them do func GetDurationPointerOptsFromMultipleMaps(ctx *context.Context, tnt string, eventStart, apiOpts, startOpts map[string]any, fS *FilterS, - dynOpts []*utils.DynamicDurationPointerOpt, optName string) (cfgOpt *time.Duration, err error) { + dynOpts []*config.DynamicDurationPointerOpt, optName string) (cfgOpt *time.Duration, err error) { var value time.Duration if opt, has := apiOpts[optName]; has { if value, err = utils.IfaceAsDuration(opt); err != nil { @@ -309,7 +310,7 @@ func GetDurationPointerOptsFromMultipleMaps(ctx *context.Context, tnt string, ev // GetDurationOptsFromMultipleMaps checks the specified option names in order among the keys in APIOpts, then in startOpts, returning the first value it finds as time.Duration, // otherwise it returns the config option if at least one filter passes or the default one if none of them do -func GetDurationOptsFromMultipleMaps(ctx *context.Context, tnt string, eventStart, apiOpts, startOpts map[string]any, fS *FilterS, dynOpts []*utils.DynamicDurationOpt, +func GetDurationOptsFromMultipleMaps(ctx *context.Context, tnt string, eventStart, apiOpts, startOpts map[string]any, fS *FilterS, dynOpts []*config.DynamicDurationOpt, dftOpt time.Duration, optName string) (cfgOpt time.Duration, err error) { var value time.Duration if opt, has := apiOpts[optName]; has { diff --git a/engine/libdynopts_test.go b/engine/libdynopts_test.go index 668df799f..db8427d88 100644 --- a/engine/libdynopts_test.go +++ b/engine/libdynopts_test.go @@ -19,6 +19,7 @@ along with this program. If not, see package engine import ( + "fmt" "reflect" "testing" "time" @@ -42,7 +43,7 @@ func TestLibFiltersGetFloat64OptsReturnConfigOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicFloat64Opt{ + dynOpts := []*config.DynamicFloat64Opt{ // tenant will not be recognized, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1001"}, @@ -84,7 +85,7 @@ func TestLibFiltersGetFloat64OptsFilterCheckErr(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicFloat64Opt{ + dynOpts := []*config.DynamicFloat64Opt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, @@ -114,7 +115,7 @@ func TestLibFiltersGetFloat64OptsReturnDefaultOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicFloat64Opt{ + dynOpts := []*config.DynamicFloat64Opt{ // filter will not pass, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1002"}, @@ -146,7 +147,7 @@ func TestLibFiltersGetFloat64OptsReturnOptFromAPIOpts(t *testing.T) { utils.OptsResourcesUnits: 6, }, } - dynOpts := []*utils.DynamicFloat64Opt{ + dynOpts := []*config.DynamicFloat64Opt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -178,7 +179,7 @@ func TestLibFiltersGetStringOptsReturnConfigOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicStringOpt{ + dynOpts := []*config.DynamicStringOpt{ // tenant will not be recognized, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1001"}, @@ -220,7 +221,7 @@ func TestLibFiltersGetStringOptsFilterCheckErr(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicStringOpt{ + dynOpts := []*config.DynamicStringOpt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, @@ -250,7 +251,7 @@ func TestLibFiltersGetStringOptsReturnDefaultOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicStringOpt{ + dynOpts := []*config.DynamicStringOpt{ // filter will not pass, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1002"}, @@ -282,7 +283,7 @@ func TestLibFiltersGetStringOptsReturnOptFromAPIOpts(t *testing.T) { utils.OptsResourcesUsageID: "value4", }, } - dynOpts := []*utils.DynamicStringOpt{ + dynOpts := []*config.DynamicStringOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -314,7 +315,7 @@ func TestLibFiltersGetDurationOptsReturnConfigOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicDurationOpt{ + dynOpts := []*config.DynamicDurationOpt{ // tenant will not be recognized, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1001"}, @@ -356,7 +357,7 @@ func TestLibFiltersGetDurationOptsFilterCheckErr(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicDurationOpt{ + dynOpts := []*config.DynamicDurationOpt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, @@ -386,7 +387,7 @@ func TestLibFiltersGetDurationOptsReturnDefaultOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicDurationOpt{ + dynOpts := []*config.DynamicDurationOpt{ // filter will not pass, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1002"}, @@ -418,7 +419,7 @@ func TestLibFiltersGetDurationOptsReturnOptFromAPIOpts(t *testing.T) { utils.OptsResourcesUsageTTL: time.Hour, }, } - dynOpts := []*utils.DynamicDurationOpt{ + dynOpts := []*config.DynamicDurationOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -450,7 +451,7 @@ func TestLibFiltersGetIntOptsReturnConfigOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicIntOpt{ + dynOpts := []*config.DynamicIntOpt{ // tenant will not be recognized, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1001"}, @@ -492,7 +493,7 @@ func TestLibFiltersGetIntOptsFilterCheckErr(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicIntOpt{ + dynOpts := []*config.DynamicIntOpt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, @@ -522,7 +523,7 @@ func TestLibFiltersGetIntOptsReturnDefaultOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicIntOpt{ + dynOpts := []*config.DynamicIntOpt{ // filter will not pass, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1002"}, @@ -554,7 +555,7 @@ func TestLibFiltersGetIntOptsReturnOptFromAPIOptsOK(t *testing.T) { utils.OptsAttributesProcessRuns: 6, }, } - dynOpts := []*utils.DynamicIntOpt{ + dynOpts := []*config.DynamicIntOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -588,7 +589,7 @@ func TestLibFiltersGetIntOptsReturnOptFromAPIOptsErr(t *testing.T) { utils.OptsAttributesProcessRuns: true, }, } - dynOpts := []*utils.DynamicIntOpt{ + dynOpts := []*config.DynamicIntOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -618,7 +619,7 @@ func TestLibFiltersGetTimeOptsReturnConfigOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicStringOpt{ + dynOpts := []*config.DynamicStringOpt{ // tenant will not be recognized, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1001"}, @@ -660,7 +661,7 @@ func TestLibFiltersGetTimeOptsFilterCheckErr(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicStringOpt{ + dynOpts := []*config.DynamicStringOpt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, @@ -690,7 +691,7 @@ func TestLibFiltersGetTimeOptsReturnDefaultOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicStringOpt{ + dynOpts := []*config.DynamicStringOpt{ // filter will not pass, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1002"}, @@ -726,7 +727,7 @@ func TestLibFiltersGetTimeOptsReturnOptFromAPIOpts(t *testing.T) { utils.OptsRatesStartTime: "*yearly", }, } - dynOpts := []*utils.DynamicStringOpt{ + dynOpts := []*config.DynamicStringOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -764,7 +765,7 @@ func TestLibFiltersGetBoolOptsReturnConfigOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicBoolOpt{ + dynOpts := []*config.DynamicBoolOpt{ // tenant will not be recognized, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1001"}, @@ -806,7 +807,7 @@ func TestLibFiltersGetBoolOptsFilterCheckErr(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicBoolOpt{ + dynOpts := []*config.DynamicBoolOpt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, @@ -836,7 +837,7 @@ func TestLibFiltersGetBoolOptsReturnDefaultOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicBoolOpt{ + dynOpts := []*config.DynamicBoolOpt{ // filter will not pass, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1002"}, @@ -868,7 +869,7 @@ func TestLibFiltersGetBoolOptsReturnOptFromAPIOpts(t *testing.T) { utils.MetaProfileIgnoreFilters: true, }, } - dynOpts := []*utils.DynamicBoolOpt{ + dynOpts := []*config.DynamicBoolOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -900,7 +901,7 @@ func TestLibFiltersGetInterfaceOptsReturnConfigOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicInterfaceOpt{ + dynOpts := []*config.DynamicInterfaceOpt{ // tenant will not be recognized, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1001"}, @@ -942,7 +943,7 @@ func TestLibFiltersGetInterfaceOptsFilterCheckErr(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicInterfaceOpt{ + dynOpts := []*config.DynamicInterfaceOpt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, @@ -972,7 +973,7 @@ func TestLibFiltersGetInterfaceOptsReturnDefaultOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicInterfaceOpt{ + dynOpts := []*config.DynamicInterfaceOpt{ // filter will not pass, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1002"}, @@ -1004,7 +1005,7 @@ func TestLibFiltersGetInterfaceOptsReturnOptFromAPIOpts(t *testing.T) { utils.OptsRoutesMaxCost: 4, }, } - dynOpts := []*utils.DynamicInterfaceOpt{ + dynOpts := []*config.DynamicInterfaceOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -1036,7 +1037,7 @@ func TestLibFiltersGetStringSliceOptsReturnConfigOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicStringSliceOpt{ + dynOpts := []*config.DynamicStringSliceOpt{ // tenant will not be recognized, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1001"}, @@ -1078,7 +1079,7 @@ func TestLibFiltersGetStringSliceOptsFilterCheckErr(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicStringSliceOpt{ + dynOpts := []*config.DynamicStringSliceOpt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, @@ -1108,7 +1109,7 @@ func TestLibFiltersGetStringSliceOptsReturnDefaultOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicStringSliceOpt{ + dynOpts := []*config.DynamicStringSliceOpt{ // filter will not pass, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1002"}, @@ -1140,7 +1141,7 @@ func TestLibFiltersGetStringSliceOptsReturnOptFromAPIOpts(t *testing.T) { utils.OptsAttributesProfileIDs: []string{"value4"}, }, } - dynOpts := []*utils.DynamicStringSliceOpt{ + dynOpts := []*config.DynamicStringSliceOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -1172,27 +1173,27 @@ func TestLibFiltersGetDecimalBigOptsReturnConfigOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicDecimalBigOpt{ - // tenant will not be recognized, will ignore this opt + strOpts := []*config.DynamicStringOpt{ { FilterIDs: []string{"*string:~*req.Account:1001"}, Tenant: "cgrates.net", - Value: decimal.New(42, 0), + Value: "42", }, // filter will not pass, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1002"}, Tenant: "cgrates.org", - Value: decimal.New(-1, 0), + Value: "-1", }, { FilterIDs: []string{"*string:~*req.Account:1001"}, Tenant: "cgrates.org", - Value: decimal.New(1234, 3), + Value: "1234", }, } + dynOpts, _ := config.StringToDecimalBigDynamicOpts(strOpts) - expected := decimal.New(1234, 3) + expected := decimal.New(1234, 0) if rcv, err := GetDecimalBigOpts(context.Background(), "cgrates.org", ev, fS, dynOpts, config.RatesUsageDftOpt, utils.OptsRatesUsage); err != nil { t.Error(err) @@ -1201,6 +1202,107 @@ func TestLibFiltersGetDecimalBigOptsReturnConfigOpt(t *testing.T) { } } +func TestDynamicDecimalBigOptsDynVal(t *testing.T) { + tests := []struct { + name string + dynOpts []*config.DynamicStringOpt + expVal int64 + expErr error + }{ + { + name: "DynOptsVal", + dynOpts: []*config.DynamicStringOpt{ + { + Tenant: "cgrates.org", + Value: "~*opts.*usage", + }, + }, + expVal: int64(time.Second * 27), + }, + { + name: "DynReqVal", + dynOpts: []*config.DynamicStringOpt{ + { + Tenant: "cgrates.org", + Value: "~*req.Usage", + }, + }, + expVal: int64(time.Second * 12), + }, + { + name: "StaticVal", + dynOpts: []*config.DynamicStringOpt{ + { + Tenant: "cgrates.org", + Value: "4334", + }, + }, + expVal: 4334, + }, + { + name: "NotFound", + dynOpts: []*config.DynamicStringOpt{ + { + Tenant: "cgrates.org", + Value: "~*req.RandomField", + }, + }, + expErr: utils.ErrNotFound, + }, + { + name: "ValueNotConvertedCorrectly", + dynOpts: []*config.DynamicStringOpt{ + { + Tenant: "cgrates.org", + Value: "~*req.Usage2", + }, + }, + expErr: fmt.Errorf("can't convert to decimal"), + }, + } + + ev := &utils.CGREvent{ + Tenant: utils.CGRateSorg, + ID: "testIDEvent", + Event: map[string]any{ + utils.AccountField: "1001", + utils.Usage: "12s", + "Usage2": "twenty-five", + }, + APIOpts: map[string]any{ + utils.MetaUsage: "27s", + }, + } + fs := NewFilterS(config.CgrConfig(), nil, nil) + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + dynOpts, err := config.StringToDecimalBigDynamicOpts(tt.dynOpts) + if err != nil { + t.Error(err) + return + } + out, err := GetDecimalBigOpts(context.Background(), "cgrates.org", ev, fs, dynOpts, config.RatesUsageDftOpt, utils.OptsRatesUsage) + if tt.expErr != nil { + if err == nil { + t.Error("expected err,received nil") + } + if err.Error() != tt.expErr.Error() { + t.Errorf("expected error %v,received %v", tt.expErr, err) + } + return + } + if err != nil { + t.Errorf("unexpected err %v", err) + } + val, _ := out.Int64() + if tt.expVal != val { + t.Errorf("expected %d,received %d", tt.expVal, val) + } + }) + } +} + func TestLibFiltersGetDecimalBigOptsFilterCheckErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() dataDB := NewInternalDB(nil, nil, nil) @@ -1214,15 +1316,15 @@ func TestLibFiltersGetDecimalBigOptsFilterCheckErr(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicDecimalBigOpt{ + strOpts := []*config.DynamicStringOpt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, Tenant: "cgrates.org", - Value: decimal.New(-1, 0), + Value: "-1", }, } - + dynOpts, _ := config.StringToDecimalBigDynamicOpts(strOpts) experr := `inline parse error for string: <*string.invalid:filter>` if _, err := GetDecimalBigOpts(context.Background(), "cgrates.org", ev, fS, dynOpts, config.RatesUsageDftOpt, utils.OptsRatesUsage); err == nil || @@ -1244,15 +1346,14 @@ func TestLibFiltersGetDecimalBigOptsReturnDefaultOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicDecimalBigOpt{ - // filter will not pass, will ignore this opt + strOpts := []*config.DynamicStringOpt{ { FilterIDs: []string{"*string:~*req.Account:1002"}, Tenant: "cgrates.org", - Value: decimal.New(-1, 0), + Value: "-1", }, } - + dynOpts, _ := config.StringToDecimalBigDynamicOpts(strOpts) if rcv, err := GetDecimalBigOpts(context.Background(), "cgrates.org", ev, fS, dynOpts, config.RatesUsageDftOpt, utils.OptsRatesUsage); err != nil { t.Error(err) @@ -1276,15 +1377,17 @@ func TestLibFiltersGetDecimalBigOptsReturnOptFromAPIOpts(t *testing.T) { utils.OptsRatesUsage: decimal.New(4321, 5), }, } - dynOpts := []*utils.DynamicDecimalBigOpt{ + + strOpts := []*config.DynamicStringOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { FilterIDs: []string{"*string:~*req.Account:1001"}, Tenant: "cgrates.org", - Value: decimal.New(1234, 3), + Value: "1234", }, } + dynOpts, _ := config.StringToDecimalBigDynamicOpts(strOpts) expected := decimal.New(4321, 5) if rcv, err := GetDecimalBigOpts(context.Background(), "cgrates.org", ev, fS, dynOpts, @@ -1308,7 +1411,7 @@ func TestLibFiltersGetIntPointerOptsReturnConfigOpt(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicIntPointerOpt{ + dynOpts := []*config.DynamicIntPointerOpt{ // tenant will not be recognized, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1001"}, @@ -1350,7 +1453,7 @@ func TestLibFiltersGetIntPointerOptsFilterCheckErr(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicIntPointerOpt{ + dynOpts := []*config.DynamicIntPointerOpt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, @@ -1380,7 +1483,7 @@ func TestLibFiltersGetIntPointerOptsReturnDft(t *testing.T) { }, APIOpts: map[string]any{}, } - dynOpts := []*utils.DynamicIntPointerOpt{ + dynOpts := []*config.DynamicIntPointerOpt{ // filter will not pass, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1002"}, @@ -1412,7 +1515,7 @@ func TestLibFiltersGetIntPointerOptsReturnOptFromAPIOptsOK(t *testing.T) { utils.OptsRoutesProfilesCount: 6, }, } - dynOpts := []*utils.DynamicIntPointerOpt{ + dynOpts := []*config.DynamicIntPointerOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -1446,7 +1549,7 @@ func TestLibFiltersGetIntPointerOptsReturnOptFromAPIOptsErr(t *testing.T) { utils.OptsRoutesProfilesCount: true, }, } - dynOpts := []*utils.DynamicIntPointerOpt{ + dynOpts := []*config.DynamicIntPointerOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -1473,7 +1576,7 @@ func TestLibFiltersGetDurationOptsFromMultipleMapsReturnConfigOpt(t *testing.T) } apiOpts := map[string]any{} startOpts := map[string]any{} - dynOpts := []*utils.DynamicDurationOpt{ + dynOpts := []*config.DynamicDurationOpt{ // tenant will not be recognized, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1001"}, @@ -1512,7 +1615,7 @@ func TestLibFiltersGetDurationOptsFromMultipleMapsFilterCheckErr(t *testing.T) { } apiOpts := map[string]any{} startOpts := map[string]any{} - dynOpts := []*utils.DynamicDurationOpt{ + dynOpts := []*config.DynamicDurationOpt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, @@ -1539,7 +1642,7 @@ func TestLibFiltersGetDurationOptsFromMultipleMapsErrNotFound(t *testing.T) { } apiOpts := map[string]any{} startOpts := map[string]any{} - dynOpts := []*utils.DynamicDurationOpt{ + dynOpts := []*config.DynamicDurationOpt{ // filter will not pass, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1002"}, @@ -1568,7 +1671,7 @@ func TestLibFiltersGetDurationOptsFromMultipleMapsReturnOptFromAPIOptsOK(t *test utils.OptsSesTTL: time.Hour, } startOpts := map[string]any{} - dynOpts := []*utils.DynamicDurationOpt{ + dynOpts := []*config.DynamicDurationOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -1599,7 +1702,7 @@ func TestLibFiltersGetDurationOptsFromMultipleMapsReturnOptFromAPIOptsErr(t *tes utils.OptsSesTTL: true, } startOpts := map[string]any{} - dynOpts := []*utils.DynamicDurationOpt{ + dynOpts := []*config.DynamicDurationOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -1628,7 +1731,7 @@ func TestLibFiltersGetDurationOptsFromMultipleMapsReturnOptFromStartOptsOK(t *te startOpts := map[string]any{ utils.OptsSesTTL: time.Hour, } - dynOpts := []*utils.DynamicDurationOpt{ + dynOpts := []*config.DynamicDurationOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -1659,7 +1762,7 @@ func TestLibFiltersGetDurationOptsFromMultipleMapsReturnOptFromStartOptsErr(t *t startOpts := map[string]any{ utils.OptsSesTTL: true, } - dynOpts := []*utils.DynamicDurationOpt{ + dynOpts := []*config.DynamicDurationOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -1686,7 +1789,7 @@ func TestLibFiltersGetDurationPointerOptsFromMultipleMapsReturnConfigOpt(t *test } apiOpts := map[string]any{} startOpts := map[string]any{} - dynOpts := []*utils.DynamicDurationPointerOpt{ + dynOpts := []*config.DynamicDurationPointerOpt{ // tenant will not be recognized, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1001"}, @@ -1725,7 +1828,7 @@ func TestLibFiltersGetDurationPointerOptsFromMultipleMapsFilterCheckErr(t *testi } apiOpts := map[string]any{} startOpts := map[string]any{} - dynOpts := []*utils.DynamicDurationPointerOpt{ + dynOpts := []*config.DynamicDurationPointerOpt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, @@ -1752,7 +1855,7 @@ func TestLibFiltersGetDurationPointerOptsFromMultipleMapsReturnDft(t *testing.T) } apiOpts := map[string]any{} startOpts := map[string]any{} - dynOpts := []*utils.DynamicDurationPointerOpt{ + dynOpts := []*config.DynamicDurationPointerOpt{ // filter will not pass, will ignore this opt { FilterIDs: []string{"*string:~*req.Account:1002"}, @@ -1779,7 +1882,7 @@ func TestLibFiltersGetDurationPointerOptsFromMultipleMapsReturnOptFromAPIOptsOK( utils.OptsSesTTLUsage: time.Hour, } startOpts := map[string]any{} - dynOpts := []*utils.DynamicDurationPointerOpt{ + dynOpts := []*config.DynamicDurationPointerOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -1810,7 +1913,7 @@ func TestLibFiltersGetDurationPointerOptsFromMultipleMapsReturnOptFromAPIOptsErr utils.OptsSesTTLUsage: true, } startOpts := map[string]any{} - dynOpts := []*utils.DynamicDurationPointerOpt{ + dynOpts := []*config.DynamicDurationPointerOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -1839,7 +1942,7 @@ func TestLibFiltersGetDurationPointerOptsFromMultipleMapsReturnOptFromStartOptsO startOpts := map[string]any{ utils.OptsSesTTLUsage: time.Hour, } - dynOpts := []*utils.DynamicDurationPointerOpt{ + dynOpts := []*config.DynamicDurationPointerOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -1870,7 +1973,7 @@ func TestLibFiltersGetDurationPointerOptsFromMultipleMapsReturnOptFromStartOptsE startOpts := map[string]any{ utils.OptsSesTTLUsage: true, } - dynOpts := []*utils.DynamicDurationPointerOpt{ + dynOpts := []*config.DynamicDurationPointerOpt{ // will never get to this opt because it will return once it // finds the one set in APIOpts { @@ -1893,7 +1996,7 @@ func TestGetBoolOptsFieldAsInterfaceErr(t *testing.T) { dataDB := NewInternalDB(nil, nil, nil) dm := NewDataManager(dataDB, cfg.CacheCfg(), nil) fS := NewFilterS(cfg, nil, dm) - dynOpts := []*utils.DynamicBoolOpt{ + dynOpts := []*config.DynamicBoolOpt{ { FilterIDs: []string{"*string:~*req.Account:1001"}, Tenant: "cgrates.org", @@ -1913,7 +2016,7 @@ func TestGetBoolOptsCantCastErr(t *testing.T) { dataDB := NewInternalDB(nil, nil, nil) dm := NewDataManager(dataDB, cfg.CacheCfg(), nil) fS := NewFilterS(cfg, nil, dm) - dynOpts := []*utils.DynamicBoolOpt{ + dynOpts := []*config.DynamicBoolOpt{ { FilterIDs: []string{"*string:~*req.Account:1001"}, Tenant: "cgrates.org", diff --git a/engine/route_cost_sort_test.go b/engine/route_cost_sort_test.go index 91dbd4f02..1b7a35dac 100644 --- a/engine/route_cost_sort_test.go +++ b/engine/route_cost_sort_test.go @@ -29,7 +29,6 @@ import ( "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/utils" - "github.com/ericlagergren/decimal" ) // func TestPopulateCostForRoutesConnRefused(t *testing.T) { @@ -273,13 +272,15 @@ func TestPopulateCostForRoutesGetDecimalBigOptsErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.RouteSCfg().RateSConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaRates)} - cfg.RouteSCfg().Opts.Usage = []*utils.DynamicDecimalBigOpt{ + strOpts := []*config.DynamicStringOpt{ { FilterIDs: []string{"*string.invalid:filter"}, Tenant: "cgrates.org", - Value: decimal.New(-1, 0), + Value: "-1", }, } + dynOpts, _ := config.StringToDecimalBigDynamicOpts(strOpts) + cfg.RouteSCfg().Opts.Usage = dynOpts cM := NewConnManager(cfg) fltrS := NewFilterS(cfg, cM, nil) routes := map[string]*RouteWithWeight{ diff --git a/engine/routes_test.go b/engine/routes_test.go index ad3950577..9aa6d4e10 100644 --- a/engine/routes_test.go +++ b/engine/routes_test.go @@ -499,7 +499,7 @@ func TestRoutesNewOptsGetRoutes(t *testing.T) { } func TestRoutesNewOptsGetRoutesFromCfg(t *testing.T) { - config.CgrConfig().RouteSCfg().Opts.IgnoreErrors = []*utils.DynamicBoolOpt{{Value: true}} + config.CgrConfig().RouteSCfg().Opts.IgnoreErrors = []*config.DynamicBoolOpt{{Value: true}} ev := &utils.CGREvent{ APIOpts: map[string]any{}, } @@ -1763,7 +1763,7 @@ func TestRouteSMatchingRPSForEventBlockerFromDynamicsErr(t *testing.T) { func TestNewOptsGetRoutesGetBoolOptsErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.RouteSCfg().Opts.IgnoreErrors = []*utils.DynamicBoolOpt{ + cfg.RouteSCfg().Opts.IgnoreErrors = []*config.DynamicBoolOpt{ { FilterIDs: []string{"*string.invalid:filter"}, Tenant: "cgrates.org", @@ -1796,7 +1796,7 @@ func TestNewOptsGetRoutesGetBoolOptsErr(t *testing.T) { func TestNewOptsGetRoutesGetIntPointerOptsLimitErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.RouteSCfg().Opts.Limit = []*utils.DynamicIntPointerOpt{ + cfg.RouteSCfg().Opts.Limit = []*config.DynamicIntPointerOpt{ { FilterIDs: []string{"*string.invalid:filter"}, Tenant: "cgrates.org", @@ -1829,7 +1829,7 @@ func TestNewOptsGetRoutesGetIntPointerOptsLimitErr(t *testing.T) { func TestNewOptsGetRoutesGetIntPointerOptsOffsetErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.RouteSCfg().Opts.Offset = []*utils.DynamicIntPointerOpt{ + cfg.RouteSCfg().Opts.Offset = []*config.DynamicIntPointerOpt{ { FilterIDs: []string{"*string.invalid:filter"}, Tenant: "cgrates.org", @@ -1862,7 +1862,7 @@ func TestNewOptsGetRoutesGetIntPointerOptsOffsetErr(t *testing.T) { func TestNewOptsGetRoutesGetIntPointerOptsMaxItemsErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.RouteSCfg().Opts.MaxItems = []*utils.DynamicIntPointerOpt{ + cfg.RouteSCfg().Opts.MaxItems = []*config.DynamicIntPointerOpt{ { FilterIDs: []string{"*string.invalid:filter"}, Tenant: "cgrates.org", @@ -1895,7 +1895,7 @@ func TestNewOptsGetRoutesGetIntPointerOptsMaxItemsErr(t *testing.T) { func TestNewOptsGetRoutesGetInterfaceOptsErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.RouteSCfg().Opts.MaxCost = []*utils.DynamicInterfaceOpt{ + cfg.RouteSCfg().Opts.MaxCost = []*config.DynamicInterfaceOpt{ { FilterIDs: []string{"*string.invalid:filter"}, Tenant: "cgrates.org", @@ -1928,7 +1928,7 @@ func TestNewOptsGetRoutesGetInterfaceOptsErr(t *testing.T) { func TestSortedRoutesForEventsortedRoutesForProfileErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.RouteSCfg().Opts.ProfileCount = []*utils.DynamicIntPointerOpt{ + cfg.RouteSCfg().Opts.ProfileCount = []*config.DynamicIntPointerOpt{ { FilterIDs: []string{"*string.invalid:filter"}, Tenant: "cgrates.org", @@ -2017,7 +2017,7 @@ func TestSortedRoutesForEventsortedRoutesForProfileErr(t *testing.T) { func TestSortedRoutesForEventGetIntPointerOptsErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.RouteSCfg().Opts.ProfileCount = []*utils.DynamicIntPointerOpt{ + cfg.RouteSCfg().Opts.ProfileCount = []*config.DynamicIntPointerOpt{ { FilterIDs: []string{"*string.invalid:filter"}, Tenant: "cgrates.org", @@ -2104,7 +2104,7 @@ func TestSortedRoutesForEventGetIntPointerOptsErr(t *testing.T) { func TestSortedRoutesForEventNewOptsGetRoutesErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.RouteSCfg().Opts.IgnoreErrors = []*utils.DynamicBoolOpt{ + cfg.RouteSCfg().Opts.IgnoreErrors = []*config.DynamicBoolOpt{ { FilterIDs: []string{"*string.invalid:filter"}, Tenant: "cgrates.org", @@ -2191,13 +2191,13 @@ func TestSortedRoutesForEventNewOptsGetRoutesErr(t *testing.T) { func TestSortedRoutesForEventExceedMaxItemsErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.RouteSCfg().Opts.MaxItems = []*utils.DynamicIntPointerOpt{ + cfg.RouteSCfg().Opts.MaxItems = []*config.DynamicIntPointerOpt{ { Tenant: "cgrates.org", Value: utils.IntPointer(1), }, } - cfg.RouteSCfg().Opts.Limit = []*utils.DynamicIntPointerOpt{ + cfg.RouteSCfg().Opts.Limit = []*config.DynamicIntPointerOpt{ { Tenant: "cgrates.org", Value: utils.IntPointer(2), @@ -2282,7 +2282,7 @@ func TestSortedRoutesForEventExceedMaxItemsErr(t *testing.T) { func TestRouteSV1GetRoutesGetStringOptsErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.RouteSCfg().Opts.Context = []*utils.DynamicStringOpt{ + cfg.RouteSCfg().Opts.Context = []*config.DynamicStringOpt{ { FilterIDs: []string{"*string.invalid:filter"}, Tenant: "cgrates.org", @@ -2439,7 +2439,7 @@ func TestRoutesV1GetRoutesSortedRoutesForEventErr(t *testing.T) { }() cfg := config.NewDefaultCGRConfig() - cfg.RouteSCfg().Opts.ProfileCount = []*utils.DynamicIntPointerOpt{ + cfg.RouteSCfg().Opts.ProfileCount = []*config.DynamicIntPointerOpt{ { FilterIDs: []string{"*string.invalid:filter"}, Tenant: "cgrates.org", @@ -2940,7 +2940,7 @@ func TestRoutessortedRoutesForEventNoSortedRoutesErr(t *testing.T) { }() cfg := config.NewDefaultCGRConfig() - cfg.RouteSCfg().Opts.Offset = []*utils.DynamicIntPointerOpt{ + cfg.RouteSCfg().Opts.Offset = []*config.DynamicIntPointerOpt{ { Value: utils.IntPointer(10), }, diff --git a/engine/stats_test.go b/engine/stats_test.go index 303eee291..d24bd3761 100644 --- a/engine/stats_test.go +++ b/engine/stats_test.go @@ -3059,7 +3059,7 @@ func TestStatQueueProcessEventProfileIgnoreFilters(t *testing.T) { dm := NewDataManager(data, cfg.CacheCfg(), nil) filterS := NewFilterS(cfg, nil, dm) sS := NewStatService(dm, cfg, filterS, nil) - cfg.StatSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.StatSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -3133,7 +3133,7 @@ func TestStatQueueProcessEventProfileIgnoreFiltersError(t *testing.T) { dm := NewDataManager(data, cfg.CacheCfg(), nil) filterS := NewFilterS(cfg, nil, dm) sS := NewStatService(dm, cfg, filterS, nil) - cfg.StatSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.StatSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -3189,7 +3189,7 @@ func TestStatQueueV1GetStatQueuesForEventProfileIgnoreFilters(t *testing.T) { }() cfg := config.NewDefaultCGRConfig() - cfg.StatSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.StatSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -3486,7 +3486,7 @@ func TestStatSV1GetQueueStringMetricsIntOptsErr(t *testing.T) { cfg.StatSCfg().StoreInterval = 1 cfg.StatSCfg().StringIndexedFields = nil cfg.StatSCfg().PrefixIndexedFields = nil - cfg.StatSCfg().Opts.RoundingDecimals = []*utils.DynamicIntOpt{ + cfg.StatSCfg().Opts.RoundingDecimals = []*config.DynamicIntOpt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, @@ -3519,7 +3519,7 @@ func TestStatSV1GetStatQueuesForEventsqIDsErr(t *testing.T) { }() cfg := config.NewDefaultCGRConfig() - cfg.StatSCfg().Opts.ProfileIDs = []*utils.DynamicStringSliceOpt{ + cfg.StatSCfg().Opts.ProfileIDs = []*config.DynamicStringSliceOpt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, @@ -3603,7 +3603,7 @@ func TestStatSV1GetStatQueuesForEventignFiltersErr(t *testing.T) { }() cfg := config.NewDefaultCGRConfig() - cfg.StatSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.StatSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ // function will return error after trying to parse the filter { FilterIDs: []string{"*string.invalid:filter"}, @@ -3787,7 +3787,7 @@ func TestStatQueueProcessEventProfileIDsErr(t *testing.T) { }, APIOpts: map[string]any{}, } - sS.cfg.StatSCfg().Opts.ProfileIDs = []*utils.DynamicStringSliceOpt{ + sS.cfg.StatSCfg().Opts.ProfileIDs = []*config.DynamicStringSliceOpt{ { FilterIDs: []string{"*string.invalid:filter"}, @@ -3872,7 +3872,7 @@ func TestStatQueueProcessEventPrometheusStatIDsErr(t *testing.T) { }, } - sS.cfg.StatSCfg().Opts.PrometheusStatIDs = []*utils.DynamicStringSliceOpt{ + sS.cfg.StatSCfg().Opts.PrometheusStatIDs = []*config.DynamicStringSliceOpt{ { FilterIDs: []string{"*string.invalid:filter"}, diff --git a/engine/storage_it_test.go b/engine/storage_it_test.go index cb5aefa3d..06b81c547 100644 --- a/engine/storage_it_test.go +++ b/engine/storage_it_test.go @@ -65,13 +65,13 @@ func TestSetGetRemoveConfigSectionsDrvRedis(t *testing.T) { Actions_conns: &[]string{"*internal"}, Nested_fields: utils.BoolPointer(true), Opts: &config.ThresholdsOptsJson{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*config.DynamicStringSliceOpt{ { Tenant: "cgrates.org", Values: []string{"value1"}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*config.DynamicBoolOpt{ { Tenant: "cgrates.org", Value: true, @@ -93,17 +93,17 @@ func TestSetGetRemoveConfigSectionsDrvRedis(t *testing.T) { Suffix_indexed_fields: &[]string{"*req.index33"}, Nested_fields: utils.BoolPointer(true), Opts: &config.ResourcesOptsJson{ - UsageID: []*utils.DynamicStringOpt{ + UsageID: []*config.DynamicStringOpt{ { Value: "usg2", }, }, - UsageTTL: []*utils.DynamicStringOpt{ + UsageTTL: []*config.DynamicStringOpt{ { Value: "1m0s", }, }, - Units: []*utils.DynamicFloat64Opt{ + Units: []*config.DynamicFloat64Opt{ { Value: 2, }, @@ -184,13 +184,13 @@ func TestSetGetRemoveConfigSectionsDrvMongo(t *testing.T) { Actions_conns: &[]string{"*internal"}, Nested_fields: utils.BoolPointer(true), Opts: &config.ThresholdsOptsJson{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*config.DynamicStringSliceOpt{ { Tenant: "cgrates.org", Values: []string{"value1"}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*config.DynamicBoolOpt{ { Tenant: "cgrates.org", Value: true, @@ -212,17 +212,17 @@ func TestSetGetRemoveConfigSectionsDrvMongo(t *testing.T) { Suffix_indexed_fields: &[]string{"*req.index33"}, Nested_fields: utils.BoolPointer(true), Opts: &config.ResourcesOptsJson{ - UsageID: []*utils.DynamicStringOpt{ + UsageID: []*config.DynamicStringOpt{ { Value: "usg2", }, }, - UsageTTL: []*utils.DynamicStringOpt{ + UsageTTL: []*config.DynamicStringOpt{ { Value: "1m0s", }, }, - Units: []*utils.DynamicFloat64Opt{ + Units: []*config.DynamicFloat64Opt{ { Value: 2, }, @@ -300,13 +300,13 @@ func TestSetGetRemoveConfigSectionsDrvInternal(t *testing.T) { Actions_conns: &[]string{"*internal"}, Nested_fields: utils.BoolPointer(true), Opts: &config.ThresholdsOptsJson{ - ProfileIDs: []*utils.DynamicStringSliceOpt{ + ProfileIDs: []*config.DynamicStringSliceOpt{ { Tenant: "cgrates.org", Values: []string{"value1"}, }, }, - ProfileIgnoreFilters: []*utils.DynamicBoolOpt{ + ProfileIgnoreFilters: []*config.DynamicBoolOpt{ { Tenant: "cgrates.org", Value: true, @@ -328,17 +328,17 @@ func TestSetGetRemoveConfigSectionsDrvInternal(t *testing.T) { Suffix_indexed_fields: &[]string{"*req.index33"}, Nested_fields: utils.BoolPointer(true), Opts: &config.ResourcesOptsJson{ - UsageID: []*utils.DynamicStringOpt{ + UsageID: []*config.DynamicStringOpt{ { Value: "usg2", }, }, - UsageTTL: []*utils.DynamicStringOpt{ + UsageTTL: []*config.DynamicStringOpt{ { Value: "1m0s", }, }, - Units: []*utils.DynamicFloat64Opt{ + Units: []*config.DynamicFloat64Opt{ { Value: 2, }, diff --git a/engine/thresholds_test.go b/engine/thresholds_test.go index 79e12c3f0..321109f4b 100644 --- a/engine/thresholds_test.go +++ b/engine/thresholds_test.go @@ -3033,7 +3033,7 @@ func TestThresholdsProcessEventIgnoreFilters(t *testing.T) { dm := NewDataManager(data, cfg.CacheCfg(), nil) filterS := NewFilterS(cfg, nil, dm) tS := NewThresholdService(dm, cfg, filterS, nil) - cfg.ThresholdSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.ThresholdSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -3099,7 +3099,7 @@ func TestThresholdsProcessEventIgnoreFiltersErr(t *testing.T) { dm := NewDataManager(data, cfg.CacheCfg(), nil) filterS := NewFilterS(cfg, nil, dm) tS := NewThresholdService(dm, cfg, filterS, nil) - cfg.ThresholdSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.ThresholdSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -3345,7 +3345,7 @@ func TestThresholdProfileMerge(t *testing.T) { func TestThresholdSmatchingThresholdsForEventGetOptsErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.ThresholdSCfg().Opts.ProfileIDs = []*utils.DynamicStringSliceOpt{ + cfg.ThresholdSCfg().Opts.ProfileIDs = []*config.DynamicStringSliceOpt{ { FilterIDs: []string{"*string"}, Tenant: "cgrates.org", @@ -3388,13 +3388,13 @@ func TestThresholdSmatchingThresholdsForEventGetOptsErr(t *testing.T) { func TestThresholdSmatchingThresholdsForEventWeightErr(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.ThresholdSCfg().Opts.ProfileIDs = []*utils.DynamicStringSliceOpt{ + cfg.ThresholdSCfg().Opts.ProfileIDs = []*config.DynamicStringSliceOpt{ { Tenant: "cgrates.org", Values: []string{"ACC1"}, }, } - cfg.ThresholdSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.ThresholdSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Tenant: "cgrates.org", Value: true, diff --git a/engine/z_attributes_test.go b/engine/z_attributes_test.go index d36d50eef..91f0321c3 100644 --- a/engine/z_attributes_test.go +++ b/engine/z_attributes_test.go @@ -154,7 +154,7 @@ func TestAttributesV1GetAttributeForEventProfileIgnoreOpts(t *testing.T) { dm := NewDataManager(db, nil, conMng) filterS := NewFilterS(cfg, conMng, dm) aA := NewAttributeService(dm, filterS, cfg) - cfg.AttributeSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.AttributeSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, @@ -5019,7 +5019,7 @@ func TestAttributesProcessEventProfileIgnoreFilters(t *testing.T) { dm := NewDataManager(data, cfg.CacheCfg(), nil) filterS := NewFilterS(cfg, nil, dm) aA := NewAttributeService(dm, filterS, cfg) - cfg.AttributeSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.AttributeSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, }, diff --git a/engine/z_resources_test.go b/engine/z_resources_test.go index d7d5848ac..49c99f223 100644 --- a/engine/z_resources_test.go +++ b/engine/z_resources_test.go @@ -6617,7 +6617,7 @@ func TestResourcesV1ResourcesForEventErrRetrieveUsageID(t *testing.T) { Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.ResourceSCfg().Opts.UsageID = []*utils.DynamicStringOpt{ + cfg.ResourceSCfg().Opts.UsageID = []*config.DynamicStringOpt{ { FilterIDs: []string{"FLTR_Invalid"}, Tenant: "*any", @@ -6654,7 +6654,7 @@ func TestResourcesV1ResourcesForEventErrRetrieveUsageTTL(t *testing.T) { Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.ResourceSCfg().Opts.UsageTTL = []*utils.DynamicDurationOpt{ + cfg.ResourceSCfg().Opts.UsageTTL = []*config.DynamicDurationOpt{ { FilterIDs: []string{"FLTR_Invalid"}, Tenant: "*any", @@ -6691,7 +6691,7 @@ func TestResourcesV1AuthorizeResourcesErrRetrieveUsageID(t *testing.T) { Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.ResourceSCfg().Opts.UsageID = []*utils.DynamicStringOpt{ + cfg.ResourceSCfg().Opts.UsageID = []*config.DynamicStringOpt{ { FilterIDs: []string{"FLTR_Invalid"}, Tenant: "*any", @@ -6728,7 +6728,7 @@ func TestResourcesV1AuthorizeResourcesErrRetrieveUnits(t *testing.T) { Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.ResourceSCfg().Opts.Units = []*utils.DynamicFloat64Opt{ + cfg.ResourceSCfg().Opts.Units = []*config.DynamicFloat64Opt{ { FilterIDs: []string{"FLTR_Invalid"}, Tenant: "*any", @@ -6765,7 +6765,7 @@ func TestResourcesV1AuthorizeResourcesErrRetrieveUsageTTL(t *testing.T) { Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.ResourceSCfg().Opts.UsageTTL = []*utils.DynamicDurationOpt{ + cfg.ResourceSCfg().Opts.UsageTTL = []*config.DynamicDurationOpt{ { FilterIDs: []string{"FLTR_Invalid"}, Tenant: "*any", @@ -6802,7 +6802,7 @@ func TestResourcesV1AllocateResourcesErrRetrieveUsageID(t *testing.T) { Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.ResourceSCfg().Opts.UsageID = []*utils.DynamicStringOpt{ + cfg.ResourceSCfg().Opts.UsageID = []*config.DynamicStringOpt{ { FilterIDs: []string{"FLTR_Invalid"}, Tenant: "*any", @@ -6839,7 +6839,7 @@ func TestResourcesV1AllocateResourcesErrRetrieveUsageTTL(t *testing.T) { Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.ResourceSCfg().Opts.UsageTTL = []*utils.DynamicDurationOpt{ + cfg.ResourceSCfg().Opts.UsageTTL = []*config.DynamicDurationOpt{ { FilterIDs: []string{"FLTR_Invalid"}, Tenant: "*any", @@ -6876,7 +6876,7 @@ func TestResourcesV1AllocateResourcesErrRetrieveUnits(t *testing.T) { Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.ResourceSCfg().Opts.Units = []*utils.DynamicFloat64Opt{ + cfg.ResourceSCfg().Opts.Units = []*config.DynamicFloat64Opt{ { FilterIDs: []string{"FLTR_Invalid"}, Tenant: "*any", @@ -6913,7 +6913,7 @@ func TestResourcesV1ReleaseResourcesErrRetrieveUsageID(t *testing.T) { Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.ResourceSCfg().Opts.UsageID = []*utils.DynamicStringOpt{ + cfg.ResourceSCfg().Opts.UsageID = []*config.DynamicStringOpt{ { FilterIDs: []string{"FLTR_Invalid"}, Tenant: "*any", @@ -6950,7 +6950,7 @@ func TestResourcesV1ReleaseResourcesErrRetrieveUsageTTL(t *testing.T) { Cache.Clear(nil) cfg := config.NewDefaultCGRConfig() - cfg.ResourceSCfg().Opts.UsageTTL = []*utils.DynamicDurationOpt{ + cfg.ResourceSCfg().Opts.UsageTTL = []*config.DynamicDurationOpt{ { FilterIDs: []string{"FLTR_Invalid"}, Tenant: "*any", diff --git a/general_tests/session_graceful_shutdown_it_test.go b/general_tests/session_graceful_shutdown_it_test.go index 934dbe6b1..c9312bc87 100644 --- a/general_tests/session_graceful_shutdown_it_test.go +++ b/general_tests/session_graceful_shutdown_it_test.go @@ -179,7 +179,7 @@ func testSessionSRplcApierSetChargerS(t *testing.T) { } func testSessionSRplcApierGetInitateSessions(t *testing.T) { - smgRplCfg1.SessionSCfg().Opts.Initiate = []*utils.DynamicBoolOpt{ + smgRplCfg1.SessionSCfg().Opts.Initiate = []*config.DynamicBoolOpt{ { Value: true, Tenant: "cgrates.org", diff --git a/rates/rates_test.go b/rates/rates_test.go index 104b13e03..cec41842b 100644 --- a/rates/rates_test.go +++ b/rates/rates_test.go @@ -1181,7 +1181,7 @@ func TestCDRProcessRatesCostForEvent(t *testing.T) { func TestRateProfileCostForEventProfileIgnoreFilters(t *testing.T) { cfg := config.NewDefaultCGRConfig() - cfg.RateSCfg().Opts.ProfileIgnoreFilters = []*utils.DynamicBoolOpt{ + cfg.RateSCfg().Opts.ProfileIgnoreFilters = []*config.DynamicBoolOpt{ { Value: true, },