From a5d29d5d7b2ac3f22edd55a7fb8d81422ef06cf1 Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Mon, 8 Apr 2024 14:50:24 +0300 Subject: [PATCH] Stop sending BalanceUpdate events to thresholds/stats --- apier/v1/filterindexecache_it_test.go | 232 +++++++++++++++-------- apier/v1/thresholds_it_test.go | 20 +- data/tariffplans/oldtutorial/Filters.csv | 6 +- data/tariffplans/precache/Filters.csv | 7 +- data/tariffplans/testtp/Filters.csv | 6 +- engine/account.go | 28 --- engine/account_test.go | 64 ------- general_tests/balance_it_test.go | 6 +- utils/consts.go | 1 - 9 files changed, 175 insertions(+), 195 deletions(-) diff --git a/apier/v1/filterindexecache_it_test.go b/apier/v1/filterindexecache_it_test.go index d5367fd4e..0d77a9526 100644 --- a/apier/v1/filterindexecache_it_test.go +++ b/apier/v1/filterindexecache_it_test.go @@ -149,11 +149,10 @@ func testV1FIdxCaProcessEventWithNotFound(t *testing.T) { Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ - utils.EventType: utils.BalanceUpdate, - utils.AccountField: "1001", + utils.ID: "1001", }, APIOpts: map[string]any{ - utils.MetaEventType: utils.BalanceUpdate, + utils.MetaEventType: utils.AccountUpdate, }, } var thIDs []string @@ -169,14 +168,19 @@ func testV1FIdxCaSetThresholdProfile(t *testing.T) { ID: "TestFilter", Rules: []*engine.FilterRule{ { - Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.AccountField, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.ID, Type: utils.MetaString, Values: []string{"1001"}, }, { - Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, + Element: utils.DynamicDataPrefix + utils.MetaOpts + utils.NestingSep + utils.MetaEventType, Type: utils.MetaString, - Values: []string{utils.BalanceUpdate}, + Values: []string{utils.AccountUpdate}, + }, + { + Element: "~*asm.BalanceSummaries.*default.Value", + Type: utils.MetaGreaterThan, + Values: []string{"8"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -217,11 +221,16 @@ func testV1FIdxCaSetThresholdProfile(t *testing.T) { Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ - utils.EventType: utils.BalanceUpdate, - utils.AccountField: "1001", + utils.ID: "1001", + utils.BalanceSummaries: engine.BalanceSummaries{ + { + ID: utils.MetaDefault, + Value: 9, + }, + }, }, APIOpts: map[string]any{ - utils.MetaEventType: utils.BalanceUpdate, + utils.MetaEventType: utils.AccountUpdate, utils.OptsThresholdsProfileIDs: []string{"TEST_PROFILE1"}, }, } @@ -242,13 +251,18 @@ func testV1FIdxCaGetThresholdFromTP(t *testing.T) { Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ - utils.EventType: utils.BalanceUpdate, - utils.AccountField: "1001", - utils.BalanceID: utils.MetaDefault, - utils.Units: 12.3, + utils.BalanceSummaries: engine.BalanceSummaries{ + { + ID: utils.MetaDefault, + Type: utils.MetaMonetary, + Value: 12.3, + }, + }, + utils.ID: "1001", + utils.Tenant: "cgrates.org", }, APIOpts: map[string]any{ - utils.MetaEventType: utils.BalanceUpdate, + utils.MetaEventType: utils.AccountUpdate, utils.OptsThresholdsProfileIDs: []string{"THD_ACNT_BALANCE_1"}, }, } @@ -271,15 +285,20 @@ func testV1FIdxCaUpdateThresholdProfile(t *testing.T) { ID: "TestFilter2", Rules: []*engine.FilterRule{ { - Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.AccountField, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.ID, Type: utils.MetaString, Values: []string{"1002"}, }, { - Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, + Element: utils.DynamicDataPrefix + utils.MetaOpts + utils.NestingSep + utils.MetaEventType, Type: utils.MetaString, Values: []string{utils.AccountUpdate}, }, + { + Element: "~*asm.BalanceSummaries.*default.Value", + Type: utils.MetaGreaterThan, + Values: []string{"8"}, + }, }, ActivationInterval: &utils.ActivationInterval{ ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -316,8 +335,13 @@ func testV1FIdxCaUpdateThresholdProfile(t *testing.T) { Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ - utils.EventType: utils.AccountUpdate, - utils.AccountField: "1001", + utils.ID: "1001", + utils.BalanceSummaries: engine.BalanceSummaries{ + { + ID: utils.MetaDefault, + Value: 9, + }, + }, }, APIOpts: map[string]any{ utils.MetaEventType: utils.AccountUpdate, @@ -335,8 +359,13 @@ func testV1FIdxCaUpdateThresholdProfile(t *testing.T) { Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ - utils.EventType: utils.AccountUpdate, - utils.AccountField: "1002", + utils.ID: "1002", + utils.BalanceSummaries: engine.BalanceSummaries{ + { + ID: utils.MetaDefault, + Value: 9, + }, + }, }, APIOpts: map[string]any{ utils.MetaEventType: utils.AccountUpdate, @@ -359,14 +388,14 @@ func testV1FIdxCaUpdateThresholdProfileFromTP(t *testing.T) { ID: "TestFilter3", Rules: []*engine.FilterRule{ { - Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.AccountField, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.ID, Type: utils.MetaString, Values: []string{"1003"}, }, { - Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, + Element: utils.DynamicDataPrefix + utils.MetaOpts + utils.NestingSep + utils.MetaEventType, Type: utils.MetaString, - Values: []string{utils.BalanceUpdate}, + Values: []string{utils.AccountUpdate}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -403,11 +432,10 @@ func testV1FIdxCaUpdateThresholdProfileFromTP(t *testing.T) { Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ - utils.AccountField: "1002", - utils.EventType: utils.BalanceUpdate, + utils.ID: "1002", }, APIOpts: map[string]any{ - utils.MetaEventType: utils.BalanceUpdate, + utils.MetaEventType: utils.AccountUpdate, }, } var thIDs []string @@ -420,11 +448,10 @@ func testV1FIdxCaUpdateThresholdProfileFromTP(t *testing.T) { Tenant: "cgrates.org", ID: "event3", Event: map[string]any{ - utils.AccountField: "1003", - utils.EventType: utils.BalanceUpdate, + utils.ID: "1003", }, APIOpts: map[string]any{ - utils.MetaEventType: utils.BalanceUpdate, + utils.MetaEventType: utils.AccountUpdate, }, } eIDs := []string{"THD_ACNT_BALANCE_1"} @@ -442,8 +469,13 @@ func testV1FIdxCaRemoveThresholdProfile(t *testing.T) { Tenant: "cgrates.org", ID: "event8", Event: map[string]any{ - utils.AccountField: "1002", - utils.EventType: utils.AccountUpdate, + utils.ID: "1002", + utils.BalanceSummaries: engine.BalanceSummaries{ + { + ID: utils.MetaDefault, + Value: 9, + }, + }, }, APIOpts: map[string]any{ utils.MetaEventType: utils.AccountUpdate, @@ -461,11 +493,10 @@ func testV1FIdxCaRemoveThresholdProfile(t *testing.T) { Tenant: "cgrates.org", ID: "event9", Event: map[string]any{ - utils.AccountField: "1003", - utils.EventType: utils.BalanceUpdate, + utils.ID: "1003", }, APIOpts: map[string]any{ - utils.MetaEventType: utils.BalanceUpdate, + utils.MetaEventType: utils.AccountUpdate, }, } eIDs = []string{"THD_ACNT_BALANCE_1"} @@ -518,8 +549,7 @@ func testV1FIdxCaGetStatQueuesWithNotFound(t *testing.T) { Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ - utils.EventType: utils.AccountUpdate, - utils.AccountField: "1001", + utils.ID: "1001", }, APIOpts: map[string]any{ utils.MetaEventType: utils.AccountUpdate, @@ -545,15 +575,20 @@ func testV1FIdxCaSetStatQueueProfile(t *testing.T) { ID: "FLTR_1", Rules: []*engine.FilterRule{ { - Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.AccountField, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.ID, Type: utils.MetaString, Values: []string{"1001"}, }, { - Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, + Element: utils.DynamicDataPrefix + utils.MetaOpts + utils.NestingSep + utils.MetaEventType, Type: utils.MetaString, Values: []string{utils.AccountUpdate}, }, + { + Element: "~*asm.BalanceSummaries.*default.Value", + Type: utils.MetaGreaterThan, + Values: []string{"8"}, + }, }, ActivationInterval: &utils.ActivationInterval{ ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -599,9 +634,14 @@ func testV1FIdxCaSetStatQueueProfile(t *testing.T) { Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ - utils.EventType: utils.AccountUpdate, - utils.AccountField: "1001", - "Val": 10, + utils.ID: "1001", + utils.BalanceSummaries: engine.BalanceSummaries{ + { + ID: utils.MetaDefault, + Value: 10, + }, + }, + "Val": 10, }, APIOpts: map[string]any{ utils.MetaEventType: utils.AccountUpdate, @@ -618,16 +658,33 @@ func testV1FIdxCaSetStatQueueProfile(t *testing.T) { } func testV1FIdxCaGetStatQueuesFromTP(t *testing.T) { + + // Overwrite Stats1 profile to filter for ID instead of AccountField. + var result string + var tmpSQ engine.StatQueueProfile + if err := tFIdxCaRpc.Call(context.Background(), utils.APIerSv1GetStatQueueProfile, + &utils.TenantID{Tenant: "cgrates.org", ID: "Stats1"}, &tmpSQ); err != nil { + t.Error(err) + } + tmpSQ.FilterIDs = []string{"*string:~*req.ID:1001|1002"} + tmpSQ.ActivationInterval = &utils.ActivationInterval{ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC)} + if err := tFIdxCaRpc.Call(context.Background(), utils.APIerSv1SetStatQueueProfile, + &engine.StatQueueProfileWithAPIOpts{StatQueueProfile: &tmpSQ}, &result); err != nil { + t.Error(err) + } else if result != utils.OK { + t.Error("Unexpected reply returned", result) + } + var reply []string expected := []string{"Stats1"} ev2 := &utils.CGREvent{ Tenant: "cgrates.org", ID: "event2", Event: map[string]any{ - utils.AccountField: "1002", - utils.AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), - utils.Usage: 45 * time.Second, - utils.Cost: 12.1, + utils.ID: "1002", + utils.AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), + utils.Usage: 45 * time.Second, + utils.Cost: 12.1, }, } if err := tFIdxCaRpc.Call(context.Background(), utils.StatSv1ProcessEvent, ev2, &reply); err != nil { @@ -639,10 +696,10 @@ func testV1FIdxCaGetStatQueuesFromTP(t *testing.T) { Tenant: "cgrates.org", ID: "event3", Event: map[string]any{ - utils.AccountField: "1002", - utils.AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), - utils.Usage: 45 * time.Second, - utils.Cost: 12.1, + utils.ID: "1002", + utils.AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), + utils.Usage: 45 * time.Second, + utils.Cost: 12.1, }, } if err := tFIdxCaRpc.Call(context.Background(), utils.StatSv1ProcessEvent, &ev3, &reply); err != nil { @@ -655,11 +712,10 @@ func testV1FIdxCaGetStatQueuesFromTP(t *testing.T) { Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ - utils.EventType: utils.AccountUpdate, - utils.AccountField: "1001", - utils.AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), - utils.Usage: 45 * time.Second, - utils.Cost: 12.1, + utils.ID: "1001", + utils.AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), + utils.Usage: 45 * time.Second, + utils.Cost: 12.1, }, APIOpts: map[string]any{ utils.MetaEventType: utils.AccountUpdate, @@ -674,11 +730,10 @@ func testV1FIdxCaGetStatQueuesFromTP(t *testing.T) { Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ - utils.EventType: utils.AccountUpdate, - utils.AccountField: "1001", - utils.AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), - utils.Usage: 45 * time.Second, - utils.Cost: 12.1, + utils.ID: "1001", + utils.AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), + utils.Usage: 45 * time.Second, + utils.Cost: 12.1, }, APIOpts: map[string]any{ utils.MetaEventType: utils.AccountUpdate, @@ -698,14 +753,19 @@ func testV1FIdxCaUpdateStatQueueProfile(t *testing.T) { ID: "FLTR_2", Rules: []*engine.FilterRule{ { - Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.AccountField, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.ID, Type: utils.MetaString, Values: []string{"1003"}, }, { - Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, + Element: utils.DynamicDataPrefix + utils.MetaOpts + utils.NestingSep + utils.MetaEventType, Type: utils.MetaString, - Values: []string{utils.BalanceUpdate}, + Values: []string{utils.AccountUpdate}, + }, + { + Element: "~*asm.BalanceSummaries.*default.Value", + Type: utils.MetaGreaterThan, + Values: []string{"8"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -752,12 +812,17 @@ func testV1FIdxCaUpdateStatQueueProfile(t *testing.T) { Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ - utils.EventType: utils.BalanceUpdate, - utils.AccountField: "1003", - "Val": 10, + utils.ID: "1003", + utils.BalanceSummaries: engine.BalanceSummaries{ + { + ID: utils.MetaDefault, + Value: 10, + }, + }, + "Val": 10, }, APIOpts: map[string]any{ - utils.MetaEventType: utils.BalanceUpdate, + utils.MetaEventType: utils.AccountUpdate, }, } if err := tFIdxCaRpc.Call(context.Background(), utils.StatSv1ProcessEvent, tEv, &reply); err != nil { @@ -774,12 +839,12 @@ func testV1FIdxCaUpdateStatQueueProfileFromTP(t *testing.T) { ID: "FLTR_3", Rules: []*engine.FilterRule{ { - Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.AccountField, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.ID, Type: utils.MetaString, Values: []string{"1003"}, }, { - Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, + Element: utils.DynamicDataPrefix + utils.MetaOpts + utils.NestingSep + utils.MetaEventType, Type: utils.MetaString, Values: []string{utils.AccountUpdate}, }, @@ -812,11 +877,10 @@ func testV1FIdxCaUpdateStatQueueProfileFromTP(t *testing.T) { Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ - utils.EventType: utils.AccountUpdate, - utils.AccountField: "1003", - utils.AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), - utils.Usage: 45 * time.Second, - utils.Cost: 12.1, + utils.ID: "1003", + utils.AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), + utils.Usage: 45 * time.Second, + utils.Cost: 12.1, }, APIOpts: map[string]any{ utils.MetaEventType: utils.AccountUpdate, @@ -839,12 +903,17 @@ func testV1FIdxCaRemoveStatQueueProfile(t *testing.T) { Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ - utils.EventType: utils.BalanceUpdate, - utils.AccountField: "1003", - "Val": 10, + utils.ID: "1003", + utils.BalanceSummaries: engine.BalanceSummaries{ + { + ID: utils.MetaDefault, + Value: 10, + }, + }, + "Val": 10, }, APIOpts: map[string]any{ - utils.MetaEventType: utils.BalanceUpdate, + utils.MetaEventType: utils.AccountUpdate, }, } if err := tFIdxCaRpc.Call(context.Background(), utils.StatSv1ProcessEvent, tEv, &reply); err != nil { @@ -857,11 +926,10 @@ func testV1FIdxCaRemoveStatQueueProfile(t *testing.T) { Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ - utils.EventType: utils.AccountUpdate, - utils.AccountField: "1003", - utils.AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), - utils.Usage: 45 * time.Second, - utils.Cost: 12.1, + utils.ID: "1003", + utils.AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), + utils.Usage: 45 * time.Second, + utils.Cost: 12.1, }, APIOpts: map[string]any{ utils.MetaEventType: utils.AccountUpdate, diff --git a/apier/v1/thresholds_it_test.go b/apier/v1/thresholds_it_test.go index 5005009c8..5ed485165 100644 --- a/apier/v1/thresholds_it_test.go +++ b/apier/v1/thresholds_it_test.go @@ -43,7 +43,7 @@ var ( tSv1ConfDIR string //run tests for specific configuration tEvs = []*utils.CGREvent{ - { // hitting THD_ACNT_BALANCE_1 + { // will not match any threshold profile Tenant: "cgrates.org", ID: "event1", Event: map[string]any{ @@ -60,14 +60,20 @@ var ( Tenant: "cgrates.org", ID: "event2", Event: map[string]any{ - utils.EventType: utils.BalanceUpdate, - utils.AccountField: "1002", - utils.BalanceID: utils.MetaDefault, - utils.Units: 12.3, - utils.ExpiryTime: time.Date(2009, 11, 10, 23, 00, 0, 0, time.UTC), + utils.AllowNegative: false, + utils.BalanceSummaries: engine.BalanceSummaries{ + { + ID: utils.MetaDefault, + Type: utils.MetaMonetary, + Value: 12.3, + }, + }, + utils.ID: "1001", + utils.Tenant: "cgrates.org", + utils.Disabled: false, }, APIOpts: map[string]any{ - utils.MetaEventType: utils.BalanceUpdate, + utils.MetaEventType: utils.AccountUpdate, }, }, { // hitting THD_STATS_1 diff --git a/data/tariffplans/oldtutorial/Filters.csv b/data/tariffplans/oldtutorial/Filters.csv index 9e07b08ec..f37982ba5 100644 --- a/data/tariffplans/oldtutorial/Filters.csv +++ b/data/tariffplans/oldtutorial/Filters.csv @@ -7,9 +7,9 @@ cgrates.org,FLTR_ACNT_1007,*string,~*req.Account,1007,2014-07-29T15:00:00Z cgrates.org,FLTR_ACNT_dan,*string,~*req.Account,dan,2014-07-29T15:00:00Z cgrates.org,FLTR_DST_DE,*destinations,~*req.Destination,DST_DE_MOBILE,2014-07-29T15:00:00Z cgrates.org,FLTR_DST_NL,*destinations,~*req.Destination,DST_NL,2014-07-29T15:00:00Z -cgrates.org,FLTR_ACNT_BALANCE_1,*string,~*req.Account,1001;1002,2014-07-29T15:00:00Z -cgrates.org,FLTR_ACNT_BALANCE_1,*string,~*req.EventType,BalanceUpdate, -cgrates.org,FLTR_ACNT_BALANCE_1,*gte,~*req.Units,10.0, +cgrates.org,FLTR_ACNT_BALANCE_1,*string,~*req.ID,1001;1002,2014-07-29T15:00:00Z +cgrates.org,FLTR_ACNT_BALANCE_1,*string,~*opts.*eventType,AccountUpdate, +cgrates.org,FLTR_ACNT_BALANCE_1,*gte,~*asm.BalanceSummaries.*default.Value,10.0, cgrates.org,FLTR_ACNT_EXPIRED,*string,~*req.Account,1001;1002,2014-07-29T15:00:00Z cgrates.org,FLTR_ACNT_EXPIRED,*gte,~*req.ExpiryTime,*now, cgrates.org,FLTR_STATS_1,*string,~*req.Account,1002, diff --git a/data/tariffplans/precache/Filters.csv b/data/tariffplans/precache/Filters.csv index dc31ce087..d22ccd11b 100644 --- a/data/tariffplans/precache/Filters.csv +++ b/data/tariffplans/precache/Filters.csv @@ -8,10 +8,9 @@ cgrates.org,FLTR_ACNT_1007,*string,~*req.Account,1007,2014-07-29T15:00:00Z cgrates.org,FLTR_ACNT_dan,*string,~*req.Account,dan,2014-07-29T15:00:00Z cgrates.org,FLTR_DST_DE,*destinations,~*req.Destination,DST_DE_MOBILE,2014-07-29T15:00:00Z cgrates.org,FLTR_DST_NL,*destinations,~*req.Destination,DST_NL,2014-07-29T15:00:00Z -cgrates.org,FLTR_ACNT_BALANCE_1,,,,2014-07-29T15:00:00Z -cgrates.org,FLTR_ACNT_BALANCE_1,*string,~*req.Account,1001;1002, -cgrates.org,FLTR_ACNT_BALANCE_1,*string,~*req.EventType,BalanceUpdate, -cgrates.org,FLTR_ACNT_BALANCE_1,*gte,~*req.Units,10.0, +cgrates.org,FLTR_ACNT_BALANCE_1,*string,~*req.ID,1001;1002,2014-07-29T15:00:00Z +cgrates.org,FLTR_ACNT_BALANCE_1,*string,~*opts.*eventType,AccountUpdate, +cgrates.org,FLTR_ACNT_BALANCE_1,*gte,~*asm.BalanceSummaries.*default.Value,10.0, cgrates.org,FLTR_ACNT_EXPIRED,,,,2014-07-29T15:00:00Z cgrates.org,FLTR_ACNT_EXPIRED,*string,~*req.Account,1001;1002, cgrates.org,FLTR_ACNT_EXPIRED,*gte,~*req.ExpiryTime,*now, diff --git a/data/tariffplans/testtp/Filters.csv b/data/tariffplans/testtp/Filters.csv index cbfab7979..65924669c 100644 --- a/data/tariffplans/testtp/Filters.csv +++ b/data/tariffplans/testtp/Filters.csv @@ -7,9 +7,9 @@ cgrates.org,FLTR_ACNT_1007,*string,~*req.Account,1007,2014-07-29T15:00:00Z cgrates.org,FLTR_ACNT_dan,*string,~*req.Account,dan,2014-07-29T15:00:00Z cgrates.org,FLTR_DST_DE,*destinations,~*req.Destination,DST_DE,2014-07-29T15:00:00Z cgrates.org,FLTR_DST_NL,*destinations,~*req.Destination,DST_NL,2014-07-29T15:00:00Z -cgrates.org,FLTR_ACNT_BALANCE_1,*string,~*req.Account,1001;1002,2014-07-29T15:00:00Z -cgrates.org,FLTR_ACNT_BALANCE_1,*string,~*req.EventType,BalanceUpdate, -cgrates.org,FLTR_ACNT_BALANCE_1,*gte,~*req.Units,10.0, +cgrates.org,FLTR_ACNT_BALANCE_1,*string,~*req.ID,1001;1002,2014-07-29T15:00:00Z +cgrates.org,FLTR_ACNT_BALANCE_1,*string,~*opts.*eventType,AccountUpdate, +cgrates.org,FLTR_ACNT_BALANCE_1,*gte,~*asm.BalanceSummaries.*default.Value,10.0, cgrates.org,FLTR_ACNT_EXPIRED,*string,~*req.Account,1001;1002,2014-07-29T15:00:00Z cgrates.org,FLTR_ACNT_EXPIRED,*gte,~*req.ExpiryTime,*now, cgrates.org,FLTR_STATS_1,*string,~*req.EventType,StatUpdate,2014-07-29T15:00:00Z diff --git a/engine/account.go b/engine/account.go index c747538ed..0f7259f40 100644 --- a/engine/account.go +++ b/engine/account.go @@ -554,34 +554,6 @@ func (acc *Account) debitCreditBalance(cd *CallDescriptor, count bool, dryRun bo } } } - - // in case of going to negative we send the default balance to thresholdS to be processed - if len(config.CgrConfig().RalsCfg().ThresholdSConns) != 0 { - defaultBalance := acc.GetDefaultMoneyBalance() - acntTnt := utils.NewTenantID(acc.ID) - thEv := &utils.CGREvent{ - Tenant: acntTnt.Tenant, - ID: utils.GenUUID(), - Event: map[string]any{ - utils.EventType: utils.BalanceUpdate, - utils.EventSource: utils.AccountService, - utils.AccountField: acntTnt.ID, - utils.BalanceID: defaultBalance.ID, - utils.Units: defaultBalance.Value, - }, - APIOpts: map[string]any{ - utils.MetaEventType: utils.BalanceUpdate, - }, - } - var tIDs []string - if err := connMgr.Call(context.TODO(), config.CgrConfig().RalsCfg().ThresholdSConns, - utils.ThresholdSv1ProcessEvent, thEv, &tIDs); err != nil && - err.Error() != utils.ErrNotFound.Error() { - utils.Logger.Warning( - fmt.Sprintf(" error: <%s> processing balance event <%+v> with ThresholdS.", - err.Error(), utils.ToJSON(thEv))) - } - } } COMMIT: diff --git a/engine/account_test.go b/engine/account_test.go index e6b840c0f..95e80e600 100644 --- a/engine/account_test.go +++ b/engine/account_test.go @@ -29,8 +29,6 @@ import ( "testing" "time" - "github.com/cgrates/birpc" - "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/utils" ) @@ -3020,68 +3018,6 @@ func TestAcountSetBalanceAction(t *testing.T) { } } -func TestDebitCreditBalance(t *testing.T) { - cfg := config.NewDefaultCGRConfig() - db := NewInternalDB(nil, nil, true, cfg.DataDbCfg().Items) - dm := NewDataManager(db, cfg.CacheCfg(), nil) - fltrs := NewFilterS(cfg, nil, dm) - tmpConn := connMgr - utils.Logger.SetLogLevel(4) - utils.Logger.SetSyslog(nil) - buf := new(bytes.Buffer) - log.SetOutput(buf) - defer func() { - utils.Logger.SetLogLevel(0) - log.SetOutput(os.Stderr) - connMgr = tmpConn - config.SetCgrConfig(config.NewDefaultCGRConfig()) - }() - cfg.RalsCfg().ThresholdSConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds)} - clientConn := make(chan birpc.ClientConnector, 1) - clientConn <- &ccMock{ - calls: map[string]func(ctx *context.Context, args any, reply any) error{ - utils.ThresholdSv1ProcessEvent: func(ctx *context.Context, args, reply any) error { - rpl := &[]string{"id"} - *reply.(*[]string) = *rpl - return errors.New("Can't process Event") - }, - }, - } - connMgr := NewConnManager(cfg, map[string]chan birpc.ClientConnector{ - utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds): clientConn, - }) - cd := &CallDescriptor{ - Tenant: "cgrates.org", - Category: "call", - TimeStart: time.Date(2015, 9, 24, 10, 48, 0, 0, time.UTC), - TimeEnd: time.Date(2015, 9, 24, 10, 58, 1, 0, time.UTC), - Destination: "4444", - Subject: "dy", - Account: "dy", - ToR: utils.MetaVoice, - DurationIndex: 600, - } - acc := &Account{ - ID: "vdf:broker", - BalanceMap: map[string]Balances{ - utils.MetaVoice: { - &Balance{Value: 20 * float64(time.Second), - DestinationIDs: utils.NewStringMap("NAT"), - Weight: 10, RatingSubject: "rif"}, - &Balance{Value: 100 * float64(time.Second), - DestinationIDs: utils.NewStringMap("RET"), Weight: 20}, - }}, - } - config.SetCgrConfig(cfg) - SetConnManager(connMgr) - expLog := `processing balance event` - if _, err := acc.debitCreditBalance(cd, true, true, true, fltrs); err != nil { - t.Error(err) - } else if rcvLog := buf.String(); !strings.Contains(rcvLog, expLog) { - t.Errorf("Logger %v,doesn't contain %v", utils.ToJSON(rcvLog), utils.ToJSON(expLog)) - } -} - func TestAccGetAllBalancesForPrefixLogg(t *testing.T) { tmp := Cache utils.Logger.SetLogLevel(4) diff --git a/general_tests/balance_it_test.go b/general_tests/balance_it_test.go index 65bc21adb..4ba8084b5 100644 --- a/general_tests/balance_it_test.go +++ b/general_tests/balance_it_test.go @@ -68,7 +68,7 @@ func TestBalanceBlocker(t *testing.T) { }, "rals": { - "enabled": true, + "enabled": true }, "cdrs": { @@ -300,7 +300,7 @@ func TestBalanceFactor(t *testing.T) { }, "rals": { - "enabled": true, + "enabled": true }, "cdrs": { @@ -842,7 +842,7 @@ func TestBalanceCDRLog(t *testing.T) { }, "cdrs": { - "enabled": true, + "enabled": true }, "schedulers": { diff --git a/utils/consts.go b/utils/consts.go index 98f3662a0..30a51bba3 100644 --- a/utils/consts.go +++ b/utils/consts.go @@ -513,7 +513,6 @@ const ( BalanceFactorID = "BalanceFactorID" Units = "Units" AccountUpdate = "AccountUpdate" - BalanceUpdate = "BalanceUpdate" StatUpdate = "StatUpdate" ResourceUpdate = "ResourceUpdate" CDR = "CDR"