mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
empty blocker balance considered
This commit is contained in:
@@ -287,7 +287,7 @@ func (ub *Account) getBalancesForPrefix(prefix, category, direction, tor string,
|
||||
if b.Disabled {
|
||||
continue
|
||||
}
|
||||
if b.IsExpired() || (len(b.SharedGroups) == 0 && b.GetValue() <= 0) {
|
||||
if b.IsExpired() || (len(b.SharedGroups) == 0 && b.GetValue() <= 0 && !b.Blocker) {
|
||||
continue
|
||||
}
|
||||
if sharedGroup != "" && b.SharedGroups[sharedGroup] == false {
|
||||
|
||||
@@ -566,7 +566,7 @@ func TestGetMaxSessiontWithBlocker(t *testing.T) {
|
||||
MaxCostSoFar: 0,
|
||||
}
|
||||
result, err := cd.GetMaxSessionDuration()
|
||||
expected := 30 * time.Minute
|
||||
expected := 17 * time.Minute
|
||||
if result != expected || err != nil {
|
||||
t.Errorf("Expected %v was %v (%v)", expected, result, err)
|
||||
}
|
||||
@@ -588,6 +588,57 @@ func TestGetMaxSessiontWithBlocker(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetMaxSessiontWithBlockerEmpty(t *testing.T) {
|
||||
ap, _ := ratingStorage.GetActionPlan("BLOCK_EMPTY_AT", false)
|
||||
for _, at := range ap.ActionTimings {
|
||||
at.accountIDs = ap.AccountIDs
|
||||
at.Execute()
|
||||
}
|
||||
acc, err := accountingStorage.GetAccount("cgrates.org:block_empty")
|
||||
if err != nil {
|
||||
t.Error("error getting account: ", err)
|
||||
}
|
||||
if len(acc.BalanceMap[utils.MONETARY]) != 2 ||
|
||||
acc.BalanceMap[utils.MONETARY][0].Blocker != true {
|
||||
for _, b := range acc.BalanceMap[utils.MONETARY] {
|
||||
t.Logf("B: %+v", b)
|
||||
}
|
||||
t.Error("Error executing action plan on account: ", acc.BalanceMap[utils.MONETARY])
|
||||
}
|
||||
cd := &CallDescriptor{
|
||||
Direction: "*out",
|
||||
Category: "call",
|
||||
Tenant: "cgrates.org",
|
||||
Subject: "block",
|
||||
Account: "block_empty",
|
||||
Destination: "0723",
|
||||
TimeStart: time.Date(2016, 1, 13, 14, 0, 0, 0, time.UTC),
|
||||
TimeEnd: time.Date(2016, 1, 13, 14, 30, 0, 0, time.UTC),
|
||||
MaxCostSoFar: 0,
|
||||
}
|
||||
result, err := cd.GetMaxSessionDuration()
|
||||
expected := 0 * time.Minute
|
||||
if result != expected || err != nil {
|
||||
t.Errorf("Expected %v was %v (%v)", expected, result, err)
|
||||
}
|
||||
cd = &CallDescriptor{
|
||||
Direction: "*out",
|
||||
Category: "call",
|
||||
Tenant: "cgrates.org",
|
||||
Subject: "block",
|
||||
Account: "block_empty",
|
||||
Destination: "444",
|
||||
TimeStart: time.Date(2016, 1, 13, 14, 0, 0, 0, time.UTC),
|
||||
TimeEnd: time.Date(2016, 1, 13, 14, 30, 0, 0, time.UTC),
|
||||
MaxCostSoFar: 0,
|
||||
}
|
||||
result, err = cd.GetMaxSessionDuration()
|
||||
expected = 30 * time.Minute
|
||||
if result != expected || err != nil {
|
||||
t.Errorf("Expected %v was %v (%v)", expected, result, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetCostWithMaxCost(t *testing.T) {
|
||||
ap, _ := ratingStorage.GetActionPlan("TOPUP10_AT", false)
|
||||
for _, at := range ap.ActionTimings {
|
||||
|
||||
@@ -172,8 +172,10 @@ EE0,*topup_reset,,,,*monetary,*out,,,,SG3,*unlimited,,0,10,false,false,10
|
||||
EE0,*allow_negative,,,,*monetary,*out,,,,,*unlimited,,0,10,false,false,10
|
||||
DEFEE,*cdrlog,"{""Category"":""^ddi"",""MediationRunId"":""^did_run""}",,,,,,,,,,,,,false,false,10
|
||||
NEG,*allow_negative,,,,*monetary,*out,,,,,*unlimited,,0,10,false,false,10
|
||||
BLOCK,*topup,,,bblocker,*monetary,*out,,NAT,,,*unlimited,,10,20,true,false,20
|
||||
BLOCK,*topup,,,bblocker,*monetary,*out,,NAT,,,*unlimited,,1,20,true,false,20
|
||||
BLOCK,*topup,,,bfree,*monetary,*out,,,,,*unlimited,,20,10,false,false,10
|
||||
BLOCK_EMPTY,*topup,,,bblocker,*monetary,*out,,NAT,,,*unlimited,,0,20,true,false,20
|
||||
BLOCK_EMPTY,*topup,,,bfree,*monetary,*out,,,,,*unlimited,,20,10,false,false,10
|
||||
FILTER,*topup,,"{""*and"":[{""Value"":{""*lt"":0}},{""Id"":{""*eq"":""*default""}}]}",bfree,*monetary,*out,,,,,*unlimited,,20,10,false,false,10
|
||||
EXP,*topup,,,,*voice,*out,,,,,*monthly,*any,300,10,false,false,10
|
||||
NOEXP,*topup,,,,*voice,*out,,,,,*unlimited,*any,50,10,false,false,10
|
||||
@@ -188,6 +190,7 @@ TOPUP_SHARED10_AT,SE10,*asap,10
|
||||
TOPUP_EMPTY_AT,EE0,*asap,10
|
||||
POST_AT,NEG,*asap,10
|
||||
BLOCK_AT,BLOCK,*asap,10
|
||||
BLOCK_EMPTY_AT,BLOCK_EMPTY,*asap,10
|
||||
EXP_AT,EXP,*asap,10
|
||||
`
|
||||
|
||||
@@ -216,6 +219,7 @@ vdf,emptyY,TOPUP_EMPTY_AT,,,
|
||||
vdf,post,POST_AT,,,
|
||||
cgrates.org,alodis,TOPUP_EMPTY_AT,,true,true
|
||||
cgrates.org,block,BLOCK_AT,,false,false
|
||||
cgrates.org,block_empty,BLOCK_EMPTY_AT,,false,false
|
||||
cgrates.org,expo,EXP_AT,,false,false
|
||||
cgrates.org,expnoexp,,,false,false
|
||||
`
|
||||
@@ -820,7 +824,7 @@ func TestLoadRatingProfiles(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestLoadActions(t *testing.T) {
|
||||
if len(csvr.actions) != 13 {
|
||||
if len(csvr.actions) != 14 {
|
||||
t.Error("Failed to load actions: ", len(csvr.actions))
|
||||
}
|
||||
as1 := csvr.actions["MINI"]
|
||||
@@ -1006,7 +1010,7 @@ func TestLoadLCRs(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestLoadActionTimings(t *testing.T) {
|
||||
if len(csvr.actionPlans) != 8 {
|
||||
if len(csvr.actionPlans) != 9 {
|
||||
t.Error("Failed to load action timings: ", len(csvr.actionPlans))
|
||||
}
|
||||
atm := csvr.actionPlans["MORE_MINUTES"]
|
||||
@@ -1101,7 +1105,7 @@ func TestLoadActionTriggers(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestLoadAccountActions(t *testing.T) {
|
||||
if len(csvr.accountActions) != 14 {
|
||||
if len(csvr.accountActions) != 15 {
|
||||
t.Error("Failed to load account actions: ", len(csvr.accountActions))
|
||||
}
|
||||
aa := csvr.accountActions["vdf:minitsboy"]
|
||||
|
||||
@@ -274,7 +274,7 @@ func TestDifferentUuid(t *testing.T) {
|
||||
|
||||
func TestStorageTask(t *testing.T) {
|
||||
// clean previous unused tasks
|
||||
for i := 0; i < 18; i++ {
|
||||
for i := 0; i < 19; i++ {
|
||||
ratingStorage.PopTask()
|
||||
}
|
||||
|
||||
@@ -303,7 +303,7 @@ func TestStorageTask(t *testing.T) {
|
||||
t.Error("Error poping task: ", task, err)
|
||||
}
|
||||
if task, err := ratingStorage.PopTask(); err == nil && task != nil {
|
||||
t.Errorf("Error poping task %+v, %v: ", task, err)
|
||||
t.Errorf("Error poping task %+v, %v ", task, err)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user