From 3aaf458a2bd9715a94f577763ec2c816cf947be4 Mon Sep 17 00:00:00 2001 From: TeoV Date: Wed, 22 Apr 2020 12:36:42 +0300 Subject: [PATCH] Add support for *fd flag in agent --- agents/diamagent.go | 13 ++++-- agents/dnsagent.go | 13 ++++-- agents/httpagent.go | 13 ++++-- agents/radagent.go | 13 ++++-- ers/ers.go | 13 ++++-- sessions/sessions.go | 96 +++++++++++++++++++++++---------------- sessions/sessions_test.go | 56 +++++++++++++++-------- utils/consts.go | 3 +- 8 files changed, 141 insertions(+), 79 deletions(-) diff --git a/agents/diamagent.go b/agents/diamagent.go index 7f5f316fd..7286d5b9d 100644 --- a/agents/diamagent.go +++ b/agents/diamagent.go @@ -296,6 +296,7 @@ func (da *DiameterAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors), reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost), cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, + reqProcessor.Flags.HasKey(utils.MetaFD), ) rply := new(sessions.V1AuthorizeReply) err = da.connMgr.Call(da.cgrCfg.DiameterAgentCfg().SessionSConns, da, utils.SessionSv1AuthorizeEvent, @@ -314,7 +315,8 @@ func (da *DiameterAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.ParamsSlice(utils.MetaStats), reqProcessor.Flags.HasKey(utils.MetaResources), reqProcessor.Flags.HasKey(utils.MetaAccounts), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1InitSessionReply) err = da.connMgr.Call(da.cgrCfg.DiameterAgentCfg().SessionSConns, da, utils.SessionSv1InitiateSession, initArgs, rply) @@ -327,7 +329,8 @@ func (da *DiameterAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.HasKey(utils.MetaAttributes), reqProcessor.Flags.ParamsSlice(utils.MetaAttributes), reqProcessor.Flags.HasKey(utils.MetaAccounts), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1UpdateSessionReply) err = da.connMgr.Call(da.cgrCfg.DiameterAgentCfg().SessionSConns, da, utils.SessionSv1UpdateSession, updateArgs, rply) @@ -343,7 +346,8 @@ func (da *DiameterAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.ParamsSlice(utils.MetaThresholds), reqProcessor.Flags.HasKey(utils.MetaStats), reqProcessor.Flags.ParamsSlice(utils.MetaStats), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := utils.StringPointer("") err = da.connMgr.Call(da.cgrCfg.DiameterAgentCfg().SessionSConns, da, utils.SessionSv1TerminateSession, terminateArgs, rply) @@ -363,7 +367,8 @@ func (da *DiameterAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.HasKey(utils.MetaSuppliers), reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors), reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost), - cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator) + cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1ProcessMessageReply) err = da.connMgr.Call(da.cgrCfg.DiameterAgentCfg().SessionSConns, da, utils.SessionSv1ProcessMessage, msgArgs, rply) diff --git a/agents/dnsagent.go b/agents/dnsagent.go index 237f577c5..19b609cb2 100644 --- a/agents/dnsagent.go +++ b/agents/dnsagent.go @@ -217,6 +217,7 @@ func (da *DNSAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors), reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost), cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, + reqProcessor.Flags.HasKey(utils.MetaFD), ) rply := new(sessions.V1AuthorizeReply) err = da.connMgr.Call(da.cgrCfg.DNSAgentCfg().SessionSConns, nil, @@ -237,7 +238,8 @@ func (da *DNSAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.ParamsSlice(utils.MetaStats), reqProcessor.Flags.HasKey(utils.MetaResources), reqProcessor.Flags.HasKey(utils.MetaAccounts), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1InitSessionReply) err = da.connMgr.Call(da.cgrCfg.DNSAgentCfg().SessionSConns, nil, utils.SessionSv1InitiateSession, @@ -251,7 +253,8 @@ func (da *DNSAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.HasKey(utils.MetaAttributes), reqProcessor.Flags.ParamsSlice(utils.MetaAttributes), reqProcessor.Flags.HasKey(utils.MetaAccounts), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1UpdateSessionReply) err = da.connMgr.Call(da.cgrCfg.DNSAgentCfg().SessionSConns, nil, utils.SessionSv1UpdateSession, @@ -268,7 +271,8 @@ func (da *DNSAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.ParamsSlice(utils.MetaThresholds), reqProcessor.Flags.HasKey(utils.MetaStats), reqProcessor.Flags.ParamsSlice(utils.MetaStats), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := utils.StringPointer("") err = da.connMgr.Call(da.cgrCfg.DNSAgentCfg().SessionSConns, nil, utils.SessionSv1TerminateSession, @@ -289,7 +293,8 @@ func (da *DNSAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.HasKey(utils.MetaSuppliers), reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors), reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost), - cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator) + cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1ProcessMessageReply) // need it so rpcclient can clone err = da.connMgr.Call(da.cgrCfg.DNSAgentCfg().SessionSConns, nil, utils.SessionSv1ProcessMessage, diff --git a/agents/httpagent.go b/agents/httpagent.go index b23ef317e..1e509afd6 100644 --- a/agents/httpagent.go +++ b/agents/httpagent.go @@ -153,6 +153,7 @@ func (ha *HTTPAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors), reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost), cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, + reqProcessor.Flags.HasKey(utils.MetaFD), ) rply := new(sessions.V1AuthorizeReply) err = ha.connMgr.Call(ha.sessionConns, nil, utils.SessionSv1AuthorizeEvent, @@ -171,7 +172,8 @@ func (ha *HTTPAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.ParamsSlice(utils.MetaStats), reqProcessor.Flags.HasKey(utils.MetaResources), reqProcessor.Flags.HasKey(utils.MetaAccounts), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1InitSessionReply) err = ha.connMgr.Call(ha.sessionConns, nil, utils.SessionSv1InitiateSession, initArgs, rply) @@ -184,7 +186,8 @@ func (ha *HTTPAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.HasKey(utils.MetaAttributes), reqProcessor.Flags.ParamsSlice(utils.MetaAttributes), reqProcessor.Flags.HasKey(utils.MetaAccounts), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1UpdateSessionReply) err = ha.connMgr.Call(ha.sessionConns, nil, utils.SessionSv1UpdateSession, updateArgs, rply) @@ -200,7 +203,8 @@ func (ha *HTTPAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.ParamsSlice(utils.MetaThresholds), reqProcessor.Flags.HasKey(utils.MetaStats), reqProcessor.Flags.ParamsSlice(utils.MetaStats), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := utils.StringPointer("") err = ha.connMgr.Call(ha.sessionConns, nil, utils.SessionSv1TerminateSession, terminateArgs, rply) @@ -220,7 +224,8 @@ func (ha *HTTPAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.HasKey(utils.MetaSuppliers), reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors), reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost), - cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator) + cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1ProcessMessageReply) err = ha.connMgr.Call(ha.sessionConns, nil, utils.SessionSv1ProcessMessage, evArgs, rply) diff --git a/agents/radagent.go b/agents/radagent.go index d8ce4a2d1..e02bc4b75 100644 --- a/agents/radagent.go +++ b/agents/radagent.go @@ -195,6 +195,7 @@ func (ra *RadiusAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors), reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost), cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, + reqProcessor.Flags.HasKey(utils.MetaFD), ) rply := new(sessions.V1AuthorizeReply) err = ra.connMgr.Call(ra.cgrCfg.RadiusAgentCfg().SessionSConns, nil, utils.SessionSv1AuthorizeEvent, @@ -213,7 +214,8 @@ func (ra *RadiusAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.ParamsSlice(utils.MetaStats), reqProcessor.Flags.HasKey(utils.MetaResources), reqProcessor.Flags.HasKey(utils.MetaAccounts), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1InitSessionReply) err = ra.connMgr.Call(ra.cgrCfg.RadiusAgentCfg().SessionSConns, nil, utils.SessionSv1InitiateSession, initArgs, rply) @@ -226,7 +228,8 @@ func (ra *RadiusAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.HasKey(utils.MetaAttributes), reqProcessor.Flags.ParamsSlice(utils.MetaAttributes), reqProcessor.Flags.HasKey(utils.MetaAccounts), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1UpdateSessionReply) err = ra.connMgr.Call(ra.cgrCfg.RadiusAgentCfg().SessionSConns, nil, utils.SessionSv1UpdateSession, updateArgs, rply) @@ -242,7 +245,8 @@ func (ra *RadiusAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.ParamsSlice(utils.MetaThresholds), reqProcessor.Flags.HasKey(utils.MetaStats), reqProcessor.Flags.ParamsSlice(utils.MetaStats), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := utils.StringPointer("") err = ra.connMgr.Call(ra.cgrCfg.RadiusAgentCfg().SessionSConns, nil, utils.SessionSv1TerminateSession, terminateArgs, rply) @@ -262,7 +266,8 @@ func (ra *RadiusAgent) processRequest(reqProcessor *config.RequestProcessor, reqProcessor.Flags.HasKey(utils.MetaSuppliers), reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors), reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost), - cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator) + cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, + reqProcessor.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1ProcessMessageReply) err = ra.connMgr.Call(ra.cgrCfg.RadiusAgentCfg().SessionSConns, nil, utils.SessionSv1ProcessMessage, evArgs, rply) if utils.ErrHasPrefix(err, utils.RalsErrorPrfx) { diff --git a/ers/ers.go b/ers/ers.go index 608c1de17..c6bef2d43 100644 --- a/ers/ers.go +++ b/ers/ers.go @@ -191,6 +191,7 @@ func (erS *ERService) processEvent(cgrEv *utils.CGREvent, rdrCfg *config.EventRe rdrCfg.Flags.HasKey(utils.MetaSuppliersIgnoreErrors), rdrCfg.Flags.HasKey(utils.MetaSuppliersEventCost), cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, + rdrCfg.Flags.HasKey(utils.MetaFD), ) rply := new(sessions.V1AuthorizeReply) err = erS.connMgr.Call(erS.cfg.ERsCfg().SessionSConns, nil, utils.SessionSv1AuthorizeEvent, @@ -205,7 +206,8 @@ func (erS *ERService) processEvent(cgrEv *utils.CGREvent, rdrCfg *config.EventRe rdrCfg.Flags.ParamsSlice(utils.MetaStats), rdrCfg.Flags.HasKey(utils.MetaResources), rdrCfg.Flags.HasKey(utils.MetaAccounts), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + rdrCfg.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1InitSessionReply) err = erS.connMgr.Call(erS.cfg.ERsCfg().SessionSConns, nil, utils.SessionSv1InitiateSession, initArgs, rply) @@ -214,7 +216,8 @@ func (erS *ERService) processEvent(cgrEv *utils.CGREvent, rdrCfg *config.EventRe rdrCfg.Flags.HasKey(utils.MetaAttributes), rdrCfg.Flags.ParamsSlice(utils.MetaAttributes), rdrCfg.Flags.HasKey(utils.MetaAccounts), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + rdrCfg.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1UpdateSessionReply) err = erS.connMgr.Call(erS.cfg.ERsCfg().SessionSConns, nil, utils.SessionSv1UpdateSession, updateArgs, rply) @@ -226,7 +229,8 @@ func (erS *ERService) processEvent(cgrEv *utils.CGREvent, rdrCfg *config.EventRe rdrCfg.Flags.ParamsSlice(utils.MetaThresholds), rdrCfg.Flags.HasKey(utils.MetaStats), rdrCfg.Flags.ParamsSlice(utils.MetaStats), - cgrEv, cgrArgs.ArgDispatcher) + cgrEv, cgrArgs.ArgDispatcher, + rdrCfg.Flags.HasKey(utils.MetaFD)) rply := utils.StringPointer("") err = erS.connMgr.Call(erS.cfg.ERsCfg().SessionSConns, nil, utils.SessionSv1TerminateSession, terminateArgs, rply) @@ -243,7 +247,8 @@ func (erS *ERService) processEvent(cgrEv *utils.CGREvent, rdrCfg *config.EventRe rdrCfg.Flags.HasKey(utils.MetaSuppliers), rdrCfg.Flags.HasKey(utils.MetaSuppliersIgnoreErrors), rdrCfg.Flags.HasKey(utils.MetaSuppliersEventCost), - cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator) + cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, + rdrCfg.Flags.HasKey(utils.MetaFD)) rply := new(sessions.V1ProcessMessageReply) // need it so rpcclient can clone err = erS.connMgr.Call(erS.cfg.ERsCfg().SessionSConns, nil, utils.SessionSv1ProcessMessage, evArgs, rply) diff --git a/sessions/sessions.go b/sessions/sessions.go index d68d5e0f3..d49d1848c 100644 --- a/sessions/sessions.go +++ b/sessions/sessions.go @@ -1010,7 +1010,7 @@ func (sS *SessionS) filterSessionsCount(sf *utils.SessionFilter, psv bool) (coun // forkSession will populate SRuns within a Session based on ChargerS output // forSession can only be called once per Session // not thread-safe since it should be called in init where there is no concurrency -func (sS *SessionS) forkSession(s *Session) (err error) { +func (sS *SessionS) forkSession(s *Session, forceDuration bool) (err error) { if len(sS.cgrCfg.SessionSCfg().ChargerSConns) == 0 { return errors.New("ChargerS is disabled") } @@ -1050,17 +1050,18 @@ func (sS *SessionS) forkSession(s *Session) (err error) { s.SRuns[i] = &SRun{ Event: me, CD: &engine.CallDescriptor{ - CgrID: s.CGRID, - RunID: me.GetStringIgnoreErrors(utils.RunID), - ToR: me.GetStringIgnoreErrors(utils.ToR), - Tenant: s.Tenant, - Category: category, - Subject: subject, - Account: me.GetStringIgnoreErrors(utils.Account), - Destination: me.GetStringIgnoreErrors(utils.Destination), - TimeStart: startTime, - TimeEnd: startTime.Add(s.EventStart.GetDurationIgnoreErrors(utils.Usage)), - ExtraFields: me.AsMapString(utils.MainCDRFields), + CgrID: s.CGRID, + RunID: me.GetStringIgnoreErrors(utils.RunID), + ToR: me.GetStringIgnoreErrors(utils.ToR), + Tenant: s.Tenant, + Category: category, + Subject: subject, + Account: me.GetStringIgnoreErrors(utils.Account), + Destination: me.GetStringIgnoreErrors(utils.Destination), + TimeStart: startTime, + TimeEnd: startTime.Add(s.EventStart.GetDurationIgnoreErrors(utils.Usage)), + ExtraFields: me.AsMapString(utils.MainCDRFields), + ForceDuration: forceDuration, }, } } @@ -1254,7 +1255,7 @@ func (sS *SessionS) initSessionDebitLoops(s *Session) { } // authEvent calculates maximum usage allowed for the given event -func (sS *SessionS) authEvent(tnt string, evStart engine.MapEvent) (maxUsage time.Duration, err error) { +func (sS *SessionS) authEvent(tnt string, evStart engine.MapEvent, forceDuration bool) (maxUsage time.Duration, err error) { cgrID := GetSetCGRID(evStart) var eventUsage time.Duration if eventUsage, err = evStart.GetDuration(utils.Usage); err != nil { @@ -1287,7 +1288,7 @@ func (sS *SessionS) authEvent(tnt string, evStart engine.MapEvent) (maxUsage tim s.ArgDispatcher.RouteID = utils.StringPointer(routeID) } } - if err = sS.forkSession(s); err != nil { + if err = sS.forkSession(s, forceDuration); err != nil { return } var maxUsageSet bool // so we know if we have set the 0 on purpose @@ -1317,7 +1318,7 @@ func (sS *SessionS) authEvent(tnt string, evStart engine.MapEvent) (maxUsage tim // initSession handles a new session // not thread-safe for Session since it is constructed here func (sS *SessionS) initSession(tnt string, evStart engine.MapEvent, clntConnID string, - resID string, dbtItval time.Duration, argDisp *utils.ArgDispatcher, isMsg bool) (s *Session, err error) { + resID string, dbtItval time.Duration, argDisp *utils.ArgDispatcher, isMsg, forceDuration bool) (s *Session, err error) { cgrID := GetSetCGRID(evStart) s = &Session{ CGRID: cgrID, @@ -1331,7 +1332,7 @@ func (sS *SessionS) initSession(tnt string, evStart engine.MapEvent, clntConnID if !isMsg && sS.isIndexed(s, false) { // check if already exists return nil, utils.ErrExists } - if err = sS.forkSession(s); err != nil { + if err = sS.forkSession(s, forceDuration); err != nil { return nil, err } if !isMsg { @@ -1342,7 +1343,7 @@ func (sS *SessionS) initSession(tnt string, evStart engine.MapEvent, clntConnID } // updateSession will reset terminator, perform debits and replicate sessions -func (sS *SessionS) updateSession(s *Session, updtEv engine.MapEvent, isMsg bool) (maxUsage time.Duration, err error) { +func (sS *SessionS) updateSession(s *Session, updtEv engine.MapEvent, isMsg, forceDuration bool) (maxUsage time.Duration, err error) { if !isMsg { defer sS.replicateSessions(s.CGRID, false, sS.cgrCfg.SessionSCfg().ReplicationConns) s.Lock() @@ -1478,13 +1479,13 @@ func (sS *SessionS) endSession(s *Session, tUsage, lastUsage *time.Duration, // chargeEvent will charge a single event (ie: SMS) func (sS *SessionS) chargeEvent(tnt string, ev engine.MapEvent, - argDisp *utils.ArgDispatcher) (maxUsage time.Duration, err error) { + argDisp *utils.ArgDispatcher, forceDuration bool) (maxUsage time.Duration, err error) { cgrID := GetSetCGRID(ev) var s *Session - if s, err = sS.initSession(tnt, ev, "", "", 0, argDisp, true); err != nil { + if s, err = sS.initSession(tnt, ev, "", "", 0, argDisp, true, forceDuration); err != nil { return } - if maxUsage, err = sS.updateSession(s, nil, true); err != nil { + if maxUsage, err = sS.updateSession(s, nil, true, forceDuration); err != nil { if errEnd := sS.terminateSession(s, utils.DurationPointer(time.Duration(0)), nil, nil, true); errEnd != nil { utils.Logger.Warning( @@ -1648,7 +1649,7 @@ func NewV1AuthorizeArgs(attrs bool, attributeIDs []string, thrslds bool, thresholdIDs []string, statQueues bool, statIDs []string, res, maxUsage, suppls, supplsIgnoreErrs, supplsEventCost bool, cgrEv *utils.CGREvent, argDisp *utils.ArgDispatcher, - supplierPaginator utils.Paginator) (args *V1AuthorizeArgs) { + supplierPaginator utils.Paginator, forceDuration bool) (args *V1AuthorizeArgs) { args = &V1AuthorizeArgs{ GetAttributes: attrs, AuthorizeResources: res, @@ -1658,6 +1659,7 @@ func NewV1AuthorizeArgs(attrs bool, attributeIDs []string, SuppliersIgnoreErrors: supplsIgnoreErrs, GetSuppliers: suppls, CGREvent: cgrEv, + ForceDuration: forceDuration, } if supplsEventCost { args.SuppliersMaxCost = utils.MetaSuppliersEventCost @@ -1685,6 +1687,7 @@ type V1AuthorizeArgs struct { ProcessThresholds bool ProcessStats bool GetSuppliers bool + ForceDuration bool SuppliersMaxCost string SuppliersIgnoreErrors bool AttributeIDs []string @@ -1721,6 +1724,8 @@ func (args *V1AuthorizeArgs) ParseFlags(flags string) { case strings.HasPrefix(subsystem, utils.MetaStats): args.ProcessStats = true args.StatIDs = getFlagIDs(subsystem) + case subsystem == utils.MetaFD: + args.ForceDuration = true } } cgrArgs := args.CGREvent.ExtractArgs(dispatcherFlag, true) @@ -1830,7 +1835,7 @@ func (sS *SessionS) BiRPCv1AuthorizeEvent(clnt rpcclient.ClientConnector, } if args.GetMaxUsage { if authReply.MaxUsage, err = sS.authEvent(args.CGREvent.Tenant, - args.CGREvent.Event); err != nil { + args.CGREvent.Event, args.ForceDuration); err != nil { return err } } @@ -1939,7 +1944,7 @@ func (sS *SessionS) BiRPCv1AuthorizeEventWithDigest(clnt rpcclient.ClientConnect func NewV1InitSessionArgs(attrs bool, attributeIDs []string, thrslds bool, thresholdIDs []string, stats bool, statIDs []string, resrc, acnt bool, cgrEv *utils.CGREvent, - argDisp *utils.ArgDispatcher) (args *V1InitSessionArgs) { + argDisp *utils.ArgDispatcher, forceDuration bool) (args *V1InitSessionArgs) { args = &V1InitSessionArgs{ GetAttributes: attrs, AllocateResources: resrc, @@ -1948,6 +1953,7 @@ func NewV1InitSessionArgs(attrs bool, attributeIDs []string, ProcessStats: stats, CGREvent: cgrEv, ArgDispatcher: argDisp, + ForceDuration: forceDuration, } if len(attributeIDs) != 0 { args.AttributeIDs = attributeIDs @@ -1966,6 +1972,7 @@ type V1InitSessionArgs struct { GetAttributes bool AllocateResources bool InitSession bool + ForceDuration bool ProcessThresholds bool ProcessStats bool AttributeIDs []string @@ -1995,6 +2002,8 @@ func (args *V1InitSessionArgs) ParseFlags(flags string) { case strings.HasPrefix(subsystem, utils.MetaStats): args.ProcessStats = true args.StatIDs = getFlagIDs(subsystem) + case subsystem == utils.MetaFD: + args.ForceDuration = true } } cgrArgs := args.CGREvent.ExtractArgs(dispatcherFlag, false) @@ -2128,7 +2137,7 @@ func (sS *SessionS) BiRPCv1InitiateSession(clnt rpcclient.ClientConnector, } } s, err := sS.initSession(args.CGREvent.Tenant, ev, - sS.biJClntID(clnt), originID, dbtItvl, args.ArgDispatcher, false) + sS.biJClntID(clnt), originID, dbtItvl, args.ArgDispatcher, false, args.ForceDuration) if err != nil { return err } @@ -2136,7 +2145,7 @@ func (sS *SessionS) BiRPCv1InitiateSession(clnt rpcclient.ClientConnector, rply.MaxUsage = sS.cgrCfg.SessionSCfg().MaxCallDuration } else { var maxUsage time.Duration - if maxUsage, err = sS.updateSession(s, nil, false); err != nil { + if maxUsage, err = sS.updateSession(s, nil, false, args.ForceDuration); err != nil { return utils.NewErrRALs(err) } rply.MaxUsage = maxUsage @@ -2215,12 +2224,13 @@ func (sS *SessionS) BiRPCv1InitiateSessionWithDigest(clnt rpcclient.ClientConnec // NewV1UpdateSessionArgs is a constructor for update session arguments func NewV1UpdateSessionArgs(attrs bool, attributeIDs []string, acnts bool, cgrEv *utils.CGREvent, - argDisp *utils.ArgDispatcher) (args *V1UpdateSessionArgs) { + argDisp *utils.ArgDispatcher, forceDuration bool) (args *V1UpdateSessionArgs) { args = &V1UpdateSessionArgs{ GetAttributes: attrs, UpdateSession: acnts, CGREvent: cgrEv, ArgDispatcher: argDisp, + ForceDuration: forceDuration, } if len(attributeIDs) != 0 { args.AttributeIDs = attributeIDs @@ -2232,6 +2242,7 @@ func NewV1UpdateSessionArgs(attrs bool, attributeIDs []string, type V1UpdateSessionArgs struct { GetAttributes bool UpdateSession bool + ForceDuration bool AttributeIDs []string *utils.CGREvent *utils.ArgDispatcher @@ -2337,11 +2348,11 @@ func (sS *SessionS) BiRPCv1UpdateSession(clnt rpcclient.ClientConnector, if s, err = sS.initSession(args.CGREvent.Tenant, ev, sS.biJClntID(clnt), ev.GetStringIgnoreErrors(utils.OriginID), - dbtItvl, args.ArgDispatcher, false); err != nil { + dbtItvl, args.ArgDispatcher, false, args.ForceDuration); err != nil { return err } } - if rply.MaxUsage, err = sS.updateSession(s, ev.Clone(), false); err != nil { + if rply.MaxUsage, err = sS.updateSession(s, ev.Clone(), false, args.ForceDuration); err != nil { return utils.NewErrRALs(err) } } @@ -2352,7 +2363,7 @@ func (sS *SessionS) BiRPCv1UpdateSession(clnt rpcclient.ClientConnector, func NewV1TerminateSessionArgs(acnts, resrc, thrds bool, thresholdIDs []string, stats bool, statIDs []string, cgrEv *utils.CGREvent, - argDisp *utils.ArgDispatcher) (args *V1TerminateSessionArgs) { + argDisp *utils.ArgDispatcher, forceDuration bool) (args *V1TerminateSessionArgs) { args = &V1TerminateSessionArgs{ TerminateSession: acnts, ReleaseResources: resrc, @@ -2360,6 +2371,7 @@ func NewV1TerminateSessionArgs(acnts, resrc, ProcessStats: stats, CGREvent: cgrEv, ArgDispatcher: argDisp, + ForceDuration: forceDuration, } if len(thresholdIDs) != 0 { args.ThresholdIDs = thresholdIDs @@ -2373,6 +2385,7 @@ func NewV1TerminateSessionArgs(acnts, resrc, // V1TerminateSessionArgs is used as argumen for TerminateSession type V1TerminateSessionArgs struct { TerminateSession bool + ForceDuration bool ReleaseResources bool ProcessThresholds bool ProcessStats bool @@ -2399,6 +2412,8 @@ func (args *V1TerminateSessionArgs) ParseFlags(flags string) { case strings.Index(subsystem, utils.MetaStats) != -1: args.ProcessStats = true args.StatIDs = getFlagIDs(subsystem) + case subsystem == utils.MetaFD: + args.ForceDuration = true } } cgrArgs := args.CGREvent.ExtractArgs(dispatcherFlag, false) @@ -2470,7 +2485,7 @@ func (sS *SessionS) BiRPCv1TerminateSession(clnt rpcclient.ClientConnector, if s, err = sS.initSession(args.CGREvent.Tenant, ev, sS.biJClntID(clnt), ev.GetStringIgnoreErrors(utils.OriginID), dbtItvl, - args.ArgDispatcher, false); err != nil { + args.ArgDispatcher, false, args.ForceDuration); err != nil { return err } @@ -2621,7 +2636,7 @@ func NewV1ProcessMessageArgs(attrs bool, attributeIDs []string, thds bool, thresholdIDs []string, stats bool, statIDs []string, resrc, acnts, suppls, supplsIgnoreErrs, supplsEventCost bool, cgrEv *utils.CGREvent, argDisp *utils.ArgDispatcher, - supplierPaginator utils.Paginator) (args *V1ProcessMessageArgs) { + supplierPaginator utils.Paginator, forceDuration bool) (args *V1ProcessMessageArgs) { args = &V1ProcessMessageArgs{ AllocateResources: resrc, Debit: acnts, @@ -2632,6 +2647,7 @@ func NewV1ProcessMessageArgs(attrs bool, attributeIDs []string, GetSuppliers: suppls, CGREvent: cgrEv, ArgDispatcher: argDisp, + ForceDuration: forceDuration, } if supplsEventCost { args.SuppliersMaxCost = utils.MetaSuppliersEventCost @@ -2654,6 +2670,7 @@ type V1ProcessMessageArgs struct { GetAttributes bool AllocateResources bool Debit bool + ForceDuration bool ProcessThresholds bool ProcessStats bool GetSuppliers bool @@ -2693,6 +2710,8 @@ func (args *V1ProcessMessageArgs) ParseFlags(flags string) { case strings.Index(subsystem, utils.MetaStats) != -1: args.ProcessStats = true args.StatIDs = getFlagIDs(subsystem) + case subsystem == utils.MetaFD: + args.ForceDuration = true } } cgrArgs := args.CGREvent.ExtractArgs(dispatcherFlag, true) @@ -2833,7 +2852,7 @@ func (sS *SessionS) BiRPCv1ProcessMessage(clnt rpcclient.ClientConnector, if args.Debit { var maxUsage time.Duration if maxUsage, err = sS.chargeEvent(args.CGREvent.Tenant, - engine.MapEvent(args.CGREvent.Event), args.ArgDispatcher); err != nil { + engine.MapEvent(args.CGREvent.Event), args.ArgDispatcher, args.ForceDuration); err != nil { return err } rply.MaxUsage = maxUsage @@ -3038,7 +3057,7 @@ func (sS *SessionS) BiRPCv1ProcessEvent(clnt rpcclient.ClientConnector, //check for auth session case ralsFlagsWithParams.HasKey(utils.MetaAuthorize): maxUsage, err := sS.authEvent(args.CGREvent.Tenant, - engine.MapEvent(args.CGREvent.Event)) + engine.MapEvent(args.CGREvent.Event), ralsFlagsWithParams.HasKey(utils.MetaFD)) if err != nil { return err } @@ -3051,7 +3070,7 @@ func (sS *SessionS) BiRPCv1ProcessEvent(clnt rpcclient.ClientConnector, } } s, err := sS.initSession(args.CGREvent.Tenant, ev, - sS.biJClntID(clnt), originID, dbtItvl, args.ArgDispatcher, false) + sS.biJClntID(clnt), originID, dbtItvl, args.ArgDispatcher, false, ralsFlagsWithParams.HasKey(utils.MetaFD)) if err != nil { return err } @@ -3059,7 +3078,7 @@ func (sS *SessionS) BiRPCv1ProcessEvent(clnt rpcclient.ClientConnector, rply.MaxUsage = sS.cgrCfg.SessionSCfg().MaxCallDuration } else { var maxUsage time.Duration - if maxUsage, err = sS.updateSession(s, nil, false); err != nil { + if maxUsage, err = sS.updateSession(s, nil, false, ralsFlagsWithParams.HasKey(utils.MetaFD)); err != nil { return utils.NewErrRALs(err) } rply.MaxUsage = maxUsage @@ -3080,12 +3099,13 @@ func (sS *SessionS) BiRPCv1ProcessEvent(clnt rpcclient.ClientConnector, if s == nil { if s, err = sS.initSession(args.CGREvent.Tenant, ev, sS.biJClntID(clnt), - ev.GetStringIgnoreErrors(utils.OriginID), dbtItvl, args.ArgDispatcher, false); err != nil { + ev.GetStringIgnoreErrors(utils.OriginID), dbtItvl, args.ArgDispatcher, + false, ralsFlagsWithParams.HasKey(utils.MetaFD)); err != nil { return err } } var maxUsage time.Duration - if maxUsage, err = sS.updateSession(s, ev, false); err != nil { + if maxUsage, err = sS.updateSession(s, ev, false, ralsFlagsWithParams.HasKey(utils.MetaFD)); err != nil { return utils.NewErrRALs(err) } rply.MaxUsage = maxUsage @@ -3105,7 +3125,7 @@ func (sS *SessionS) BiRPCv1ProcessEvent(clnt rpcclient.ClientConnector, if s, err = sS.initSession(args.CGREvent.Tenant, ev, sS.biJClntID(clnt), ev.GetStringIgnoreErrors(utils.OriginID), dbtItvl, - args.ArgDispatcher, false); err != nil { + args.ArgDispatcher, false, ralsFlagsWithParams.HasKey(utils.MetaFD)); err != nil { return err } } diff --git a/sessions/sessions_test.go b/sessions/sessions_test.go index 82766a8d7..60eaf76b6 100644 --- a/sessions/sessions_test.go +++ b/sessions/sessions_test.go @@ -827,7 +827,7 @@ func TestSessionSNewV1AuthorizeArgs(t *testing.T) { GetAttributes: true, CGREvent: cgrEv, } - rply := NewV1AuthorizeArgs(true, nil, false, nil, false, nil, true, false, false, false, false, cgrEv, nil, utils.Paginator{}) + rply := NewV1AuthorizeArgs(true, nil, false, nil, false, nil, true, false, false, false, false, cgrEv, nil, utils.Paginator{}, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", expected, rply) } @@ -841,8 +841,9 @@ func TestSessionSNewV1AuthorizeArgs(t *testing.T) { SuppliersIgnoreErrors: true, SuppliersMaxCost: utils.MetaSuppliersEventCost, CGREvent: cgrEv, + ForceDuration: true, } - rply = NewV1AuthorizeArgs(true, nil, false, nil, true, nil, false, true, false, true, true, cgrEv, nil, utils.Paginator{}) + rply = NewV1AuthorizeArgs(true, nil, false, nil, true, nil, false, true, false, true, true, cgrEv, nil, utils.Paginator{}, true) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v,\n received: %+v", expected, rply) } @@ -864,7 +865,8 @@ func TestSessionSNewV1AuthorizeArgs(t *testing.T) { ThresholdIDs: []string{"ID1", "ID2"}, StatIDs: []string{"test3", "test4"}, } - rply = NewV1AuthorizeArgs(true, attributeIDs, false, thresholdIDs, true, statIDs, false, true, false, true, true, cgrEv, nil, utils.Paginator{}) + rply = NewV1AuthorizeArgs(true, attributeIDs, false, thresholdIDs, true, statIDs, + false, true, false, true, true, cgrEv, nil, utils.Paginator{}, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v,\n received: %+v", expected, rply) } @@ -918,9 +920,10 @@ func TestV1AuthorizeArgsParseFlags(t *testing.T) { StatIDs: []string{"st1", "st2", "st3"}, ArgDispatcher: cgrArgs.ArgDispatcher, Paginator: *cgrArgs.SupplierPaginator, + ForceDuration: true, } - strArg = "*accounts,*resources,,*dispatchers,*suppliers,*suppliers_ignore_errors,*suppliers_event_cost,*attributes:Attr1;Attr2,*thresholds:tr1;tr2;tr3,*stats:st1;st2;st3" + strArg = "*accounts,*fd,*resources,,*dispatchers,*suppliers,*suppliers_ignore_errors,*suppliers_event_cost,*attributes:Attr1;Attr2,*thresholds:tr1;tr2;tr3,*stats:st1;st2;st3" v1authArgs.ParseFlags(strArg) if !reflect.DeepEqual(eOut, v1authArgs) { t.Errorf("Expecting %+v,\n received: %+v\n", utils.ToJSON(eOut), utils.ToJSON(v1authArgs)) @@ -940,8 +943,9 @@ func TestSessionSNewV1UpdateSessionArgs(t *testing.T) { GetAttributes: true, UpdateSession: true, CGREvent: cgrEv, + ForceDuration: true, } - rply := NewV1UpdateSessionArgs(true, nil, true, cgrEv, nil) + rply := NewV1UpdateSessionArgs(true, nil, true, cgrEv, nil, true) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", expected, rply) } @@ -949,14 +953,15 @@ func TestSessionSNewV1UpdateSessionArgs(t *testing.T) { GetAttributes: false, UpdateSession: true, CGREvent: cgrEv, + ForceDuration: false, } - rply = NewV1UpdateSessionArgs(false, nil, true, cgrEv, nil) + rply = NewV1UpdateSessionArgs(false, nil, true, cgrEv, nil, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", expected, rply) } //test with len(AttributeIDs) != 0 attributeIDs := []string{"ATTR1", "ATTR2"} - rply = NewV1UpdateSessionArgs(false, attributeIDs, true, cgrEv, nil) + rply = NewV1UpdateSessionArgs(false, attributeIDs, true, cgrEv, nil, false) expected.AttributeIDs = []string{"ATTR1", "ATTR2"} if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", expected, rply) @@ -977,14 +982,14 @@ func TestSessionSNewV1TerminateSessionArgs(t *testing.T) { ProcessThresholds: true, CGREvent: cgrEv, } - rply := NewV1TerminateSessionArgs(true, false, true, nil, false, nil, cgrEv, nil) + rply := NewV1TerminateSessionArgs(true, false, true, nil, false, nil, cgrEv, nil, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", expected, rply) } expected = &V1TerminateSessionArgs{ CGREvent: cgrEv, } - rply = NewV1TerminateSessionArgs(false, false, false, nil, false, nil, cgrEv, nil) + rply = NewV1TerminateSessionArgs(false, false, false, nil, false, nil, cgrEv, nil, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", expected, rply) } @@ -996,7 +1001,8 @@ func TestSessionSNewV1TerminateSessionArgs(t *testing.T) { ThresholdIDs: []string{"ID1", "ID2"}, StatIDs: []string{"test1", "test2"}, } - rply = NewV1TerminateSessionArgs(false, false, false, thresholdIDs, false, statIDs, cgrEv, nil) + rply = NewV1TerminateSessionArgs(false, false, false, + thresholdIDs, false, statIDs, cgrEv, nil, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", expected, rply) } @@ -1019,7 +1025,8 @@ func TestSessionSNewV1ProcessMessageArgs(t *testing.T) { CGREvent: cgrEv, GetSuppliers: true, } - rply := NewV1ProcessMessageArgs(true, nil, false, nil, false, nil, true, true, true, false, false, cgrEv, nil, utils.Paginator{}) + rply := NewV1ProcessMessageArgs(true, nil, false, nil, false, nil, + true, true, true, false, false, cgrEv, nil, utils.Paginator{}, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", expected, rply) } @@ -1031,7 +1038,8 @@ func TestSessionSNewV1ProcessMessageArgs(t *testing.T) { SuppliersMaxCost: utils.MetaSuppliersEventCost, SuppliersIgnoreErrors: true, } - rply = NewV1ProcessMessageArgs(true, nil, false, nil, false, nil, true, false, true, true, true, cgrEv, nil, utils.Paginator{}) + rply = NewV1ProcessMessageArgs(true, nil, false, nil, false, nil, true, + false, true, true, true, cgrEv, nil, utils.Paginator{}, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", expected, rply) } @@ -1051,7 +1059,8 @@ func TestSessionSNewV1ProcessMessageArgs(t *testing.T) { ThresholdIDs: []string{"ID1", "ID2"}, StatIDs: []string{"test3", "test4"}, } - rply = NewV1ProcessMessageArgs(true, attributeIDs, false, thresholdIDs, false, statIDs, true, false, true, true, true, cgrEv, nil, utils.Paginator{}) + rply = NewV1ProcessMessageArgs(true, attributeIDs, false, thresholdIDs, false, statIDs, true, + false, true, true, true, cgrEv, nil, utils.Paginator{}, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", expected, rply) } @@ -1082,7 +1091,8 @@ func TestSessionSNewV1InitSessionArgs(t *testing.T) { StatIDs: []string{"test3", "test4"}, CGREvent: cgrEv, } - rply := NewV1InitSessionArgs(true, attributeIDs, true, thresholdIDs, true, statIDs, true, true, cgrEv, nil) + rply := NewV1InitSessionArgs(true, attributeIDs, true, thresholdIDs, + true, statIDs, true, true, cgrEv, nil, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", expected, rply) } @@ -1104,7 +1114,8 @@ func TestSessionSNewV1InitSessionArgs(t *testing.T) { ProcessStats: true, CGREvent: cgrEv, } - rply = NewV1InitSessionArgs(true, nil, true, nil, true, nil, true, true, cgrEv, nil) + rply = NewV1InitSessionArgs(true, nil, true, nil, + true, nil, true, true, cgrEv, nil, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", expected, rply) } @@ -1116,7 +1127,8 @@ func TestSessionSNewV1InitSessionArgs(t *testing.T) { ProcessStats: true, CGREvent: cgrEv, } - rply = NewV1InitSessionArgs(true, nil, false, nil, true, nil, false, true, cgrEv, nil) + rply = NewV1InitSessionArgs(true, nil, false, nil, true, + nil, false, true, cgrEv, nil, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", expected, rply) } @@ -1489,7 +1501,8 @@ func TestSessionSNewV1AuthorizeArgsWithArgDispatcher(t *testing.T) { }, } cgrArgs := cgrEv.ExtractArgs(true, true) - rply := NewV1AuthorizeArgs(true, nil, false, nil, false, nil, true, false, false, false, false, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator) + rply := NewV1AuthorizeArgs(true, nil, false, nil, false, nil, true, false, false, false, + false, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", utils.ToJSON(expected), utils.ToJSON(rply)) } @@ -1508,7 +1521,8 @@ func TestSessionSNewV1AuthorizeArgsWithArgDispatcher(t *testing.T) { RouteID: utils.StringPointer("testrouteid"), }, } - rply = NewV1AuthorizeArgs(true, nil, false, nil, true, nil, false, true, false, true, true, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator) + rply = NewV1AuthorizeArgs(true, nil, false, nil, true, nil, false, + true, false, true, true, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", utils.ToJSON(expected), utils.ToJSON(rply)) } @@ -1533,7 +1547,8 @@ func TestSessionSNewV1AuthorizeArgsWithArgDispatcher2(t *testing.T) { }, } cgrArgs := cgrEv.ExtractArgs(true, true) - rply := NewV1AuthorizeArgs(true, nil, false, nil, false, nil, true, false, false, false, false, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator) + rply := NewV1AuthorizeArgs(true, nil, false, nil, false, nil, true, false, + false, false, false, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", utils.ToJSON(expected), utils.ToJSON(rply)) } @@ -1551,7 +1566,8 @@ func TestSessionSNewV1AuthorizeArgsWithArgDispatcher2(t *testing.T) { RouteID: utils.StringPointer("testrouteid"), }, } - rply = NewV1AuthorizeArgs(true, nil, false, nil, true, nil, false, true, false, true, true, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator) + rply = NewV1AuthorizeArgs(true, nil, false, nil, true, nil, false, + true, false, true, true, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, false) if !reflect.DeepEqual(expected, rply) { t.Errorf("Expecting %+v, received: %+v", utils.ToJSON(expected), utils.ToJSON(rply)) } diff --git a/utils/consts.go b/utils/consts.go index c6242ba35..67f0945fc 100755 --- a/utils/consts.go +++ b/utils/consts.go @@ -553,6 +553,7 @@ const ( MetaTrl = "*trl" CGROriginHost = "cgr_originhost" MetaInitiate = "*initiate" + MetaFD = "*fd" MetaUpdate = "*update" MetaTerminate = "*terminate" MetaEvent = "*event" @@ -1127,8 +1128,8 @@ const ( APIerSv1ReloadCdreConfig = "APIerSv1.ReloadCdreConfig" APIerSv1GetLoadHistory = "APIerSv1.GetLoadHistory" APIerSv1GetLoadIDs = "APIerSv1.GetLoadIDs" - APIerSv1GetLoadTimes = "APIerSv1.GetLoadTimes" APIerSv1ExecuteScheduledActions = "APIerSv1.ExecuteScheduledActions" + APIerSv1GetLoadTimes = "APIerSv1.GetLoadTimes" APIerSv1GetSharedGroup = "APIerSv1.GetSharedGroup" APIerSv1RemoveActionTrigger = "APIerSv1.RemoveActionTrigger" APIerSv1GetAccount = "APIerSv1.GetAccount"