From 249fd7eec33cc5d54d2cd8e393f6504d172070ad Mon Sep 17 00:00:00 2001 From: TeoV Date: Mon, 14 Dec 2020 18:04:05 +0200 Subject: [PATCH] [SessionS] Compile the SRun.EventCost before store it and send it further --- apier/v1/sessionsv1_it_test.go | 25 +++++++++++++++++++++++++ packages/debian/changelog | 1 + sessions/sessions.go | 4 +++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/apier/v1/sessionsv1_it_test.go b/apier/v1/sessionsv1_it_test.go index 009e098ec..ec9a0c5be 100644 --- a/apier/v1/sessionsv1_it_test.go +++ b/apier/v1/sessionsv1_it_test.go @@ -692,6 +692,13 @@ func testSSv1ItCDRsGetCdrs(t *testing.T) { if cdrs[0].Cost != 0.198 { t.Errorf("Unexpected cost for CDR: %f", cdrs[0].Cost) } + if cdrs[0].CostDetails.Usage == nil || *cdrs[0].CostDetails.Usage != 10*time.Minute { + t.Errorf("Unexpected usage from CostDetails for CDR: %+v", cdrs[0].CostDetails.Usage) + } + if cdrs[0].CostDetails.Cost == nil || *cdrs[0].CostDetails.Cost != 0.198 { + t.Errorf("Unexpected cost from CostDetails for CDR: %+v", cdrs[0].CostDetails.Cost) + } + } args = &utils.RPCCDRsFilterWithArgDispatcher{RPCCDRsFilter: &utils.RPCCDRsFilter{RunIDs: []string{"SupplierCharges"}, OriginIDs: []string{"TestSSv1It1"}}} @@ -703,6 +710,12 @@ func testSSv1ItCDRsGetCdrs(t *testing.T) { if cdrs[0].Cost != 0.102 { t.Errorf("Unexpected cost for CDR: %f", cdrs[0].Cost) } + if cdrs[0].CostDetails.Usage == nil || *cdrs[0].CostDetails.Usage != 10*time.Minute { + t.Errorf("Unexpected usage from CostDetails for CDR: %+v", cdrs[0].CostDetails.Usage) + } + if cdrs[0].CostDetails.Cost == nil || *cdrs[0].CostDetails.Cost != 0.102 { + t.Errorf("Unexpected cost from CostDetails for CDR: %+v", cdrs[0].CostDetails.Cost) + } } args = &utils.RPCCDRsFilterWithArgDispatcher{RPCCDRsFilter: &utils.RPCCDRsFilter{RunIDs: []string{"CustomerCharges"}, @@ -715,6 +728,12 @@ func testSSv1ItCDRsGetCdrs(t *testing.T) { if cdrs[0].Cost != 0.099 { t.Errorf("Unexpected cost for CDR: %f", cdrs[0].Cost) } + if cdrs[0].CostDetails.Usage == nil || *cdrs[0].CostDetails.Usage != 5*time.Minute { + t.Errorf("Unexpected usage from CostDetails for CDR: %+v", cdrs[0].CostDetails.Usage) + } + if cdrs[0].CostDetails.Cost == nil || *cdrs[0].CostDetails.Cost != 0.099 { + t.Errorf("Unexpected cost from CostDetails for CDR: %+v", cdrs[0].CostDetails.Cost) + } } args = &utils.RPCCDRsFilterWithArgDispatcher{RPCCDRsFilter: &utils.RPCCDRsFilter{RunIDs: []string{"SupplierCharges"}, OriginIDs: []string{"TestSSv1It2"}}} @@ -726,6 +745,12 @@ func testSSv1ItCDRsGetCdrs(t *testing.T) { if cdrs[0].Cost != 0.051 { t.Errorf("Unexpected cost for CDR: %f", cdrs[0].Cost) } + if cdrs[0].CostDetails.Usage == nil || *cdrs[0].CostDetails.Usage != 5*time.Minute { + t.Errorf("Unexpected usage from CostDetails for CDR: %+v", cdrs[0].CostDetails.Usage) + } + if cdrs[0].CostDetails.Cost == nil || *cdrs[0].CostDetails.Cost != 0.051 { + t.Errorf("Unexpected cost from CostDetails for CDR: %+v", cdrs[0].CostDetails.Cost) + } } } diff --git a/packages/debian/changelog b/packages/debian/changelog index fc174c860..418533e54 100644 --- a/packages/debian/changelog +++ b/packages/debian/changelog @@ -4,6 +4,7 @@ cgrates (0.10.3~dev) UNRELEASED; urgency=medium * [SessionS] Use rals_conns when sending refund rounding * [SupplierS] SupplierS require a connection to rals when give AccountIDs and RatingPlanIDs to calculate + * [SessionS] Compile the SRun.EventCost before store it and send it further -- DanB Thu, 08 Oct 2020 16:23:58 +0300 diff --git a/sessions/sessions.go b/sessions/sessions.go index 6b7f3790d..2a83f1a99 100644 --- a/sessions/sessions.go +++ b/sessions/sessions.go @@ -1501,8 +1501,10 @@ func (sS *SessionS) endSession(s *Session, tUsage, lastUsage *time.Duration, fmt.Sprintf("<%s> failed rounding session cost for <%s>, srIdx: <%d>, error: <%s>", utils.SessionS, s.CGRID, sRunIdx, err.Error())) } - } + // compute the event cost before saving the SessionCost + // add here to be applied for messages also + sr.EventCost.Compute() if sS.cgrCfg.SessionSCfg().StoreSCosts { if err := sS.storeSCost(s, sRunIdx); err != nil { utils.Logger.Warning(