From 1525797b0823ea2c04131273abb1208a0b866a57 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 1 Mar 2019 16:34:52 +0200 Subject: [PATCH] Updated filter_indexes integration tests for dispatcher profile filter indexes --- apier/v1/filter_indexes.go | 113 +++++++------ apier/v1/filter_indexes_it_test.go | 246 +++++++++++++++-------------- 2 files changed, 198 insertions(+), 161 deletions(-) diff --git a/apier/v1/filter_indexes.go b/apier/v1/filter_indexes.go index 623912a9c..89000a589 100644 --- a/apier/v1/filter_indexes.go +++ b/apier/v1/filter_indexes.go @@ -59,7 +59,11 @@ func (self *ApierV1) RemoveFilterIndexes(arg AttrRemFilterIndexes, reply *string case utils.MetaChargers: arg.ItemType = utils.ChargerProfilePrefix case utils.MetaDispatchers: + if missing := utils.MissingStructFields(&arg, []string{"Context"}); len(missing) != 0 { //Params missing + return utils.NewErrMandatoryIeMissing(missing...) + } arg.ItemType = utils.DispatcherProfilePrefix + key = utils.ConcatenatedKey(arg.Tenant, arg.Context) case utils.MetaAttributes: if missing := utils.MissingStructFields(&arg, []string{"Context"}); len(missing) != 0 { //Params missing return utils.NewErrMandatoryIeMissing(missing...) @@ -94,7 +98,11 @@ func (self *ApierV1) GetFilterIndexes(arg AttrGetFilterIndexes, reply *[]string) case utils.MetaChargers: arg.ItemType = utils.ChargerProfilePrefix case utils.MetaDispatchers: + if missing := utils.MissingStructFields(&arg, []string{"Context"}); len(missing) != 0 { //Params missing + return utils.NewErrMandatoryIeMissing(missing...) + } arg.ItemType = utils.DispatcherProfilePrefix + key = utils.ConcatenatedKey(arg.Tenant, arg.Context) case utils.MetaAttributes: if missing := utils.MissingStructFields(&arg, []string{"Context"}); len(missing) != 0 { //Params missing return utils.NewErrMandatoryIeMissing(missing...) @@ -224,7 +232,7 @@ func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, r if err != nil && err != utils.ErrNotFound { return utils.APIErrorHandler(err) } - dspIndexes, err := self.computeDispatcherIndexes(args.Tenant, args.DispatcherIDs, transactionID) + dspIndexes, err := self.computeDispatcherIndexes(args.Tenant, args.Context, args.DispatcherIDs, transactionID) if err != nil && err != utils.ErrNotFound { return utils.APIErrorHandler(err) } @@ -250,13 +258,15 @@ func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, r //StatQueueProfile Indexes if sqpIndexers != nil { if err := sqpIndexers.StoreIndexes(true, transactionID); err != nil { - for _, id := range *args.StatIDs { - sqp, err := self.DataManager.GetStatQueueProfile(args.Tenant, id, true, false, utils.NonTransactional) - if err != nil { - return err - } - if err := sqpIndexers.RemoveItemFromIndex(args.Tenant, id, sqp.FilterIDs); err != nil { - return err + if args.StatIDs != nil { + for _, id := range *args.StatIDs { + sqp, err := self.DataManager.GetStatQueueProfile(args.Tenant, id, true, false, utils.NonTransactional) + if err != nil { + return err + } + if err := sqpIndexers.RemoveItemFromIndex(args.Tenant, id, sqp.FilterIDs); err != nil { + return err + } } } return err @@ -265,13 +275,15 @@ func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, r //ResourceProfile Indexes if rsIndexes != nil { if err := rsIndexes.StoreIndexes(true, transactionID); err != nil { - for _, id := range *args.ResourceIDs { - rp, err := self.DataManager.GetResourceProfile(args.Tenant, id, true, false, utils.NonTransactional) - if err != nil { - return err - } - if err := rsIndexes.RemoveItemFromIndex(args.Tenant, id, rp.FilterIDs); err != nil { - return err + if args.ResourceIDs != nil { + for _, id := range *args.ResourceIDs { + rp, err := self.DataManager.GetResourceProfile(args.Tenant, id, true, false, utils.NonTransactional) + if err != nil { + return err + } + if err := rsIndexes.RemoveItemFromIndex(args.Tenant, id, rp.FilterIDs); err != nil { + return err + } } } return err @@ -280,13 +292,15 @@ func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, r //SupplierProfile Indexes if sppIndexes != nil { if err := sppIndexes.StoreIndexes(true, transactionID); err != nil { - for _, id := range *args.SupplierIDs { - spp, err := self.DataManager.GetSupplierProfile(args.Tenant, id, true, false, utils.NonTransactional) - if err != nil { - return err - } - if err := sppIndexes.RemoveItemFromIndex(args.Tenant, id, spp.FilterIDs); err != nil { - return err + if args.SupplierIDs != nil { + for _, id := range *args.SupplierIDs { + spp, err := self.DataManager.GetSupplierProfile(args.Tenant, id, true, false, utils.NonTransactional) + if err != nil { + return err + } + if err := sppIndexes.RemoveItemFromIndex(args.Tenant, id, spp.FilterIDs); err != nil { + return err + } } } return err @@ -295,13 +309,15 @@ func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, r //AttributeProfile Indexes if attrIndexes != nil { if err := attrIndexes.StoreIndexes(true, transactionID); err != nil { - for _, id := range *args.AttributeIDs { - ap, err := self.DataManager.GetAttributeProfile(args.Tenant, id, true, false, utils.NonTransactional) - if err != nil { - return err - } - if err := attrIndexes.RemoveItemFromIndex(args.Tenant, id, ap.FilterIDs); err != nil { - return err + if args.AttributeIDs != nil { + for _, id := range *args.AttributeIDs { + ap, err := self.DataManager.GetAttributeProfile(args.Tenant, id, true, false, utils.NonTransactional) + if err != nil { + return err + } + if err := attrIndexes.RemoveItemFromIndex(args.Tenant, id, ap.FilterIDs); err != nil { + return err + } } } return err @@ -310,13 +326,15 @@ func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, r //ChargerProfile Indexes if cppIndexes != nil { if err := cppIndexes.StoreIndexes(true, transactionID); err != nil { - for _, id := range *args.ChargerIDs { - cpp, err := self.DataManager.GetChargerProfile(args.Tenant, id, true, false, utils.NonTransactional) - if err != nil { - return err - } - if err := cppIndexes.RemoveItemFromIndex(args.Tenant, id, cpp.FilterIDs); err != nil { - return err + if args.ChargerIDs != nil { + for _, id := range *args.ChargerIDs { + cpp, err := self.DataManager.GetChargerProfile(args.Tenant, id, true, false, utils.NonTransactional) + if err != nil { + return err + } + if err := cppIndexes.RemoveItemFromIndex(args.Tenant, id, cpp.FilterIDs); err != nil { + return err + } } } return err @@ -325,13 +343,15 @@ func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, r //DispatcherProfile Indexes if dspIndexes != nil { if err := dspIndexes.StoreIndexes(true, transactionID); err != nil { - for _, id := range *args.DispatcherIDs { - cpp, err := self.DataManager.GetDispatcherProfile(args.Tenant, id, true, false, utils.NonTransactional) - if err != nil { - return err - } - if err := dspIndexes.RemoveItemFromIndex(args.Tenant, id, cpp.FilterIDs); err != nil { - return err + if args.DispatcherIDs != nil { + for _, id := range *args.DispatcherIDs { + cpp, err := self.DataManager.GetDispatcherProfile(args.Tenant, id, true, false, utils.NonTransactional) + if err != nil { + return err + } + if err := dspIndexes.RemoveItemFromIndex(args.Tenant, id, cpp.FilterIDs); err != nil { + return err + } } } return err @@ -744,10 +764,11 @@ func (self *ApierV1) computeChargerIndexes(tenant string, cppIDs *[]string, return cppIndexes, nil } -func (self *ApierV1) computeDispatcherIndexes(tenant string, dspIDs *[]string, +func (self *ApierV1) computeDispatcherIndexes(tenant, context string, dspIDs *[]string, transactionID string) (filterIndexer *engine.FilterIndexer, err error) { var dispatcherIDs []string - dspIndexes := engine.NewFilterIndexer(self.DataManager, utils.DispatcherProfilePrefix, tenant) + dspIndexes := engine.NewFilterIndexer(self.DataManager, utils.DispatcherProfilePrefix, + utils.ConcatenatedKey(tenant, context)) if dspIDs == nil { ids, err := self.DataManager.DataDB().GetKeysForPrefix(utils.DispatcherProfilePrefix) if err != nil { @@ -780,7 +801,7 @@ func (self *ApierV1) computeDispatcherIndexes(tenant string, dspIDs *[]string, ID: dsp.ID, Rules: []*engine.FilterRule{ { - Type: utils.META_NONE, + Type: utils.MetaDefault, FieldName: utils.META_ANY, Values: []string{utils.META_ANY}, }, diff --git a/apier/v1/filter_indexes_it_test.go b/apier/v1/filter_indexes_it_test.go index ac711cd00..6197e4f08 100644 --- a/apier/v1/filter_indexes_it_test.go +++ b/apier/v1/filter_indexes_it_test.go @@ -212,13 +212,14 @@ func testV1FIdxComputeThresholdsIndexes(t *testing.T) { var reply2 string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - ThresholdIDs: nil, - AttributeIDs: &emptySlice, - ResourceIDs: &emptySlice, - StatIDs: &emptySlice, - SupplierIDs: &emptySlice, - ChargerIDs: &emptySlice, + Tenant: tenant, + ThresholdIDs: nil, + AttributeIDs: &emptySlice, + ResourceIDs: &emptySlice, + StatIDs: &emptySlice, + SupplierIDs: &emptySlice, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &reply2); err != nil { t.Error(err) } @@ -309,13 +310,14 @@ func testV1FIdxSecondComputeThresholdsIndexes(t *testing.T) { var result string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - ThresholdIDs: &thid, - AttributeIDs: &emptySlice, - ResourceIDs: &emptySlice, - StatIDs: &emptySlice, - SupplierIDs: &emptySlice, - ChargerIDs: &emptySlice, + Tenant: tenant, + ThresholdIDs: &thid, + AttributeIDs: &emptySlice, + ResourceIDs: &emptySlice, + StatIDs: &emptySlice, + SupplierIDs: &emptySlice, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &result); err != nil { t.Error(err) } @@ -337,13 +339,14 @@ func testV1FIdxSecondComputeThresholdsIndexes(t *testing.T) { func testV1FIdxThirdComputeThresholdsIndexes(t *testing.T) { var result string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - ThresholdIDs: nil, - AttributeIDs: &emptySlice, - ResourceIDs: &emptySlice, - StatIDs: &emptySlice, - SupplierIDs: &emptySlice, - ChargerIDs: &emptySlice, + Tenant: tenant, + ThresholdIDs: nil, + AttributeIDs: &emptySlice, + ResourceIDs: &emptySlice, + StatIDs: &emptySlice, + SupplierIDs: &emptySlice, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &result); err != nil { t.Error(err) } @@ -368,13 +371,14 @@ func testV1FIdxThirdComputeThresholdsIndexes(t *testing.T) { func testV1FIdxRemoveThresholdProfile(t *testing.T) { var result string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - ThresholdIDs: nil, - AttributeIDs: &emptySlice, - ResourceIDs: &emptySlice, - StatIDs: &emptySlice, - SupplierIDs: &emptySlice, - ChargerIDs: &emptySlice, + Tenant: tenant, + ThresholdIDs: nil, + AttributeIDs: &emptySlice, + ResourceIDs: &emptySlice, + StatIDs: &emptySlice, + SupplierIDs: &emptySlice, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &result); err != nil { t.Error(err) } @@ -493,13 +497,14 @@ func testV1FIdxSetStatQueueProfileIndexes(t *testing.T) { func testV1FIdxComputeStatQueueProfileIndexes(t *testing.T) { var result string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - ThresholdIDs: &emptySlice, - AttributeIDs: &emptySlice, - ResourceIDs: &emptySlice, - StatIDs: nil, - SupplierIDs: &emptySlice, - ChargerIDs: &emptySlice, + Tenant: tenant, + ThresholdIDs: &emptySlice, + AttributeIDs: &emptySlice, + ResourceIDs: &emptySlice, + StatIDs: nil, + SupplierIDs: &emptySlice, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &result); err != nil { t.Error(err) } @@ -600,13 +605,14 @@ func testV1FIdxSecondComputeStatQueueProfileIndexes(t *testing.T) { var result string if err := tFIdxRpc.Call( utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - ThresholdIDs: &emptySlice, - AttributeIDs: &emptySlice, - ResourceIDs: &emptySlice, - StatIDs: &[]string{"TEST_PROFILE2"}, - SupplierIDs: &emptySlice, - ChargerIDs: &emptySlice, + Tenant: tenant, + ThresholdIDs: &emptySlice, + AttributeIDs: &emptySlice, + ResourceIDs: &emptySlice, + StatIDs: &[]string{"TEST_PROFILE2"}, + SupplierIDs: &emptySlice, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &result); err != nil { t.Error(err) } @@ -629,13 +635,14 @@ func testV1FIdxSecondComputeStatQueueProfileIndexes(t *testing.T) { func testV1FIdxRemoveStatQueueProfile(t *testing.T) { var result string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - ThresholdIDs: &emptySlice, - AttributeIDs: &emptySlice, - ResourceIDs: &emptySlice, - StatIDs: nil, - SupplierIDs: &emptySlice, - ChargerIDs: &emptySlice, + Tenant: tenant, + ThresholdIDs: &emptySlice, + AttributeIDs: &emptySlice, + ResourceIDs: &emptySlice, + StatIDs: nil, + SupplierIDs: &emptySlice, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &result); err != nil { t.Error(err) } @@ -741,13 +748,14 @@ func testV1FIdxSetResourceProfileIndexes(t *testing.T) { func testV1FIdxComputeResourceProfileIndexes(t *testing.T) { var reply2 string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - ThresholdIDs: &emptySlice, - AttributeIDs: &emptySlice, - ResourceIDs: nil, - StatIDs: &emptySlice, - SupplierIDs: &emptySlice, - ChargerIDs: &emptySlice, + Tenant: tenant, + ThresholdIDs: &emptySlice, + AttributeIDs: &emptySlice, + ResourceIDs: nil, + StatIDs: &emptySlice, + SupplierIDs: &emptySlice, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &reply2); err != nil { t.Error(err) } @@ -837,13 +845,14 @@ func testV1FIdxSecondComputeResourceProfileIndexes(t *testing.T) { var reply2 string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - ThresholdIDs: &emptySlice, - AttributeIDs: &emptySlice, - ResourceIDs: &rsid, - StatIDs: &emptySlice, - SupplierIDs: &emptySlice, - ChargerIDs: &emptySlice, + Tenant: tenant, + ThresholdIDs: &emptySlice, + AttributeIDs: &emptySlice, + ResourceIDs: &rsid, + StatIDs: &emptySlice, + SupplierIDs: &emptySlice, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &reply2); err != nil { t.Error(err) } @@ -866,13 +875,14 @@ func testV1FIdxRemoveResourceProfile(t *testing.T) { var resp string var reply2 string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - ThresholdIDs: &emptySlice, - AttributeIDs: &emptySlice, - ResourceIDs: nil, - StatIDs: &emptySlice, - SupplierIDs: &emptySlice, - ChargerIDs: &emptySlice, + Tenant: tenant, + ThresholdIDs: &emptySlice, + AttributeIDs: &emptySlice, + ResourceIDs: nil, + StatIDs: &emptySlice, + SupplierIDs: &emptySlice, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &reply2); err != nil { t.Error(err) } @@ -982,13 +992,14 @@ func testV1FIdxSetSupplierProfileIndexes(t *testing.T) { func testV1FIdxComputeSupplierProfileIndexes(t *testing.T) { var reply2 string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - ThresholdIDs: &emptySlice, - AttributeIDs: &emptySlice, - ResourceIDs: &emptySlice, - StatIDs: &emptySlice, - SupplierIDs: nil, - ChargerIDs: &emptySlice, + Tenant: tenant, + ThresholdIDs: &emptySlice, + AttributeIDs: &emptySlice, + ResourceIDs: &emptySlice, + StatIDs: &emptySlice, + SupplierIDs: nil, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &reply2); err != nil { t.Error(err) } @@ -1082,13 +1093,14 @@ func testV1FIdxSecondComputeSupplierProfileIndexes(t *testing.T) { var reply2 string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - ThresholdIDs: &emptySlice, - AttributeIDs: &emptySlice, - ResourceIDs: &emptySlice, - StatIDs: &emptySlice, - SupplierIDs: &spid, - ChargerIDs: &emptySlice, + Tenant: tenant, + ThresholdIDs: &emptySlice, + AttributeIDs: &emptySlice, + ResourceIDs: &emptySlice, + StatIDs: &emptySlice, + SupplierIDs: &spid, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &reply2); err != nil { t.Error(err) } @@ -1112,13 +1124,14 @@ func testV1FIdxRemoveSupplierProfile(t *testing.T) { var resp string var reply2 string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - ThresholdIDs: &emptySlice, - AttributeIDs: &emptySlice, - ResourceIDs: &emptySlice, - StatIDs: &emptySlice, - SupplierIDs: nil, - ChargerIDs: &emptySlice, + Tenant: tenant, + ThresholdIDs: &emptySlice, + AttributeIDs: &emptySlice, + ResourceIDs: &emptySlice, + StatIDs: &emptySlice, + SupplierIDs: nil, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &reply2); err != nil { t.Error(err) } @@ -1240,14 +1253,15 @@ func testV1FIdxComputeAttributeProfileIndexes(t *testing.T) { var result string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - Context: utils.MetaSessionS, - ThresholdIDs: &emptySlice, - AttributeIDs: nil, - ResourceIDs: &emptySlice, - StatIDs: &emptySlice, - SupplierIDs: &emptySlice, - ChargerIDs: &emptySlice, + Tenant: tenant, + Context: utils.MetaSessionS, + ThresholdIDs: &emptySlice, + AttributeIDs: nil, + ResourceIDs: &emptySlice, + StatIDs: &emptySlice, + SupplierIDs: &emptySlice, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &result); err != nil { t.Error(err) } else if result != utils.OK { @@ -1349,14 +1363,15 @@ func testV1FIdxSecondComputeAttributeProfileIndexes(t *testing.T) { var result string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - Context: utils.MetaSessionS, - ThresholdIDs: &emptySlice, - AttributeIDs: &[]string{"ApierTest2"}, - ResourceIDs: &emptySlice, - StatIDs: &emptySlice, - SupplierIDs: &emptySlice, - ChargerIDs: &emptySlice, + Tenant: tenant, + Context: utils.MetaSessionS, + ThresholdIDs: &emptySlice, + AttributeIDs: &[]string{"ApierTest2"}, + ResourceIDs: &emptySlice, + StatIDs: &emptySlice, + SupplierIDs: &emptySlice, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &result); err != nil { t.Error(err) } else if result != utils.OK { @@ -1381,14 +1396,15 @@ func testV1FIdxRemoveAttributeProfile(t *testing.T) { var result string if err := tFIdxRpc.Call(utils.ApierV1ComputeFilterIndexes, utils.ArgsComputeFilterIndexes{ - Tenant: tenant, - Context: utils.MetaSessionS, - ThresholdIDs: &emptySlice, - AttributeIDs: nil, - ResourceIDs: &emptySlice, - StatIDs: &emptySlice, - SupplierIDs: &emptySlice, - ChargerIDs: &emptySlice, + Tenant: tenant, + Context: utils.MetaSessionS, + ThresholdIDs: &emptySlice, + AttributeIDs: nil, + ResourceIDs: &emptySlice, + StatIDs: &emptySlice, + SupplierIDs: &emptySlice, + ChargerIDs: &emptySlice, + DispatcherIDs: &emptySlice, }, &result); err != nil { t.Error(err) } else if result != utils.OK {