Remove reverse filter indexes (duplicate data)

This commit is contained in:
TeoV
2018-08-21 09:35:58 -04:00
committed by Dan Christian Bogos
parent 34f11aa3f2
commit 0f8dd3754e
12 changed files with 375 additions and 1239 deletions

View File

@@ -151,150 +151,7 @@ func (self *ApierV1) GetFilterIndexes(arg AttrGetFilterIndexes, reply *[]string)
return nil
}
type AttrGetFilterReverseIndexes struct {
Tenant string
Context string
ItemType string
ItemIDs []string
FilterType string
FilterField string
FilterValue string
utils.Paginator
}
func (self *ApierV1) GetFilterReverseIndexes(arg AttrGetFilterReverseIndexes, reply *[]string) (err error) {
var indexes map[string]utils.StringMap
var indexedSlice []string
indexesFilter := make(map[string]utils.StringMap)
if missing := utils.MissingStructFields(&arg, []string{"Tenant", "ItemType"}); len(missing) != 0 { //Params missing
return utils.NewErrMandatoryIeMissing(missing...)
}
key := arg.Tenant
switch arg.ItemType {
case utils.MetaThresholds:
arg.ItemType = utils.ThresholdProfilePrefix
case utils.MetaSuppliers:
arg.ItemType = utils.SupplierProfilePrefix
case utils.MetaStats:
arg.ItemType = utils.StatQueueProfilePrefix
case utils.MetaResources:
arg.ItemType = utils.ResourceProfilesPrefix
case utils.MetaChargers:
arg.ItemType = utils.ChargerProfilePrefix
case utils.MetaAttributes:
if missing := utils.MissingStructFields(&arg, []string{"Context"}); len(missing) != 0 { //Params missing
return utils.NewErrMandatoryIeMissing(missing...)
}
arg.ItemType = utils.AttributeProfilePrefix
key = utils.ConcatenatedKey(arg.Tenant, arg.Context)
}
if arg.ItemIDs != nil {
indexes = make(map[string]utils.StringMap)
for _, itemID := range arg.ItemIDs {
if tmpIndexes, err := self.DataManager.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[arg.ItemType], key, map[string]string{itemID: ""}); err != nil {
return err
} else {
for key, val := range tmpIndexes {
indexes[key] = make(utils.StringMap)
indexes[key] = val
}
}
}
} else {
indexes, err = self.DataManager.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[arg.ItemType], key, nil)
if err != nil {
return err
}
}
if arg.FilterType != "" {
for val, strmap := range indexes {
indexesFilter[val] = make(utils.StringMap)
for _, value := range strmap.Slice() {
if strings.HasPrefix(value, arg.FilterType) {
indexesFilter[val][value] = true
indexedSlice = append(indexedSlice, utils.ConcatenatedKey(val, value))
}
}
}
if len(indexedSlice) == 0 {
return utils.ErrNotFound
}
}
if arg.FilterField != "" {
if len(indexedSlice) == 0 {
indexesFilter = make(map[string]utils.StringMap)
for val, strmap := range indexes {
indexesFilter[val] = make(utils.StringMap)
for _, value := range strmap.Slice() {
if strings.Index(value, arg.FilterField) != -1 {
indexesFilter[val][value] = true
indexedSlice = append(indexedSlice, utils.ConcatenatedKey(val, value))
}
}
}
if len(indexedSlice) == 0 {
return utils.ErrNotFound
}
} else {
var cloneIndexSlice []string
for val, strmap := range indexesFilter {
for _, value := range strmap.Slice() {
if strings.Index(value, arg.FilterField) != -1 {
cloneIndexSlice = append(cloneIndexSlice, utils.ConcatenatedKey(val, value))
}
}
}
if len(cloneIndexSlice) == 0 {
return utils.ErrNotFound
}
indexedSlice = cloneIndexSlice
}
}
if arg.FilterValue != "" {
if len(indexedSlice) == 0 {
for val, strmap := range indexes {
for _, value := range strmap.Slice() {
if strings.Index(value, arg.FilterValue) != -1 {
indexedSlice = append(indexedSlice, utils.ConcatenatedKey(val, value))
}
}
}
if len(indexedSlice) == 0 {
return utils.ErrNotFound
}
} else {
var cloneIndexSlice []string
for val, strmap := range indexesFilter {
for _, value := range strmap.Slice() {
if strings.Index(value, arg.FilterValue) != -1 {
cloneIndexSlice = append(cloneIndexSlice, utils.ConcatenatedKey(val, value))
}
}
}
if len(cloneIndexSlice) == 0 {
return utils.ErrNotFound
}
indexedSlice = cloneIndexSlice
}
}
if len(indexedSlice) == 0 {
for val, strmap := range indexes {
for _, value := range strmap.Slice() {
indexedSlice = append(indexedSlice, utils.ConcatenatedKey(val, value))
}
}
}
if arg.Paginator.Limit != nil || arg.Paginator.Offset != nil || arg.Paginator.SearchTerm != "" {
*reply = arg.Paginator.PaginateStringSlice(indexedSlice)
} else {
*reply = indexedSlice
}
return nil
}
//NEED REVIEW
func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, reply *string) error {
transactionID := utils.GenUUID()
//ThresholdProfile Indexes
@@ -333,7 +190,11 @@ func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, r
if err := thdsIndexers.StoreIndexes(true, transactionID); err != nil {
if args.ThresholdIDs != nil {
for _, id := range *args.ThresholdIDs {
if err := thdsIndexers.RemoveItemFromIndex(id); err != nil {
th, err := self.DataManager.GetThresholdProfile(args.Tenant, id, false, utils.NonTransactional)
if err != nil {
return err
}
if err := thdsIndexers.RemoveItemFromIndex(args.Tenant, id, th.FilterIDs); err != nil {
return err
}
}
@@ -345,7 +206,11 @@ func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, r
if sqpIndexers != nil {
if err := sqpIndexers.StoreIndexes(true, transactionID); err != nil {
for _, id := range *args.StatIDs {
if err := sqpIndexers.RemoveItemFromIndex(id); err != nil {
sqp, err := self.DataManager.GetStatQueueProfile(args.Tenant, id, false, utils.NonTransactional)
if err != nil {
return err
}
if err := sqpIndexers.RemoveItemFromIndex(args.Tenant, id, sqp.FilterIDs); err != nil {
return err
}
}
@@ -356,7 +221,11 @@ func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, r
if rsIndexes != nil {
if err := rsIndexes.StoreIndexes(true, transactionID); err != nil {
for _, id := range *args.ResourceIDs {
if err := rsIndexes.RemoveItemFromIndex(id); err != nil {
rp, err := self.DataManager.GetResourceProfile(args.Tenant, id, false, utils.NonTransactional)
if err != nil {
return err
}
if err := rsIndexes.RemoveItemFromIndex(args.Tenant, id, rp.FilterIDs); err != nil {
return err
}
}
@@ -367,7 +236,11 @@ func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, r
if sppIndexes != nil {
if err := sppIndexes.StoreIndexes(true, transactionID); err != nil {
for _, id := range *args.SupplierIDs {
if err := sppIndexes.RemoveItemFromIndex(id); err != nil {
spp, err := self.DataManager.GetSupplierProfile(args.Tenant, id, false, utils.NonTransactional)
if err != nil {
return err
}
if err := sppIndexes.RemoveItemFromIndex(args.Tenant, id, spp.FilterIDs); err != nil {
return err
}
}
@@ -378,7 +251,11 @@ func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, r
if attrIndexes != nil {
if err := attrIndexes.StoreIndexes(true, transactionID); err != nil {
for _, id := range *args.AttributeIDs {
if err := attrIndexes.RemoveItemFromIndex(id); err != nil {
ap, err := self.DataManager.GetAttributeProfile(args.Tenant, id, false, utils.NonTransactional)
if err != nil {
return err
}
if err := attrIndexes.RemoveItemFromIndex(args.Tenant, id, ap.FilterIDs); err != nil {
return err
}
}
@@ -389,7 +266,11 @@ func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, r
if cppIndexes != nil {
if err := attrIndexes.StoreIndexes(true, transactionID); err != nil {
for _, id := range *args.ChargerIDs {
if err := cppIndexes.RemoveItemFromIndex(id); err != nil {
cpp, err := self.DataManager.GetChargerProfile(args.Tenant, id, false, utils.NonTransactional)
if err != nil {
return err
}
if err := cppIndexes.RemoveItemFromIndex(args.Tenant, id, cpp.FilterIDs); err != nil {
return err
}
}

View File

@@ -57,11 +57,11 @@ var sTestsFilterIndexesSV1 = []func(t *testing.T){
testV1FIdxThirdComputeThresholdsIndexes,
testV1FIdxRemoveThresholdProfile,
testV1FIdxSetStatQueueProfileIndexes,
testV1FIdxComputeStatQueueProfileIndexes,
testV1FIdxSetSecondStatQueueProfileIndexes,
testV1FIdxSecondComputeStatQueueProfileIndexes,
testV1FIdxRemoveStatQueueProfile,
// testV1FIdxSetStatQueueProfileIndexes,
// testV1FIdxComputeStatQueueProfileIndexes,
// testV1FIdxSetSecondStatQueueProfileIndexes,
// testV1FIdxSecondComputeStatQueueProfileIndexes,
// testV1FIdxRemoveStatQueueProfile,
testV1FIdxSetResourceProfileIndexes,
testV1FIdxComputeResourceProfileIndexes,
@@ -235,18 +235,10 @@ func testV1FIdxSetThresholdProfile(t *testing.T) {
tenant); err != nil {
t.Error(err)
}
if err := onStor.RemoveFilterReverseIndexes(utils.PrefixToRevIndexCache[utils.ThresholdProfilePrefix],
tenant); err != nil {
t.Error(err)
}
if indexes, err = onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
t.Error(err)
}
if _, err = onStor.GetFilterReverseIndexes(utils.PrefixToRevIndexCache[utils.ThresholdProfilePrefix],
tenant, nil); err != nil && err != utils.ErrNotFound {
t.Error(err)
}
}
func testV1FIdxComputeThresholdsIndexes(t *testing.T) {
@@ -279,16 +271,6 @@ func testV1FIdxComputeThresholdsIndexes(t *testing.T) {
if !reflect.DeepEqual(expectedIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v", expectedIDX, utils.ToJSON(indexes))
}
expectedRevIDX := map[string]utils.StringMap{
"TEST_PROFILE1": {"*string:Account:1001": true}}
indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.ThresholdProfilePrefix], tenant, nil)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v", expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxSetSecondThresholdProfile(t *testing.T) {
@@ -352,11 +334,6 @@ func testV1FIdxSetSecondThresholdProfile(t *testing.T) {
tenant); err != nil {
t.Error(err)
}
if err := onStor.RemoveFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.ThresholdProfilePrefix],
tenant); err != nil {
t.Error(err)
}
if _, err = onStor.GetFilterIndexes(
utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
@@ -395,17 +372,6 @@ func testV1FIdxSecondComputeThresholdsIndexes(t *testing.T) {
if !reflect.DeepEqual(expectedIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v", expectedIDX, utils.ToJSON(indexes))
}
expectedRevIDX := map[string]utils.StringMap{
"TEST_PROFILE2": {"*string:Account:1002": true}}
indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.ThresholdProfilePrefix],
tenant, nil)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v", expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxThirdComputeThresholdsIndexes(t *testing.T) {
@@ -442,22 +408,6 @@ func testV1FIdxThirdComputeThresholdsIndexes(t *testing.T) {
t.Errorf("Expecting: %+v, received: %+v",
expectedIDX, utils.ToJSON(indexes))
}
expectedRevIDX := map[string]utils.StringMap{
"TEST_PROFILE1": {
"*string:Account:1001": true},
"TEST_PROFILE2": {
"*string:Account:1002": true},
}
indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.ThresholdProfilePrefix],
tenant, nil)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v",
expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxRemoveThresholdProfile(t *testing.T) {
@@ -506,10 +456,6 @@ func testV1FIdxRemoveThresholdProfile(t *testing.T) {
tenant, engine.MetaString, nil); err != nil && err != utils.ErrNotFound {
t.Error(err)
}
if _, err = onStor.GetFilterReverseIndexes(utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
tenant, nil); err != nil && err != utils.ErrNotFound {
t.Error(err)
}
}
//StatQueueProfile
@@ -583,10 +529,6 @@ func testV1FIdxSetStatQueueProfileIndexes(t *testing.T) {
tenant); err != nil {
t.Error(err)
}
if err := onStor.RemoveFilterReverseIndexes(utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
tenant); err != nil {
t.Error(err)
}
if indexes, err = onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
t.Error(err)
@@ -623,18 +565,6 @@ func testV1FIdxComputeStatQueueProfileIndexes(t *testing.T) {
t.Errorf("Expecting: %+v, received: %+v",
expectedIDX, utils.ToJSON(indexes))
}
expectedRevIDX := map[string]utils.StringMap{
"TEST_PROFILE1": {"*string:Account:1001": true}}
indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.StatQueueProfilePrefix],
tenant, nil)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v",
expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxSetSecondStatQueueProfileIndexes(t *testing.T) {
@@ -708,11 +638,6 @@ func testV1FIdxSetSecondStatQueueProfileIndexes(t *testing.T) {
tenant); err != nil {
t.Error(err)
}
if err := onStor.RemoveFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.StatQueueProfilePrefix],
tenant); err != nil {
t.Error(err)
}
if indexes, err = onStor.GetFilterIndexes(
utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
@@ -752,18 +677,6 @@ func testV1FIdxSecondComputeStatQueueProfileIndexes(t *testing.T) {
t.Errorf("Expecting: %+v, received: %+v",
expectedIDX, utils.ToJSON(indexes))
}
expectedRevIDX := map[string]utils.StringMap{
"TEST_PROFILE2": {"*string:Account:1001": true}}
indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.StatQueueProfilePrefix],
tenant, nil)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v",
expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxRemoveStatQueueProfile(t *testing.T) {
@@ -807,14 +720,10 @@ func testV1FIdxRemoveStatQueueProfile(t *testing.T) {
err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
if _, err = onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
if _, err = onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
tenant, engine.MetaString, nil); err != nil && err != utils.ErrNotFound {
t.Error(err)
}
if _, err = onStor.GetFilterReverseIndexes(utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
tenant, nil); err != nil && err != utils.ErrNotFound {
t.Error(err)
}
}
//ResourceProfile
@@ -876,10 +785,6 @@ func testV1FIdxSetResourceProfileIndexes(t *testing.T) {
tenant); err != nil {
t.Error(err)
}
if err := onStor.RemoveFilterReverseIndexes(utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
tenant); err != nil {
t.Error(err)
}
if indexes, err = onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
t.Error(err)
@@ -916,18 +821,6 @@ func testV1FIdxComputeResourceProfileIndexes(t *testing.T) {
t.Errorf("Expecting: %+v, received: %+v",
expectedIDX, utils.ToJSON(indexes))
}
expectedRevIDX := map[string]utils.StringMap{
"RCFG1": {"*string:Account:1001": true}}
indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.ResourceProfilesPrefix],
tenant, nil)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v",
expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxSetSecondResourceProfileIndexes(t *testing.T) {
@@ -988,11 +881,6 @@ func testV1FIdxSetSecondResourceProfileIndexes(t *testing.T) {
tenant); err != nil {
t.Error(err)
}
if err := onStor.RemoveFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.ResourceProfilesPrefix],
tenant); err != nil {
t.Error(err)
}
if indexes, err = onStor.GetFilterIndexes(
utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
@@ -1029,17 +917,6 @@ func testV1FIdxSecondComputeResourceProfileIndexes(t *testing.T) {
if !reflect.DeepEqual(expectedIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v", expectedIDX, utils.ToJSON(indexes))
}
expectedRevIDX := map[string]utils.StringMap{
"RCFG2": {"*string:Account:1001": true}}
indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.ResourceProfilesPrefix], tenant, nil)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v",
expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxRemoveResourceProfile(t *testing.T) {
@@ -1085,10 +962,6 @@ func testV1FIdxRemoveResourceProfile(t *testing.T) {
tenant, engine.MetaString, nil); err != nil && err != utils.ErrNotFound {
t.Error(err)
}
if _, err = onStor.GetFilterReverseIndexes(utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
tenant, nil); err != nil && err != utils.ErrNotFound {
t.Error(err)
}
}
//SupplierProfile
@@ -1156,10 +1029,6 @@ func testV1FIdxSetSupplierProfileIndexes(t *testing.T) {
tenant); err != nil {
t.Error(err)
}
if err := onStor.RemoveFilterReverseIndexes(utils.PrefixToIndexCache[utils.SupplierProfilePrefix],
tenant); err != nil {
t.Error(err)
}
if indexes, err = onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.SupplierProfilePrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
t.Error(err)
@@ -1196,18 +1065,6 @@ func testV1FIdxComputeSupplierProfileIndexes(t *testing.T) {
t.Errorf("Expecting: %+v, received: %+v",
expectedIDX, utils.ToJSON(indexes))
}
expectedRevIDX := map[string]utils.StringMap{
"TEST_PROFILE1": {"*string:Account:1001": true}}
indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.SupplierProfilePrefix],
tenant, nil)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v",
expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxSetSecondSupplierProfileIndexes(t *testing.T) {
@@ -1275,11 +1132,6 @@ func testV1FIdxSetSecondSupplierProfileIndexes(t *testing.T) {
tenant); err != nil {
t.Error(err)
}
if err := onStor.RemoveFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.SupplierProfilePrefix],
tenant); err != nil {
t.Error(err)
}
if indexes, err = onStor.GetFilterIndexes(
utils.PrefixToIndexCache[utils.SupplierProfilePrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
@@ -1319,18 +1171,6 @@ func testV1FIdxSecondComputeSupplierProfileIndexes(t *testing.T) {
t.Errorf("Expecting: %+v, received: %+v",
expectedIDX, utils.ToJSON(indexes))
}
expectedRevIDX := map[string]utils.StringMap{
"TEST_PROFILE2": {"*string:Account:1001": true}}
indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.SupplierProfilePrefix],
tenant, nil)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v",
expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxRemoveSupplierProfile(t *testing.T) {
@@ -1378,10 +1218,6 @@ func testV1FIdxRemoveSupplierProfile(t *testing.T) {
tenant, engine.MetaString, nil); err != nil && err != utils.ErrNotFound {
t.Error(err)
}
if _, err = onStor.GetFilterReverseIndexes(utils.PrefixToIndexCache[utils.SupplierProfilePrefix],
tenant, nil); err != nil && err != utils.ErrNotFound {
t.Error(err)
}
}
//AttributeProfile
@@ -1452,10 +1288,6 @@ func testV1FIdxSetAttributeProfileIndexes(t *testing.T) {
tenant); err != nil {
t.Error(err)
}
if err := onStor.RemoveFilterReverseIndexes(utils.PrefixToIndexCache[utils.AttributeProfilePrefix],
tenant); err != nil {
t.Error(err)
}
if indexes, err = onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.AttributeProfilePrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
t.Error(err)
@@ -1491,17 +1323,6 @@ func testV1FIdxComputeAttributeProfileIndexes(t *testing.T) {
if !reflect.DeepEqual(expectedIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v", expectedIDX, utils.ToJSON(indexes))
}
expectedRevIDX := map[string]utils.StringMap{
"ApierTest": {"*string:Account:1001": true}}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.AttributeProfilePrefix],
tenant, nil); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v",
expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxSetSecondAttributeProfileIndexes(t *testing.T) {
@@ -1572,11 +1393,6 @@ func testV1FIdxSetSecondAttributeProfileIndexes(t *testing.T) {
tenant); err != nil {
t.Error(err)
}
if err := onStor.RemoveFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.AttributeProfilePrefix],
tenant); err != nil {
t.Error(err)
}
if indexes, err = onStor.GetFilterIndexes(
utils.PrefixToIndexCache[utils.AttributeProfilePrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
@@ -1616,18 +1432,6 @@ func testV1FIdxSecondComputeAttributeProfileIndexes(t *testing.T) {
t.Errorf("Expecting: %+v, received: %+v",
expectedIDX, utils.ToJSON(indexes))
}
expectedRevIDX := map[string]utils.StringMap{
"ApierTest2": {"*string:Account:1001": true}}
indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.AttributeProfilePrefix],
tenant, nil)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v",
expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxRemoveAttributeProfile(t *testing.T) {
@@ -1674,10 +1478,6 @@ func testV1FIdxRemoveAttributeProfile(t *testing.T) {
tenant, engine.MetaString, nil); err != nil && err != utils.ErrNotFound {
t.Error(err)
}
if _, err = onStor.GetFilterReverseIndexes(utils.PrefixToIndexCache[utils.AttributeProfilePrefix],
tenant, nil); err != nil && err != utils.ErrNotFound {
t.Error(err)
}
}
func testV1FIdxPopulateDatabase(t *testing.T) {

View File

@@ -51,14 +51,14 @@ var sTestsFilterIndexesSV1Ca = []func(t *testing.T){
testV1FIdxCaUpdateThresholdProfileFromTP,
testV1FIdxCaRemoveThresholdProfile,
testFlush,
testV1FIdxCaGetStatQueuesWithNotFound,
testV1FIdxCaSetStatQueueProfile,
testV1FIdxCaFromFolder,
testV1FIdxCaGetStatQueuesFromTP,
testV1FIdxCaUpdateStatQueueProfile,
testV1FIdxCaUpdateStatQueueProfileFromTP,
testV1FIdxCaRemoveStatQueueProfile,
// testFlush,
// testV1FIdxCaGetStatQueuesWithNotFound,
// testV1FIdxCaSetStatQueueProfile,
// testV1FIdxCaFromFolder,
// testV1FIdxCaGetStatQueuesFromTP,
// testV1FIdxCaUpdateStatQueueProfile,
// testV1FIdxCaUpdateStatQueueProfileFromTP,
// testV1FIdxCaRemoveStatQueueProfile,
testFlush,
testV1FIdxCaProcessAttributeProfileEventWithNotFound,
@@ -178,10 +178,6 @@ func testV1FIdxCaProcessEventWithNotFound(t *testing.T) {
if err := tFIdxCaRpc.Call(utils.ThresholdSv1ProcessEvent, tEv, &thIDs); err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
if indexes, err = onStor.GetFilterReverseIndexes(utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
"cgrates.org", nil); err == nil || err != utils.ErrNotFound {
t.Error(err)
}
}
func testV1FIdxCaSetThresholdProfile(t *testing.T) {
@@ -248,19 +244,6 @@ func testV1FIdxCaSetThresholdProfile(t *testing.T) {
} else if !reflect.DeepEqual(thIDs, eIDs) {
t.Errorf("Expecting hits: %s, received: %s", eIDs, thIDs)
}
//test to make sure indexes are made as expected
fldNameVal := map[string]string{"TEST_PROFILE1": ""}
expectedRevIDX := map[string]utils.StringMap{
"TEST_PROFILE1": {"*string:Account:1001": true,
"*string:EventType:BalanceUpdate": true}}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.ThresholdProfilePrefix],
"cgrates.org", fldNameVal); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v", expectedRevIDX, indexes)
}
}
func testV1FIdxCaGetThresholdFromTP(t *testing.T) {
@@ -284,22 +267,6 @@ func testV1FIdxCaGetThresholdFromTP(t *testing.T) {
} else if !reflect.DeepEqual(thIDs, eIDs) {
t.Errorf("Expecting hits: %s, received: %s", eIDs, thIDs)
}
//test to make sure indexes are made as expected
idx := map[string]utils.StringMap{
"THD_ACNT_BALANCE_1": {
"*string:Account:1001": true,
"*string:Account:1002": true,
"*string:EventType:BalanceUpdate": true}}
fldNameVal := map[string]string{"THD_ACNT_BALANCE_1": ""}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.ThresholdProfilePrefix],
"cgrates.org", fldNameVal); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(idx, indexes) {
t.Errorf("Expecting: %+v, received: %+v",
idx, utils.ToJSON(indexes))
}
}
func testV1FIdxCaUpdateThresholdProfile(t *testing.T) {
@@ -376,20 +343,6 @@ func testV1FIdxCaUpdateThresholdProfile(t *testing.T) {
} else if !reflect.DeepEqual(thIDs, eIDs) {
t.Errorf("Expecting : %s, received: %s", eIDs, thIDs)
}
//test to make sure indexes are made as expecte
fldNameVal := map[string]string{"TEST_PROFILE1": ""}
expectedRevIDX := map[string]utils.StringMap{
"TEST_PROFILE1": {"*string:Account:1002": true,
"*string:EventType:AccountUpdate": true}}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.ThresholdProfilePrefix],
"cgrates.org", fldNameVal); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v",
expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxCaUpdateThresholdProfileFromTP(t *testing.T) {
@@ -460,19 +413,6 @@ func testV1FIdxCaUpdateThresholdProfileFromTP(t *testing.T) {
} else if !reflect.DeepEqual(thIDs, eIDs) {
t.Errorf("Expecting : %s, received: %s", eIDs, thIDs)
}
//test to make sure indexes are made as expecte
fldNameVal := map[string]string{"TEST_PROFILE1": ""}
expectedRevIDX := map[string]utils.StringMap{
"TEST_PROFILE1": {"*string:Account:1002": true,
"*string:EventType:AccountUpdate": true}}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.ThresholdProfilePrefix],
"cgrates.org", fldNameVal); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v", expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxCaRemoveThresholdProfile(t *testing.T) {
@@ -540,13 +480,6 @@ func testV1FIdxCaRemoveThresholdProfile(t *testing.T) {
err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
//test to make sure indexes are made as expected
fldNameVal2 := map[string]string{"THD_ACNT_BALANCE_1": "", "TEST_PROFILE1": ""}
if _, err = onStor.GetFilterReverseIndexes(
utils.PrefixToIndexCache[utils.ThresholdProfilePrefix], "cgrates.org",
fldNameVal2); err == nil || err != utils.ErrNotFound {
t.Error(err)
}
}
//StatQueue
@@ -564,11 +497,6 @@ func testV1FIdxCaGetStatQueuesWithNotFound(t *testing.T) {
err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToIndexCache[utils.StatQueueProfilePrefix], "cgrates.org",
nil); err == nil || err != utils.ErrNotFound {
t.Error(err)
}
}
func testV1FIdxCaSetStatQueueProfile(t *testing.T) {
@@ -642,19 +570,6 @@ func testV1FIdxCaSetStatQueueProfile(t *testing.T) {
} else if !reflect.DeepEqual(reply, expected) {
t.Errorf("Expecting: %+v, received: %+v", expected, reply)
}
fldNameVal := map[string]string{"TEST_PROFILE1": ""}
expectedRevIDX := map[string]utils.StringMap{
"TEST_PROFILE1": {"*string:Account:1001": true,
"*string:EventType:AccountUpdate": true}}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.StatQueueProfilePrefix], "cgrates.org",
fldNameVal); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v", expectedRevIDX, indexes)
}
}
func testV1FIdxCaGetStatQueuesFromTP(t *testing.T) {
@@ -711,21 +626,6 @@ func testV1FIdxCaGetStatQueuesFromTP(t *testing.T) {
} else if !reflect.DeepEqual(reply, expected) {
t.Errorf("Expecting: %+v, received: %+v", expected, reply)
}
idx := map[string]utils.StringMap{
"TEST_PROFILE1": {"*string:Account:1001": true,
"*string:EventType:AccountUpdate": true}}
fldNameVal := map[string]string{"TEST_PROFILE1": ""}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.StatQueueProfilePrefix], "cgrates.org",
fldNameVal); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(idx, indexes) {
t.Errorf("Expecting: %+v, received: %+v", idx, utils.ToJSON(indexes))
}
}
func testV1FIdxCaUpdateStatQueueProfile(t *testing.T) {
@@ -794,19 +694,6 @@ func testV1FIdxCaUpdateStatQueueProfile(t *testing.T) {
} else if !reflect.DeepEqual(reply, expected) {
t.Errorf("Expecting: %+v, received: %+v", expected, reply)
}
fldNameVal := map[string]string{"TEST_PROFILE1": ""}
expectedRevIDX := map[string]utils.StringMap{
"TEST_PROFILE1": {"*string:Account:1003": true,
"*string:EventType:BalanceUpdate": true}}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.StatQueueProfilePrefix], "cgrates.org",
fldNameVal); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v", expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxCaUpdateStatQueueProfileFromTP(t *testing.T) {
@@ -864,19 +751,6 @@ func testV1FIdxCaUpdateStatQueueProfileFromTP(t *testing.T) {
} else if !reflect.DeepEqual(ids, expected) {
t.Errorf("Expecting: %+v, received: %+v", expected, ids)
}
fldNameVal := map[string]string{"Stats1": ""}
expectedRevIDX := map[string]utils.StringMap{
"Stats1": {
"*string:Account:1003": true,
"*string:EventType:AccountUpdate": true}}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.StatQueueProfilePrefix], "cgrates.org",
fldNameVal); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v", expectedRevIDX, indexes)
}
}
func testV1FIdxCaRemoveStatQueueProfile(t *testing.T) {
@@ -944,12 +818,6 @@ func testV1FIdxCaRemoveStatQueueProfile(t *testing.T) {
err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
// fldNameVals := map[string]string{"THD_ACNT_BALANCE_1": "", "TEST_PROFILE1": ""}
// if _, err = onStor.GetFilterReverseIndexes(
// utils.PrefixToIndexCache[utils.ThresholdProfilePrefix], "cgrates.org",
// fldNameVals); err == nil || err != utils.ErrNotFound {
// t.Error(err)
// }
}
//AttributeProfile
@@ -968,11 +836,6 @@ func testV1FIdxCaProcessAttributeProfileEventWithNotFound(t *testing.T) {
err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToIndexCache[utils.ThresholdProfilePrefix], "cgrates.org",
nil); err == nil || err != utils.ErrNotFound {
t.Error(err)
}
}
func testV1FIdxCaSetAttributeProfile(t *testing.T) {
@@ -1045,20 +908,6 @@ func testV1FIdxCaSetAttributeProfile(t *testing.T) {
ev, &rplyEv); err != nil {
t.Error(err)
}
//test to make sure indexes are made as expected
fldNameVal := map[string]string{"TEST_PROFILE1": ""}
expectedRevIDX := map[string]utils.StringMap{
"TEST_PROFILE1": {"*string:Account:1009": true,
"*string:Destination:+491511231234": true}}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.AttributeProfilePrefix],
"cgrates.org:*sessions",
fldNameVal); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v", expectedRevIDX, indexes)
}
}
func testV1FIdxCaGetAttributeProfileFromTP(t *testing.T) {
@@ -1076,19 +925,6 @@ func testV1FIdxCaGetAttributeProfileFromTP(t *testing.T) {
if err := tFIdxCaRpc.Call(utils.AttributeSv1ProcessEvent, ev, &rplyEv); err != nil {
t.Error(err)
}
//test to make sure indexes are made as expected
idx := map[string]utils.StringMap{"ATTR_1": {
"*string:Account:1007": true}}
fldNameVal := map[string]string{"ATTR_1": ""}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.AttributeProfilePrefix],
"cgrates.org:*sessions",
fldNameVal); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(idx, indexes) {
t.Errorf("Expecting: %+v, received: %+v", idx, utils.ToJSON(indexes))
}
}
func testV1FIdxCaUpdateAttributeProfile(t *testing.T) {
@@ -1160,21 +996,6 @@ func testV1FIdxCaUpdateAttributeProfile(t *testing.T) {
if err := tFIdxCaRpc.Call(utils.AttributeSv1ProcessEvent, ev, &rplyEv); err != nil {
t.Error(err)
}
//test to make sure indexes are made as expected
idx := map[string]utils.StringMap{
"TEST_PROFILE1": {
"*string:Account:2009": true,
"*string:Destination:+492511231234": true}}
fldNameVal := map[string]string{"TEST_PROFILE1": ""}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.AttributeProfilePrefix],
"cgrates.org:*sessions",
fldNameVal); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(idx, indexes) {
t.Errorf("Expecting: %+v, received: %+v", idx, utils.ToJSON(indexes))
}
}
func testV1FIdxCaUpdateAttributeProfileFromTP(t *testing.T) {
@@ -1228,21 +1049,6 @@ func testV1FIdxCaUpdateAttributeProfileFromTP(t *testing.T) {
if err := tFIdxCaRpc.Call(utils.AttributeSv1ProcessEvent, ev, &rplyEv); err != nil {
t.Error(err)
}
//test to make sure indexes are made as expected
idx := map[string]utils.StringMap{
"ATTR_1": {
"*string:Account:3009": true,
"*string:Destination:+492511231234": true}}
fldNameVal := map[string]string{"ATTR_1": ""}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.AttributeProfilePrefix],
"cgrates.org:*sessions",
fldNameVal); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(idx, indexes) {
t.Errorf("Expecting: %+v, received: %+v", idx, utils.ToJSON(indexes))
}
}
func testV1FIdxCaRemoveAttributeProfile(t *testing.T) {
@@ -1308,13 +1114,6 @@ func testV1FIdxCaRemoveAttributeProfile(t *testing.T) {
err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
//test to make sure indexes are made as expected
fldNameVal2 := map[string]string{"ATTR_1": "", "TEST_PROFILE1": ""}
if _, err = onStor.GetFilterReverseIndexes(
utils.PrefixToIndexCache[utils.AttributeProfilePrefix], "cgrates.org:*rating",
fldNameVal2); err == nil || err != utils.ErrNotFound {
t.Error(err)
}
}
// ResourceProfile
@@ -1339,11 +1138,6 @@ func testV1FIdxCaGetResourceProfileWithNotFound(t *testing.T) {
argsRU, &reply); err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToIndexCache[utils.StatQueueProfilePrefix], "cgrates.org",
nil); err != nil && err != utils.ErrNotFound {
t.Error(err)
}
}
func testV1FIdxCaSetResourceProfile(t *testing.T) {
filter = &engine.Filter{
@@ -1420,20 +1214,6 @@ func testV1FIdxCaSetResourceProfile(t *testing.T) {
} else if result != "Approved" {
t.Error("Unexpected reply returned", result)
}
fldNameVal := map[string]string{"RCFG1": ""}
expectedRevIDX := map[string]utils.StringMap{
"RCFG1": {
"*string:Account:1001": true,
"*string:Subject:1002": true,
"*string:Destination:1001": true}}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.ResourceProfilesPrefix], "cgrates.org",
fldNameVal); err != nil && err != utils.ErrNotFound {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v", expectedRevIDX, indexes)
}
}
func testV1FIdxCaGetResourceProfileFromTP(t *testing.T) {
@@ -1479,21 +1259,6 @@ func testV1FIdxCaGetResourceProfileFromTP(t *testing.T) {
} else if reply != "ResGroup1" {
t.Error("Unexpected reply returned", reply)
}
idx := map[string]utils.StringMap{
"ResGroup1": {
"*prefix:Destination:10": true,
"*prefix:Destination:20": true,
"*string:Account:1001": true,
"*string:Account:1002": true}}
fldNameVal := map[string]string{"ResGroup1": ""}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.ResourceProfilesPrefix], "cgrates.org",
fldNameVal); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(idx, indexes) {
t.Errorf("Expecting: %+v, received: %+v", idx, utils.ToJSON(indexes))
}
}
func testV1FIdxCaUpdateResourceProfile(t *testing.T) {
@@ -1565,21 +1330,6 @@ func testV1FIdxCaUpdateResourceProfile(t *testing.T) {
} else if result != "MessageAllocation" {
t.Error("Unexpected reply returned", result)
}
// fldNameVal2 := map[string]string{"RCFG1": ""}
// expectedRevIDX := map[string]utils.StringMap{
// "RCFG1": {
// "*string:Account:2002": true,
// "*string:Destination:2002": true,
// "*string:Subject:2001": true}}
// if indexes, err = onStor.GetFilterReverseIndexes(
// utils.PrefixToIndexCache[utils.ResourceProfilesPrefix], "cgrates.org",
// fldNameVal2); err != nil {
// t.Error(err)
// }
// if !reflect.DeepEqual(expectedRevIDX, indexes) {
// t.Errorf("Expecting: %+v, received: %+v", expectedRevIDX, utils.ToJSON(indexes))
// }
}
func testV1FIdxCaUpdateResourceProfileFromTP(t *testing.T) {
@@ -1643,20 +1393,6 @@ func testV1FIdxCaUpdateResourceProfileFromTP(t *testing.T) {
} else if result != "ResGroup1" {
t.Error("Unexpected reply returned", result)
}
fldNameVal2 := map[string]string{"ResGroup1": ""}
expectedRevIDX := map[string]utils.StringMap{
"ResGroup1": {
"*string:Account:1002": true,
"*string:Destination:1002": true,
"*string:Subject:1001": true}}
if indexes, err = onStor.GetFilterReverseIndexes(
utils.PrefixToRevIndexCache[utils.ResourceProfilesPrefix],
"cgrates.org", fldNameVal2); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedRevIDX, indexes) {
t.Errorf("Expecting: %+v, received: %+v", expectedRevIDX, utils.ToJSON(indexes))
}
}
func testV1FIdxCaRemoveResourceProfile(t *testing.T) {
@@ -1722,13 +1458,6 @@ func testV1FIdxCaRemoveResourceProfile(t *testing.T) {
err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
fldNameVals2 := map[string]string{"ResGroup1": "", "TEST_PROFILE1": ""}
if _, err = onStor.GetFilterReverseIndexes(
utils.PrefixToIndexCache[utils.ThresholdProfilePrefix], "cgrates.org",
fldNameVals2); err != nil && err != utils.ErrNotFound {
t.Error(err)
}
}
func testV1FIdxCaStopEngine(t *testing.T) {