Updated methods and tests for chargers.go with default tenant value

This commit is contained in:
porosnicuadrian
2020-10-12 16:32:41 +03:00
committed by Dan Christian Bogos
parent 583e9dbd67
commit a502ca013d
4 changed files with 125 additions and 22 deletions

View File

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

View File

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