diff --git a/agents/dmtagent.go b/agents/dmtagent.go index 3bf0cc677..2a6877592 100644 --- a/agents/dmtagent.go +++ b/agents/dmtagent.go @@ -79,6 +79,14 @@ func (self DiameterAgent) processCCR(ccr *CCR, reqProcessor *config.DARequestPro if err != nil { return nil, err } + cca := NewBareCCAFromCCR(ccr, self.cgrCfg.DiameterAgentCfg().OriginHost, self.cgrCfg.DiameterAgentCfg().OriginRealm) + if reqProcessor.DryRun { // DryRun does not send over network + utils.Logger.Info(fmt.Sprintf(" RequestProcessor: %s", reqProcessor.Id)) + utils.Logger.Info(fmt.Sprintf(" CCR message: %+v", ccr)) + utils.Logger.Info(fmt.Sprintf(" SMGenericEvent: %+v", smgEv)) + cca.ResultCode = diam.LimitedSuccess + return cca, nil + } var maxUsage float64 switch ccr.CCRequestType { case 1: @@ -92,9 +100,6 @@ func (self DiameterAgent) processCCR(ccr *CCR, reqProcessor *config.DARequestPro err = errCdr } } - cca := NewBareCCAFromCCR(ccr) - cca.OriginHost = self.cgrCfg.DiameterAgentCfg().OriginHost - cca.OriginRealm = self.cgrCfg.DiameterAgentCfg().OriginRealm if err != nil { cca.ResultCode = DiameterRatingFailed utils.Logger.Err(fmt.Sprintf(" Processing message: %+v, error: %s", ccr.diamMessage, err)) diff --git a/agents/libdmt.go b/agents/libdmt.go index 9bccd0cce..11f8962ee 100644 --- a/agents/libdmt.go +++ b/agents/libdmt.go @@ -564,8 +564,9 @@ func (self *CCR) AsSMGenericEvent(cfgFlds []*config.CfgCdrField) (sessionmanager return sessionmanager.SMGenericEvent(utils.ConvertMapValStrIf(outMap)), nil } -func NewBareCCAFromCCR(ccr *CCR) *CCA { +func NewBareCCAFromCCR(ccr *CCR, originHost, originRealm string) *CCA { cca := &CCA{SessionId: ccr.SessionId, AuthApplicationId: ccr.AuthApplicationId, CCRequestType: ccr.CCRequestType, CCRequestNumber: ccr.CCRequestNumber, + OriginHost: originHost, OriginRealm: originRealm, diamMessage: diam.NewMessage(ccr.diamMessage.Header.CommandCode, ccr.diamMessage.Header.CommandFlags&^diam.RequestFlag, ccr.diamMessage.Header.ApplicationID, ccr.diamMessage.Header.HopByHopID, ccr.diamMessage.Header.EndToEndID, ccr.diamMessage.Dictionary()), ccrMessage: ccr.diamMessage, debitInterval: ccr.debitInterval, } diff --git a/agents/libdmt_test.go b/agents/libdmt_test.go index 6a60b5896..73297edd0 100644 --- a/agents/libdmt_test.go +++ b/agents/libdmt_test.go @@ -257,7 +257,7 @@ func TestCCASetProcessorAVPs(t *testing.T) { diam.NewAVP(444, avp.Mbit, 0, datatype.UTF8String("33708000003")), // Subscription-Id-Data }}) ccr.debitInterval = time.Duration(300) * time.Second - cca := NewBareCCAFromCCR(ccr) + cca := NewBareCCAFromCCR(ccr, "CGR-DA", "cgrates.org") reqProcessor := &config.DARequestProcessor{Id: "UNIT_TEST", // Set template for tests CCAFields: []*config.CfgCdrField{ &config.CfgCdrField{Tag: "Subscription-Id/Subscription-Id-Type", Type: utils.META_COMPOSED, diff --git a/config/config_json_test.go b/config/config_json_test.go index c87c67aee..dba9f6f9d 100644 --- a/config/config_json_test.go +++ b/config/config_json_test.go @@ -493,7 +493,7 @@ func TestDiameterAgentJsonCfg(t *testing.T) { }, CCA_fields: &[]*CdrFieldJsonCfg{ &CdrFieldJsonCfg{Tag: utils.StringPointer("GrantedUnits"), Type: utils.StringPointer(utils.META_HANDLER), Handler_id: utils.StringPointer("*cca_usage"), - Value: utils.StringPointer("Granted-Service-Unit>CC-Time"), Mandatory: utils.BoolPointer(true)}, + Field_id: utils.StringPointer("Granted-Service-Unit>CC-Time"), Mandatory: utils.BoolPointer(true)}, }, }, },