From f72ff28fd71f009b329f9d1a3c7de79c4f3e729e Mon Sep 17 00:00:00 2001 From: adi Date: Mon, 28 Nov 2022 18:05:14 +0200 Subject: [PATCH] Indexes when fltr is overwritten --- general_tests/filter_indexes_cases_it_test.go | 121 +++++++++++++++++- 1 file changed, 120 insertions(+), 1 deletion(-) diff --git a/general_tests/filter_indexes_cases_it_test.go b/general_tests/filter_indexes_cases_it_test.go index 2ae54b5a7..c76407ace 100644 --- a/general_tests/filter_indexes_cases_it_test.go +++ b/general_tests/filter_indexes_cases_it_test.go @@ -100,9 +100,15 @@ var ( testFilterIndexesCasesSetDifferentFilters, testFilterIndexesCasesOverwriteAttributes, - testFilterIndexesCasesGetIndexesAnyContextChanged, + //testFilterIndexesCasesGetIndexesAnyContextChanged, testFilterIndexesCasesGetIndexesSessionsContextChanged, + testFilterIndexesCasesSetIndexedFilter, + testFilterIndexesCasesSetChargerWithFltr, + testFilterIndexesCasesGetChargerIndexes, + testFilterIndexesCasesOverwriteFilterForCharger, + testFilterIndexesCasesGetChargerIndexesChanged, + testFilterIndexesCasesStopEngine, } ) @@ -427,6 +433,119 @@ func testFilterIndexesCasesGetIndexesSessionsContextChanged(t *testing.T) { } } +func testFilterIndexesCasesSetIndexedFilter(t *testing.T) { + filter1 = &v1.FilterWithCache{ + Filter: &engine.Filter{ + Tenant: "cgrates.org", + ID: "FLTR_Charger", + Rules: []*engine.FilterRule{ + { + Type: utils.MetaString, + Element: "~*req.CGRID", + Values: []string{"tester_id"}, + }, + { + Type: utils.MetaPrefix, + Element: "~*req.AnswerTime", + Values: []string{"2022"}, + }, + { + Type: utils.MetaSuffix, + Element: "~*req.AnswerTime", + Values: []string{"202"}, + }, + }, + }, + } + var result string + if err := fIdxCasesRPC.Call(utils.APIerSv1SetFilter, filter1, &result); err != nil { + t.Error(err) + } else if result != utils.OK { + t.Error("Unexpected reply returned", result) + } +} + +func testFilterIndexesCasesSetChargerWithFltr(t *testing.T) { + chargerProfile := &v1.ChargerWithCache{ + ChargerProfile: &engine.ChargerProfile{ + Tenant: "cgrates.org", + ID: "ChrgerIndexable", + FilterIDs: []string{"FLTR_Charger"}, + RunID: utils.MetaRaw, + AttributeIDs: []string{"ATTR_FLTR1"}, + Weight: 20, + }, + } + var result string + if err := fIdxCasesRPC.Call(utils.APIerSv1SetChargerProfile, chargerProfile, &result); err != nil { + t.Error(err) + } else if result != utils.OK { + t.Error("Unexpected reply returned", result) + } +} + +func testFilterIndexesCasesGetChargerIndexes(t *testing.T) { + arg := &v1.AttrGetFilterIndexes{ + Tenant: "cgrates.org", + ItemType: utils.MetaChargers, + } + expectedIndexes := []string{ + "*string:~*req.CGRID:tester_id:ChrgerIndexable", + "*prefix:~*req.AnswerTime:2022: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 testFilterIndexesCasesOverwriteFilterForCharger(t *testing.T) { + filter1 = &v1.FilterWithCache{ + Filter: &engine.Filter{ + Tenant: "cgrates.org", + ID: "FLTR_Charger", + Rules: []*engine.FilterRule{ + { + Type: utils.MetaString, + Element: "~*req.Account", + Values: []string{"12345"}, + }, + { + Type: utils.MetaLessOrEqual, + Element: "~*req.ProcessRuns", + Values: []string{"1"}, + }, + }, + }, + } + var result string + if err := fIdxCasesRPC.Call(utils.APIerSv1SetFilter, filter1, &result); err != nil { + t.Error(err) + } else if result != utils.OK { + t.Error("Unexpected reply returned", result) + } +} + +func testFilterIndexesCasesGetChargerIndexesChanged(t *testing.T) { + arg := &v1.AttrGetFilterIndexes{ + Tenant: "cgrates.org", + ItemType: utils.MetaChargers, + } + expectedIndexes := []string{ + "*string:~*req.Account:12345: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 testFilterIndexesCasesStopEngine(t *testing.T) { if err := engine.KillEngine(100); err != nil { t.Error(err)