Add filter on cost for qos strategy

This commit is contained in:
TeoV
2018-07-31 10:03:05 -04:00
committed by Dan Christian Bogos
parent da8cd6360e
commit efe71c09d4
3 changed files with 59 additions and 4 deletions

View File

@@ -59,6 +59,7 @@ var sTestsSupplierSV1 = []func(t *testing.T){
testV1SplSGetQOSSuppliers2,
testV1SplSGetQOSSuppliers3,
testV1SplSGetQOSSuppliersFiltred,
testV1SplSGetQOSSuppliersFiltred2,
testV1SplSGetSupplierWithoutFilter,
testV1SplSSetSupplierProfiles,
testV1SplSUpdateSupplierProfiles,
@@ -350,7 +351,6 @@ func testV1SplSGetHighestCostSuppliers(t *testing.T) {
ID: "testV1SplSGetHighestCostSuppliers",
Event: map[string]interface{}{
utils.Account: "1003",
utils.Subject: "1003",
utils.Destination: "1002",
utils.SetupTime: time.Date(2017, 12, 1, 14, 25, 0, 0, time.UTC),
utils.Usage: "1m20s",
@@ -721,6 +721,56 @@ func testV1SplSGetQOSSuppliersFiltred(t *testing.T) {
}
}
func testV1SplSGetQOSSuppliersFiltred2(t *testing.T) {
ev := &engine.ArgsGetSuppliers{
CGREvent: utils.CGREvent{
Tenant: "cgrates.org",
ID: "testV1SplSGetQOSSuppliers",
Event: map[string]interface{}{
"DistincMatch": "*qos_filtred2",
utils.Account: "1003",
utils.Destination: "1002",
utils.SetupTime: time.Date(2017, 12, 1, 14, 25, 0, 0, time.UTC),
utils.Usage: "1m20s",
},
},
}
eSpls := engine.SortedSuppliers{
ProfileID: "SPL_QOS_FILTRED2",
Sorting: utils.MetaQOS,
SortedSuppliers: []*engine.SortedSupplier{
&engine.SortedSupplier{
SupplierID: "supplier3",
SortingData: map[string]interface{}{
"*acd:Stat_3": 11.0,
"*asr:Stat_3": 100.0,
"*tcd:Stat_3": 11.0,
utils.Weight: 35.0,
},
},
&engine.SortedSupplier{
SupplierID: "supplier2",
SortingData: map[string]interface{}{
"*acd:Stat_2": 5.5,
"*asr:Stat_2": 100.0,
"*tcd:Stat_2": 11.0,
utils.Cost: 0.46666,
utils.RatingPlanID: "RP_RETAIL1",
utils.Weight: 20.0,
},
},
},
}
var suplsReply engine.SortedSuppliers
if err := splSv1Rpc.Call(utils.SupplierSv1GetSuppliers,
ev, &suplsReply); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(eSpls, suplsReply) {
t.Errorf("Expecting: %s, received: %s",
utils.ToJSON(eSpls), utils.ToJSON(suplsReply))
}
}
func testV1SplSGetSupplierWithoutFilter(t *testing.T) {
ev := &engine.ArgsGetSuppliers{
CGREvent: utils.CGREvent{

View File

@@ -7,9 +7,8 @@ cgrates.org,FLTR_1,*rsr,,Subject(~^1.*1$);Destination(1002),
cgrates.org,FLTR_ACNT_1007,*string,Account,1007,2014-07-29T15:00:00Z
cgrates.org,FLTR_ACNT_dan,*string,Account,dan,2014-07-29T15:00:00Z
cgrates.org,FLTR_SPP_ACNT_dan,*string,*req.Account,dan,2014-07-29T15:00:00Z
cgrates.org,FLTR_SPP_2,*string,Account,1003;1002,2014-07-29T15:00:00Z
cgrates.org,FLTR_SPP_2,*string,Account,1003,2014-07-29T15:00:00Z
cgrates.org,FLTR_SPP_2,*prefix,Destination,10;20,
cgrates.org,FLTR_SPP_2,*rsr,,Subject(~^1.*1$);Destination(1002),
cgrates.org,FLTR_SPP_2,*string,DistincMatch,*highest_cost,
cgrates.org,FLTR_SPP_3,*string,DistincMatch,*qos,2014-07-29T15:00:00Z
cgrates.org,FLTR_STAT_1,*string,Account,1001,2014-07-29T15:00:00Z
@@ -21,4 +20,7 @@ cgrates.org,FLTR_STAT_1_1,*string,Stat,Stat1_1,2014-07-29T15:00:00Z
cgrates.org,FLTR_SPP_6,*string,DistincMatch,*qos_filtred,2014-07-29T15:00:00Z
cgrates.org,FLTR_QOS_SP1,*gte,*gs.*acd,10.0,2014-07-29T15:00:00Z
cgrates.org,FLTR_QOS_SP2,*gte,*gs.*acd,10.0,2014-07-29T15:00:00Z
cgrates.org,FLTR_QOS_SP2,*gte,*gs.*tcd,11.0,
cgrates.org,FLTR_QOS_SP2,*gte,*gs.*tcd,11.0,
cgrates.org,FLTR_SPP_QOS_2,*string,DistincMatch,*qos_filtred2,2014-07-29T15:00:00Z
cgrates.org,FLTR_QOS_SP1_2,*gte,*sd.Cost,0.1,2014-07-29T15:00:00Z
cgrates.org,FLTR_QOS_SP2_2,*gte,*sd.Cost,0.2,2014-07-29T15:00:00Z
1 #Tenant[0] ID[1] FilterType[2] FilterFieldName[3] FilterFieldValues[4] ActivationInterval[5]
7 cgrates.org FLTR_ACNT_1007 *string Account 1007 2014-07-29T15:00:00Z
8 cgrates.org FLTR_ACNT_dan *string Account dan 2014-07-29T15:00:00Z
9 cgrates.org FLTR_SPP_ACNT_dan *string *req.Account dan 2014-07-29T15:00:00Z
10 cgrates.org FLTR_SPP_2 *string Account 1003;1002 1003 2014-07-29T15:00:00Z
11 cgrates.org FLTR_SPP_2 *prefix Destination 10;20
cgrates.org FLTR_SPP_2 *rsr Subject(~^1.*1$);Destination(1002)
12 cgrates.org FLTR_SPP_2 *string DistincMatch *highest_cost
13 cgrates.org FLTR_SPP_3 *string DistincMatch *qos 2014-07-29T15:00:00Z
14 cgrates.org FLTR_STAT_1 *string Account 1001 2014-07-29T15:00:00Z
20 cgrates.org FLTR_SPP_6 *string DistincMatch *qos_filtred 2014-07-29T15:00:00Z
21 cgrates.org FLTR_QOS_SP1 *gte *gs.*acd 10.0 2014-07-29T15:00:00Z
22 cgrates.org FLTR_QOS_SP2 *gte *gs.*acd 10.0 2014-07-29T15:00:00Z
23 cgrates.org FLTR_QOS_SP2 *gte *gs.*tcd 11.0
24 cgrates.org FLTR_SPP_QOS_2 *string DistincMatch *qos_filtred2 2014-07-29T15:00:00Z
25 cgrates.org FLTR_QOS_SP1_2 *gte *sd.Cost 0.1 2014-07-29T15:00:00Z
26 cgrates.org FLTR_QOS_SP2_2 *gte *sd.Cost 0.2 2014-07-29T15:00:00Z

View File

@@ -23,3 +23,6 @@ cgrates.org,SPL_QOS_3,,,,,supplier3,,,,,Stat_3,35,,,
cgrates.org,SPL_QOS_FILTRED,FLTR_SPP_6,2017-11-27T00:00:00Z,*qos,*pdd,supplier1,FLTR_QOS_SP1,,,,Stat_1;Stat_1_1,10,false,,10
cgrates.org,SPL_QOS_FILTRED,,,,,supplier2,FLTR_QOS_SP2,,,,Stat_2,20,,,
cgrates.org,SPL_QOS_FILTRED,,,,,supplier3,,,,,Stat_3,35,,,
cgrates.org,SPL_QOS_FILTRED2,FLTR_SPP_QOS_2,2017-11-27T00:00:00Z,*qos,*acd;*tcd;*asr,supplier1,FLTR_QOS_SP1_2,,RP_SPECIAL_1002,,Stat_1;Stat_1_1,10,false,,10
cgrates.org,SPL_QOS_FILTRED2,,,,,supplier2,FLTR_QOS_SP2_2,,RP_RETAIL1,,Stat_2,20,,,
cgrates.org,SPL_QOS_FILTRED2,,,,,supplier3,,,,,Stat_3,35,,,
1 #Tenant ID FilterIDs ActivationInterval Sorting SortingParameters SupplierID SupplierFilterIDs SupplierAccountIDs SupplierRatingPlanIDs SupplierResourceIDs SupplierStatIDs SupplierWeight SupplierBlocker SupplierParameters Weight
23 cgrates.org SPL_QOS_FILTRED FLTR_SPP_6 2017-11-27T00:00:00Z *qos *pdd supplier1 FLTR_QOS_SP1 Stat_1;Stat_1_1 10 false 10
24 cgrates.org SPL_QOS_FILTRED supplier2 FLTR_QOS_SP2 Stat_2 20
25 cgrates.org SPL_QOS_FILTRED supplier3 Stat_3 35
26 cgrates.org SPL_QOS_FILTRED2 FLTR_SPP_QOS_2 2017-11-27T00:00:00Z *qos *acd;*tcd;*asr supplier1 FLTR_QOS_SP1_2 RP_SPECIAL_1002 Stat_1;Stat_1_1 10 false 10
27 cgrates.org SPL_QOS_FILTRED2 supplier2 FLTR_QOS_SP2_2 RP_RETAIL1 Stat_2 20
28 cgrates.org SPL_QOS_FILTRED2 supplier3 Stat_3 35