mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-12 18:46:24 +05:00
Diameter DryRun for request processors
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user