From 7395aaa43c1ecc3d8a1d69ff74da4a3e69319d40 Mon Sep 17 00:00:00 2001 From: DanB Date: Wed, 23 Dec 2015 18:42:36 +0100 Subject: [PATCH] Responder.GetSessionRuns ads ExtraFields in SesssionRuns.CD, Diameter DryRun able to simulate full reply --- agents/dmtagent.go | 5 +++++ engine/responder.go | 3 ++- engine/responder_test.go | 9 ++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/agents/dmtagent.go b/agents/dmtagent.go index ee89e987b..bc247aeeb 100644 --- a/agents/dmtagent.go +++ b/agents/dmtagent.go @@ -85,6 +85,11 @@ func (self DiameterAgent) processCCR(ccr *CCR, reqProcessor *config.DARequestPro utils.Logger.Info(fmt.Sprintf(" CCR message: %s", ccr.diamMessage)) utils.Logger.Info(fmt.Sprintf(" SMGenericEvent: %+v", smgEv)) cca.ResultCode = diam.LimitedSuccess + if err := cca.SetProcessorAVPs(reqProcessor, 0); err != nil { + cca.ResultCode = DiameterRatingFailed + utils.Logger.Err(fmt.Sprintf(" Processing message: %+v, error: %s", ccr.diamMessage, err)) + return cca, nil + } return cca, nil } var maxUsage float64 diff --git a/engine/responder.go b/engine/responder.go index c16b1423b..79000e44f 100644 --- a/engine/responder.go +++ b/engine/responder.go @@ -423,7 +423,8 @@ func (rs *Responder) GetSessionRuns(ev *StoredCdr, sRuns *[]*SessionRun) error { Subject: ev.GetSubject(dc.SubjectField), Account: ev.GetAccount(dc.AccountField), Destination: ev.GetDestination(dc.DestinationField), - TimeStart: startTime} + TimeStart: startTime, + ExtraFields: ev.GetExtraFields()} sesRuns = append(sesRuns, &SessionRun{DerivedCharger: dc, CallDescriptor: cd}) } *sRuns = sesRuns diff --git a/engine/responder_test.go b/engine/responder_test.go index 74e87ccdd..7b6941b5a 100644 --- a/engine/responder_test.go +++ b/engine/responder_test.go @@ -150,11 +150,14 @@ func TestResponderGetSessionRuns(t *testing.T) { sesRuns := make([]*SessionRun, 0) eSRuns := []*SessionRun{ &SessionRun{DerivedCharger: extra1DC, - CallDescriptor: &CallDescriptor{Direction: "*out", Category: "0", Tenant: "vdf", Subject: "rif", Account: "minitsboy", Destination: "0256", TimeStart: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC)}}, + CallDescriptor: &CallDescriptor{Direction: "*out", Category: "0", Tenant: "vdf", Subject: "rif", Account: "minitsboy", Destination: "0256", TimeStart: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), + ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}}}, &SessionRun{DerivedCharger: extra2DC, - CallDescriptor: &CallDescriptor{Direction: "*out", Category: "call", Tenant: "vdf", Subject: "ivo", Account: "ivo", Destination: "1002", TimeStart: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC)}}, + CallDescriptor: &CallDescriptor{Direction: "*out", Category: "call", Tenant: "vdf", Subject: "ivo", Account: "ivo", Destination: "1002", TimeStart: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), + ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}}}, &SessionRun{DerivedCharger: dfDC, - CallDescriptor: &CallDescriptor{Direction: "*out", Category: "call", Tenant: "vdf", Subject: "dan2", Account: "dan2", Destination: "1002", TimeStart: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC)}}} + CallDescriptor: &CallDescriptor{Direction: "*out", Category: "call", Tenant: "vdf", Subject: "dan2", Account: "dan2", Destination: "1002", TimeStart: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), + ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}}}} if err := rsponder.GetSessionRuns(cdr, &sesRuns); err != nil { t.Error(err) } else if !reflect.DeepEqual(eSRuns, sesRuns) {