mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Stop sending BalanceUpdate events to thresholds/stats
This commit is contained in:
committed by
Dan Christian Bogos
parent
d6c5ddf08e
commit
a5d29d5d7b
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
|
@@ -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,
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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("<AccountS> error: <%s> processing balance event <%+v> with ThresholdS.",
|
||||
err.Error(), utils.ToJSON(thEv)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
COMMIT:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -513,7 +513,6 @@ const (
|
||||
BalanceFactorID = "BalanceFactorID"
|
||||
Units = "Units"
|
||||
AccountUpdate = "AccountUpdate"
|
||||
BalanceUpdate = "BalanceUpdate"
|
||||
StatUpdate = "StatUpdate"
|
||||
ResourceUpdate = "ResourceUpdate"
|
||||
CDR = "CDR"
|
||||
|
||||
Reference in New Issue
Block a user