From 4bfb0c2845c2c4bbedd363f949e617f095557be3 Mon Sep 17 00:00:00 2001 From: TeoV Date: Sun, 17 Mar 2019 11:46:09 +0200 Subject: [PATCH] Add verify for timing for RateInterval --- engine/calldesc.go | 1 - engine/ratingprofile.go | 12 +++++++++++- general_tests/tutorial2_it_test.go | 31 +++++++++++++----------------- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/engine/calldesc.go b/engine/calldesc.go index e92dc4102..6c0723ee8 100644 --- a/engine/calldesc.go +++ b/engine/calldesc.go @@ -551,7 +551,6 @@ func (cd *CallDescriptor) GetCost() (*CallCost, error) { if err != nil || cd.GetDuration() == 0 { return cc, err } - cost := 0.0 for i, ts := range cc.Timespans { // only add connect fee if this is the first/only call cost request diff --git a/engine/ratingprofile.go b/engine/ratingprofile.go index d29797867..c018a94f6 100644 --- a/engine/ratingprofile.go +++ b/engine/ratingprofile.go @@ -173,11 +173,21 @@ func (rpf *RatingProfile) GetRatingPlansForPrefix(cd *CallDescriptor) (err error for _, p := range utils.SplitPrefix(cd.Destination, MIN_PREFIX_MATCH) { if destIDs, err := dm.DataDB().GetReverseDestination(p, false, utils.NonTransactional); err == nil { var bestWeight *float64 + var timeChecker bool for _, dID := range destIDs { if _, ok := rpl.DestinationRates[dID]; ok { ril := rpl.RateIntervalList(dID) + //check if RateInverval is active for call descriptor time + for _, ri := range ril { + if !ri.Timing.IsActiveAt(cd.TimeStart) { + continue + } else { + timeChecker = true + break + } + } currentWeight := ril.GetWeight() - if bestWeight == nil || currentWeight > *bestWeight { + if timeChecker && (bestWeight == nil || currentWeight > *bestWeight) { bestWeight = utils.Float64Pointer(currentWeight) rps = ril prefix = p diff --git a/general_tests/tutorial2_it_test.go b/general_tests/tutorial2_it_test.go index 24b62e77a..b96cd610e 100644 --- a/general_tests/tutorial2_it_test.go +++ b/general_tests/tutorial2_it_test.go @@ -72,10 +72,7 @@ func testTutLoadConfig(t *testing.T) { if tutCfg, err = config.NewCGRConfigFromPath(tutCfgPath); err != nil { t.Error(err) } - switch tutCfgDir { - default: - tutDelay = 2000 - } + tutDelay = 2000 } func testTutResetDB(t *testing.T) { @@ -144,20 +141,18 @@ func testTutGetCost(t *testing.T) { AnswerTime: "2019-03-11T21:00:00Z", Usage: "45s", } - /* - // *any to 2001 - attrs = v1.AttrGetCost{ - Subject: "1002", - Destination: "2001", - AnswerTime: "*now", - Usage: "45s", - } - if err := tutRpc.Call(utils.ApierV1GetCost, attrs, &rply); err != nil { - t.Error("Unexpected nil error received: ", err.Error()) - } else if *rply.Cost != 1.2 { // FixMe: missing ConnectFee out of Cost - t.Errorf("Unexpected cost received: %f", *rply.Cost) - } - */ + // *any to 2001 + attrs = v1.AttrGetCost{ + Subject: "1002", + Destination: "2001", + AnswerTime: "*now", + Usage: "45s", + } + if err := tutRpc.Call(utils.ApierV1GetCost, attrs, &rply); err != nil { + t.Error("Unexpected nil error received: ", err.Error()) + } else if *rply.Cost != 1.4 { + t.Errorf("Unexpected cost received: %f", *rply.Cost) + } // *any to 2001 on NEW_YEAR attrs = v1.AttrGetCost{ Subject: "1002",