Diameter DryRun for request processors

This commit is contained in:
DanB
2015-12-23 17:25:27 +01:00
committed by Radu Ioan Fericean
parent c8f2c10178
commit c46a2e2ec4
4 changed files with 12 additions and 6 deletions

View File

@@ -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("<DiameterAgent> RequestProcessor: %s", reqProcessor.Id))
utils.Logger.Info(fmt.Sprintf("<DiameterAgent> CCR message: %+v", ccr))
utils.Logger.Info(fmt.Sprintf("<DiameterAgent> 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("<DiameterAgent> Processing message: %+v, error: %s", ccr.diamMessage, err))

View File

@@ -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,
}

View File

@@ -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,

View File

@@ -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)},
},
},
},