mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-19 22:28:45 +05:00
Remove reverse filter indexes
This commit is contained in:
@@ -110,6 +110,8 @@ func (api *APIerSv1) GetFilterIndexes(arg AttrGetFilterIndexes, reply *[]string)
|
||||
}
|
||||
arg.ItemType = utils.AttributeProfilePrefix
|
||||
key = utils.ConcatenatedKey(arg.Tenant, arg.Context)
|
||||
case utils.CacheReverseFilterIndexes:
|
||||
arg.ItemType = utils.ReverseFilterIndexes
|
||||
}
|
||||
if indexes, err = api.DataManager.GetFilterIndexes(
|
||||
utils.PrefixToIndexCache[arg.ItemType], key, "", nil); err != nil {
|
||||
|
||||
@@ -2195,6 +2195,10 @@ func (dm *DataManager) RemoveChargerProfile(tenant, id string,
|
||||
tenant).RemoveItemFromIndex(tenant, id, oldCpp.FilterIDs); err != nil {
|
||||
return
|
||||
}
|
||||
if err = removeReverseFilterIndexForFilter(dm, utils.CacheChargerFilterIndexes, utils.EmptyString,
|
||||
oldCpp.Tenant, oldCpp.ID, oldCpp.FilterIDs); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
if config.CgrConfig().DataDbCfg().Items[utils.MetaChargerProfiles].Replicate {
|
||||
var reply string
|
||||
|
||||
@@ -19,7 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
package engine
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/cgrates/cgrates/config"
|
||||
@@ -48,7 +47,6 @@ func addReverseFilterIndexForFilter(dm *DataManager, idxItmType, ctx, tnt,
|
||||
var indexes map[string]utils.StringMap
|
||||
if indexes, err = dm.GetFilterIndexes(utils.PrefixToIndexCache[utils.ReverseFilterIndexes], tntFltrID,
|
||||
utils.EmptyString, nil); err != nil {
|
||||
utils.Logger.Crit(fmt.Sprintf("err: %v", err))
|
||||
if err != utils.ErrNotFound {
|
||||
guardian.Guardian.UnguardIDs(refID)
|
||||
return
|
||||
@@ -95,14 +93,14 @@ func removeReverseFilterIndexForFilter(dm *DataManager, idxItmType, ctx, tnt, it
|
||||
err = nil
|
||||
continue // already removed
|
||||
}
|
||||
|
||||
delete(indexes[idxItmType], itemID) // delete index from map
|
||||
|
||||
indexerKey := tnt
|
||||
indexerKey := utils.ConcatenatedKey(tnt, fltrID)
|
||||
if ctx != utils.EmptyString {
|
||||
indexerKey = utils.ConcatenatedKey(tnt, ctx)
|
||||
}
|
||||
fltrIndexer := NewFilterIndexer(dm, utils.ReverseFilterIndexes, indexerKey)
|
||||
fltrIndexer.indexes = indexes
|
||||
if err = fltrIndexer.StoreIndexes(true, utils.NonTransactional); err != nil {
|
||||
guardian.Guardian.UnguardIDs(refID)
|
||||
return
|
||||
|
||||
@@ -111,7 +111,10 @@ var (
|
||||
testFilterIndexesCasesComputeChargersIndexes,
|
||||
testFilterIndexesCasesGetChargerIndexesChanged,
|
||||
|
||||
testFilterIndexesCasesGetReverseFilterIndexes,
|
||||
testFilterIndexesCasesGetReverseFilterIndexes, // for chargers
|
||||
testFilterIndexesCasesRemoveChargerProfile,
|
||||
testFilterIndexesCasesGetIndexesAfterRemove,
|
||||
testFilterIndexesCasesGetReverseIndexesAfterRemove,
|
||||
|
||||
testFilterIndexesCasesStopEngine,
|
||||
}
|
||||
@@ -659,16 +662,12 @@ func testFilterIndexesCasesGetChargerIndexesChanged(t *testing.T) {
|
||||
|
||||
func testFilterIndexesCasesGetReverseFilterIndexes(t *testing.T) {
|
||||
arg := &v1.AttrGetFilterIndexes{
|
||||
Tenant: "cgrates.org",
|
||||
Tenant: "cgrates.org:FLTR_Charger",
|
||||
ItemType: utils.CacheReverseFilterIndexes,
|
||||
}
|
||||
expectedIndexes := []string{
|
||||
/* "*string:~*req.Account:12345:ChrgerIndexable",
|
||||
"*string:~*req.Account:12345:ChrgerIndexable222",
|
||||
"*prefix:~*req.SetupTime:2022:ChrgerIndexable",
|
||||
"*string:~*req.Destination:1443:ChrgerIndexable",
|
||||
"*string:~*req.RequestType:*none:ChrgerIndexable",
|
||||
"*string:~*req.RequestType:*none:ChrgerIndexable222", */
|
||||
"*charger_filter_indexes:ChrgerIndexable",
|
||||
"*charger_filter_indexes:ChrgerIndexable222",
|
||||
}
|
||||
sort.Strings(expectedIndexes)
|
||||
var reply []string
|
||||
@@ -677,6 +676,110 @@ func testFilterIndexesCasesGetReverseFilterIndexes(t *testing.T) {
|
||||
} else if sort.Strings(reply); !reflect.DeepEqual(expectedIndexes, reply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(expectedIndexes), utils.ToJSON(reply))
|
||||
}
|
||||
|
||||
arg = &v1.AttrGetFilterIndexes{
|
||||
Tenant: "cgrates.org:FLTR_Charger4564",
|
||||
ItemType: utils.CacheReverseFilterIndexes,
|
||||
}
|
||||
expectedIndexes = []string{
|
||||
"*charger_filter_indexes:ChrgerIndexable",
|
||||
"*charger_filter_indexes:ChrgerIndexable222",
|
||||
}
|
||||
sort.Strings(expectedIndexes)
|
||||
if err := fIdxCasesRPC.Call(utils.APIerSv1GetFilterIndexes, arg, &reply); err != nil {
|
||||
t.Error(err)
|
||||
} else if sort.Strings(reply); !reflect.DeepEqual(expectedIndexes, reply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(expectedIndexes), utils.ToJSON(reply))
|
||||
}
|
||||
|
||||
arg = &v1.AttrGetFilterIndexes{
|
||||
Tenant: "cgrates.org:FLTR_Charger12312",
|
||||
ItemType: utils.CacheReverseFilterIndexes,
|
||||
}
|
||||
expectedIndexes = []string{
|
||||
"*charger_filter_indexes:ChrgerIndexable",
|
||||
}
|
||||
sort.Strings(expectedIndexes)
|
||||
if err := fIdxCasesRPC.Call(utils.APIerSv1GetFilterIndexes, arg, &reply); err != nil {
|
||||
t.Error(err)
|
||||
} else if sort.Strings(reply); !reflect.DeepEqual(expectedIndexes, reply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(expectedIndexes), utils.ToJSON(reply))
|
||||
}
|
||||
}
|
||||
|
||||
func testFilterIndexesCasesRemoveChargerProfile(t *testing.T) {
|
||||
var resp string
|
||||
if err := fIdxCasesRPC.Call(utils.APIerSv1RemoveChargerProfile,
|
||||
&utils.TenantID{Tenant: "cgrates.org", ID: "ChrgerIndexable222"}, &resp); err != nil {
|
||||
t.Error(err)
|
||||
} else if resp != utils.OK {
|
||||
t.Error("Unexpected reply returned", resp)
|
||||
}
|
||||
}
|
||||
|
||||
func testFilterIndexesCasesGetIndexesAfterRemove(t *testing.T) {
|
||||
arg := &v1.AttrGetFilterIndexes{
|
||||
Tenant: "cgrates.org",
|
||||
ItemType: utils.MetaChargers,
|
||||
}
|
||||
expectedIndexes := []string{
|
||||
"*string:~*req.Account:12345:ChrgerIndexable",
|
||||
"*prefix:~*req.SetupTime:2022:ChrgerIndexable",
|
||||
"*string:~*req.Destination:1443:ChrgerIndexable",
|
||||
"*string:~*req.RequestType:*none:ChrgerIndexable",
|
||||
}
|
||||
sort.Strings(expectedIndexes)
|
||||
var reply []string
|
||||
if err := fIdxCasesRPC.Call(utils.APIerSv1GetFilterIndexes, arg, &reply); err != nil {
|
||||
t.Error(err)
|
||||
} else if sort.Strings(reply); !reflect.DeepEqual(expectedIndexes, reply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(expectedIndexes), utils.ToJSON(reply))
|
||||
}
|
||||
}
|
||||
|
||||
func testFilterIndexesCasesGetReverseIndexesAfterRemove(t *testing.T) {
|
||||
arg := &v1.AttrGetFilterIndexes{
|
||||
Tenant: "cgrates.org:FLTR_Charger",
|
||||
ItemType: utils.CacheReverseFilterIndexes,
|
||||
}
|
||||
expectedIndexes := []string{
|
||||
"*charger_filter_indexes:ChrgerIndexable",
|
||||
}
|
||||
sort.Strings(expectedIndexes)
|
||||
var reply []string
|
||||
if err := fIdxCasesRPC.Call(utils.APIerSv1GetFilterIndexes, arg, &reply); err != nil {
|
||||
t.Error(err)
|
||||
} else if sort.Strings(reply); !reflect.DeepEqual(expectedIndexes, reply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(expectedIndexes), utils.ToJSON(reply))
|
||||
}
|
||||
|
||||
arg = &v1.AttrGetFilterIndexes{
|
||||
Tenant: "cgrates.org:FLTR_Charger4564",
|
||||
ItemType: utils.CacheReverseFilterIndexes,
|
||||
}
|
||||
expectedIndexes = []string{
|
||||
"*charger_filter_indexes:ChrgerIndexable",
|
||||
}
|
||||
sort.Strings(expectedIndexes)
|
||||
if err := fIdxCasesRPC.Call(utils.APIerSv1GetFilterIndexes, arg, &reply); err != nil {
|
||||
t.Error(err)
|
||||
} else if sort.Strings(reply); !reflect.DeepEqual(expectedIndexes, reply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(expectedIndexes), utils.ToJSON(reply))
|
||||
}
|
||||
|
||||
arg = &v1.AttrGetFilterIndexes{
|
||||
Tenant: "cgrates.org:FLTR_Charger12312",
|
||||
ItemType: utils.CacheReverseFilterIndexes,
|
||||
}
|
||||
expectedIndexes = []string{
|
||||
"*charger_filter_indexes:ChrgerIndexable",
|
||||
}
|
||||
sort.Strings(expectedIndexes)
|
||||
if err := fIdxCasesRPC.Call(utils.APIerSv1GetFilterIndexes, arg, &reply); err != nil {
|
||||
t.Error(err)
|
||||
} else if sort.Strings(reply); !reflect.DeepEqual(expectedIndexes, reply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(expectedIndexes), utils.ToJSON(reply))
|
||||
}
|
||||
}
|
||||
|
||||
func testFilterIndexesCasesStopEngine(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user