From 33176caae33ff3a78987f0112006fc91a6104ea7 Mon Sep 17 00:00:00 2001 From: Radu Ioan Fericean Date: Tue, 29 Sep 2015 12:42:20 +0300 Subject: [PATCH] return callcost with -1 cost on error --- apier/v1/apier.go | 3 +++ engine/calldesc.go | 2 +- engine/calldesc_test.go | 11 +++++++++++ engine/cdrs.go | 2 +- engine/responder.go | 5 +++-- 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/apier/v1/apier.go b/apier/v1/apier.go index 1f69f6ec1..522473e99 100644 --- a/apier/v1/apier.go +++ b/apier/v1/apier.go @@ -22,6 +22,7 @@ import ( "encoding/json" "errors" "fmt" + "log" "os" "path" "strings" @@ -1221,6 +1222,7 @@ func (arrp *AttrRemoveRatingProfile) GetId() (result string) { } func (self *ApierV1) RemoveRatingProfile(attr AttrRemoveRatingProfile, reply *string) error { + log.Printf("ATTR: %+v", attr) if attr.Direction == "" { attr.Direction = utils.OUT } @@ -1230,6 +1232,7 @@ func (self *ApierV1) RemoveRatingProfile(attr AttrRemoveRatingProfile, reply *st return utils.ErrMandatoryIeMissing } _, err := engine.Guardian.Guard(func() (interface{}, error) { + log.Print("RPID: ", attr.GetId()) err := self.RatingDb.RemoveRatingProfile(attr.GetId()) if err != nil { return 0, err diff --git a/engine/calldesc.go b/engine/calldesc.go index 818aa7e3d..8e68a1984 100644 --- a/engine/calldesc.go +++ b/engine/calldesc.go @@ -427,7 +427,7 @@ func (cd *CallDescriptor) GetCost() (*CallCost, error) { cd.account = nil // make sure it's not cached cc, err := cd.getCost() if err != nil { - return nil, err + return cc, err } cost := 0.0 diff --git a/engine/calldesc_test.go b/engine/calldesc_test.go index 924f4c081..9c1aa542b 100644 --- a/engine/calldesc_test.go +++ b/engine/calldesc_test.go @@ -387,6 +387,17 @@ func TestSubjectNotFound(t *testing.T) { } } +func TestSubjectNotFoundCostNegativeOne(t *testing.T) { + t1 := time.Date(2013, time.February, 1, 17, 30, 0, 0, time.UTC) + t2 := time.Date(2013, time.February, 1, 18, 30, 0, 0, time.UTC) + cd := &CallDescriptor{Direction: "*out", Category: "0", Tenant: "cgrates.org", Subject: "not_exiting", Destination: "025740532", TimeStart: t1, TimeEnd: t2} + result, _ := cd.GetCost() + if result.Cost != -1 || result.GetConnectFee() != 0 { + //t.Logf("%+v", result.Timespans[0].RateInterval) + t.Errorf("Expected -1 was %v", result) + } +} + func TestMultipleRatingPlans(t *testing.T) { t1 := time.Date(2012, time.February, 8, 17, 30, 0, 0, time.UTC) t2 := time.Date(2012, time.February, 8, 18, 30, 0, 0, time.UTC) diff --git a/engine/cdrs.go b/engine/cdrs.go index 249e4bdaa..6643e70ec 100644 --- a/engine/cdrs.go +++ b/engine/cdrs.go @@ -312,7 +312,7 @@ func (self *CdrServer) getCostFromRater(storedCdr *StoredCdr) (*CallCost, error) err = self.rater.GetCost(cd, cc) } if err != nil { - return nil, err + return cc, err } return cc, nil } diff --git a/engine/responder.go b/engine/responder.go index 874cbb8bb..8a6385540 100644 --- a/engine/responder.go +++ b/engine/responder.go @@ -105,10 +105,11 @@ func (rs *Responder) GetCost(arg *CallDescriptor, reply *CallCost) (err error) { r, e := Guardian.Guard(func() (interface{}, error) { return arg.GetCost() }, 0, arg.GetAccountKey()) + if r != nil { + *reply = *r.(*CallCost) + } if e != nil { return e - } else if r != nil { - *reply = *r.(*CallCost) } } return