mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-25 00:58:45 +05:00
Updated methods and tests for chargers.go with default tenant value
This commit is contained in:
committed by
Dan Christian Bogos
parent
583e9dbd67
commit
a502ca013d
@@ -56,7 +56,7 @@ func (cS *ChargerService) Shutdown() (err error) {
|
||||
}
|
||||
|
||||
// matchingChargingProfilesForEvent returns ordered list of matching chargers which are active by the time of the function call
|
||||
func (cS *ChargerService) matchingChargerProfilesForEvent(cgrEv *utils.CGREventWithOpts) (cPs ChargerProfiles, err error) {
|
||||
func (cS *ChargerService) matchingChargerProfilesForEvent(tnt string, cgrEv *utils.CGREventWithOpts) (cPs ChargerProfiles, err error) {
|
||||
evNm := utils.MapStorage{
|
||||
utils.MetaReq: cgrEv.Event,
|
||||
utils.MetaOpts: cgrEv.Opts,
|
||||
@@ -65,7 +65,7 @@ func (cS *ChargerService) matchingChargerProfilesForEvent(cgrEv *utils.CGREventW
|
||||
cS.cfg.ChargerSCfg().StringIndexedFields,
|
||||
cS.cfg.ChargerSCfg().PrefixIndexedFields,
|
||||
cS.cfg.ChargerSCfg().SuffixIndexedFields,
|
||||
cS.dm, utils.CacheChargerFilterIndexes, cgrEv.Tenant,
|
||||
cS.dm, utils.CacheChargerFilterIndexes, tnt,
|
||||
cS.cfg.ChargerSCfg().IndexedSelects,
|
||||
cS.cfg.ChargerSCfg().NestedFields,
|
||||
)
|
||||
@@ -74,7 +74,7 @@ func (cS *ChargerService) matchingChargerProfilesForEvent(cgrEv *utils.CGREventW
|
||||
}
|
||||
matchingCPs := make(map[string]*ChargerProfile)
|
||||
for cpID := range cpIDs {
|
||||
cP, err := cS.dm.GetChargerProfile(cgrEv.Tenant, cpID, true, true, utils.NonTransactional)
|
||||
cP, err := cS.dm.GetChargerProfile(tnt, cpID, true, true, utils.NonTransactional)
|
||||
if err != nil {
|
||||
if err == utils.ErrNotFound {
|
||||
continue
|
||||
@@ -85,7 +85,7 @@ func (cS *ChargerService) matchingChargerProfilesForEvent(cgrEv *utils.CGREventW
|
||||
!cP.ActivationInterval.IsActiveAtTime(*cgrEv.Time) { // not active
|
||||
continue
|
||||
}
|
||||
if pass, err := cS.filterS.Pass(cgrEv.Tenant, cP.FilterIDs,
|
||||
if pass, err := cS.filterS.Pass(tnt, cP.FilterIDs,
|
||||
evNm); err != nil {
|
||||
return nil, err
|
||||
} else if !pass {
|
||||
@@ -115,7 +115,7 @@ type ChrgSProcessEventReply struct {
|
||||
Opts map[string]interface{}
|
||||
}
|
||||
|
||||
func (cS *ChargerService) processEvent(cgrEv *utils.CGREventWithOpts) (rply []*ChrgSProcessEventReply, err error) {
|
||||
func (cS *ChargerService) processEvent(tnt string, cgrEv *utils.CGREventWithOpts) (rply []*ChrgSProcessEventReply, err error) {
|
||||
var cPs ChargerProfiles
|
||||
cgrEv.Opts = MapEvent(cgrEv.Opts).Clone()
|
||||
if cgrEv.Opts == nil {
|
||||
@@ -128,19 +128,19 @@ func (cS *ChargerService) processEvent(cgrEv *utils.CGREventWithOpts) (rply []*C
|
||||
processRuns = utils.IntPointer(int(v))
|
||||
}
|
||||
}
|
||||
if cPs, err = cS.matchingChargerProfilesForEvent(cgrEv); err != nil {
|
||||
if cPs, err = cS.matchingChargerProfilesForEvent(tnt, cgrEv); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
rply = make([]*ChrgSProcessEventReply, len(cPs))
|
||||
for i, cP := range cPs {
|
||||
clonedEv := cgrEv.Clone()
|
||||
opts := MapEvent(cgrEv.Opts).Clone()
|
||||
clonedEv.Tenant = tnt
|
||||
clonedEv.Event[utils.RunID] = cP.RunID
|
||||
rply[i] = &ChrgSProcessEventReply{
|
||||
ChargerSProfile: cP.ID,
|
||||
CGREvent: clonedEv.CGREvent,
|
||||
AlteredFields: []string{utils.MetaReqRunID},
|
||||
Opts: opts,
|
||||
Opts: clonedEv.Opts,
|
||||
}
|
||||
if len(cP.AttributeIDs) == 1 && cP.AttributeIDs[0] == utils.META_NONE {
|
||||
continue // AttributeS disabled
|
||||
@@ -149,12 +149,12 @@ func (cS *ChargerService) processEvent(cgrEv *utils.CGREventWithOpts) (rply []*C
|
||||
args := &AttrArgsProcessEvent{
|
||||
AttributeIDs: cP.AttributeIDs,
|
||||
Context: utils.StringPointer(utils.FirstNonEmpty(
|
||||
utils.IfaceAsString(opts[utils.OptsContext]),
|
||||
utils.IfaceAsString(clonedEv.Opts[utils.OptsContext]),
|
||||
utils.MetaChargers)),
|
||||
ProcessRuns: processRuns,
|
||||
CGREventWithOpts: &utils.CGREventWithOpts{
|
||||
CGREvent: clonedEv.CGREvent,
|
||||
Opts: opts,
|
||||
Opts: clonedEv.Opts,
|
||||
},
|
||||
}
|
||||
var evReply AttrSProcessEventReply
|
||||
@@ -182,7 +182,11 @@ func (cS *ChargerService) V1ProcessEvent(args *utils.CGREventWithOpts,
|
||||
args.Event == nil {
|
||||
return utils.NewErrMandatoryIeMissing("Event")
|
||||
}
|
||||
rply, err := cS.processEvent(args)
|
||||
tnt := args.Tenant
|
||||
if tnt == utils.EmptyString {
|
||||
tnt = cS.cfg.GeneralCfg().DefaultTenant
|
||||
}
|
||||
rply, err := cS.processEvent(tnt, args)
|
||||
if err != nil {
|
||||
if err != utils.ErrNotFound {
|
||||
err = utils.NewErrServerError(err)
|
||||
@@ -196,7 +200,11 @@ func (cS *ChargerService) V1ProcessEvent(args *utils.CGREventWithOpts,
|
||||
// V1GetChargersForEvent exposes the list of ordered matching ChargingProfiles for an event
|
||||
func (cS *ChargerService) V1GetChargersForEvent(args *utils.CGREventWithOpts,
|
||||
rply *ChargerProfiles) (err error) {
|
||||
cPs, err := cS.matchingChargerProfilesForEvent(args)
|
||||
tnt := args.Tenant
|
||||
if tnt == utils.EmptyString {
|
||||
tnt = cS.cfg.GeneralCfg().DefaultTenant
|
||||
}
|
||||
cPs, err := cS.matchingChargerProfilesForEvent(tnt, args)
|
||||
if err != nil {
|
||||
if err != utils.ErrNotFound {
|
||||
err = utils.NewErrServerError(err)
|
||||
|
||||
@@ -191,18 +191,18 @@ func TestChargerSetChargerProfiles(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestChargerMatchingChargerProfilesForEvent(t *testing.T) {
|
||||
if _, err = chargerSrv.matchingChargerProfilesForEvent(chargerEvents[2]); err == nil ||
|
||||
if _, err = chargerSrv.matchingChargerProfilesForEvent(chargerEvents[2].Tenant, chargerEvents[2]); err == nil ||
|
||||
err.Error() != utils.ErrNotFound.Error() {
|
||||
t.Errorf("Error: %+v", err)
|
||||
}
|
||||
|
||||
if rcv, err := chargerSrv.matchingChargerProfilesForEvent(chargerEvents[0]); err != nil {
|
||||
if rcv, err := chargerSrv.matchingChargerProfilesForEvent(chargerEvents[0].Tenant, chargerEvents[0]); err != nil {
|
||||
t.Errorf("Error: %+v", err)
|
||||
} else if !reflect.DeepEqual(cPPs[0], rcv[0]) {
|
||||
t.Errorf("Expecting: %+v, received: %+v ", cPPs[0], rcv[0])
|
||||
}
|
||||
|
||||
if rcv, err := chargerSrv.matchingChargerProfilesForEvent(chargerEvents[1]); err != nil {
|
||||
if rcv, err := chargerSrv.matchingChargerProfilesForEvent(chargerEvents[1].Tenant, chargerEvents[1]); err != nil {
|
||||
t.Errorf("Error: %+v", err)
|
||||
} else if !reflect.DeepEqual(cPPs[1], rcv[0]) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(cPPs[1]), utils.ToJSON(rcv))
|
||||
@@ -220,7 +220,7 @@ func TestChargerProcessEvent(t *testing.T) {
|
||||
},
|
||||
}
|
||||
rpl[0].CGREvent.Event[utils.RunID] = cPPs[0].RunID
|
||||
rcv, err := chargerSrv.processEvent(&utils.CGREventWithOpts{
|
||||
rcv, err := chargerSrv.processEvent(rpl[0].CGREvent.Tenant, &utils.CGREventWithOpts{
|
||||
CGREvent: chargerEvents[0].CGREvent,
|
||||
Opts: chargerEvents[0].Opts,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user