mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-20 06:38:45 +05:00
add slices.compact for filterids on chargers
This commit is contained in:
committed by
Dan Christian Bogos
parent
e94628a482
commit
0d7c5666e8
@@ -225,6 +225,7 @@ cgrates.org,Charger1,*string:~*req.Account:1001,;20,;true,,
|
||||
cgrates.org,Charger1,,,,*rated,ATTR_1001_SIMPLEAUTH
|
||||
cgrates.org,Charger2,,,,*rated,ATTR_1002_SIMPLEAUTH
|
||||
cgrates.org,Charger2,*string:~*req.Account:1002,;15,;false,,
|
||||
cgrates.org,Charger3,*string:~*req.Account:1001;*string:~*req.Account:1001;*string:~*req.Account:1002;*string:~*req.Account:1001;*string:~*req.Account:1003,;10,;false,*rated,ATTR_TEST
|
||||
`); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -709,7 +710,6 @@ func testLoadersGetAttributeProfiles(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func testLoadersGetChargerProfiles(t *testing.T) {
|
||||
expChrgs := []*utils.ChargerProfile{
|
||||
{
|
||||
@@ -746,6 +746,28 @@ func testLoadersGetChargerProfiles(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "Charger3",
|
||||
FilterIDs: []string{
|
||||
"*string:~*req.Account:1001",
|
||||
"*string:~*req.Account:1002",
|
||||
"*string:~*req.Account:1001",
|
||||
"*string:~*req.Account:1003",
|
||||
},
|
||||
RunID: "*rated",
|
||||
AttributeIDs: []string{"ATTR_TEST"},
|
||||
Weights: utils.DynamicWeights{
|
||||
{
|
||||
Weight: 10,
|
||||
},
|
||||
},
|
||||
Blockers: utils.DynamicBlockers{
|
||||
{
|
||||
Blocker: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
var chrgs []*utils.ChargerProfile
|
||||
if err := ldrRPC.Call(context.Background(), utils.AdminSv1GetChargerProfiles,
|
||||
|
||||
@@ -102,7 +102,9 @@ func setToDB(ctx *context.Context, dm *engine.DataManager, lType string, data pr
|
||||
case utils.MetaRoutes:
|
||||
return dm.SetRouteProfile(ctx, data.(*utils.RouteProfile), withIndex)
|
||||
case utils.MetaChargers:
|
||||
return dm.SetChargerProfile(ctx, data.(*utils.ChargerProfile), withIndex)
|
||||
cp := data.(*utils.ChargerProfile)
|
||||
cp.FilterIDs = slices.Compact(cp.FilterIDs)
|
||||
return dm.SetChargerProfile(ctx, cp, withIndex)
|
||||
case utils.MetaRateProfiles:
|
||||
rpl := data.(*utils.RateProfile)
|
||||
rpl.FilterIDs = slices.Compact(rpl.FilterIDs)
|
||||
|
||||
@@ -1476,3 +1476,73 @@ func TestSetToDBRateProfileDuplicateSequentialFilterIDs(t *testing.T) {
|
||||
t.Errorf("Expected FilterIDs in DB: %v, received: %v", expectedFilterIDs, retrieved.FilterIDs)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetToDBChargerProfileDuplicateSequentialFilterIDs(t *testing.T) {
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
idb, err := engine.NewInternalDB(nil, nil, nil, cfg.DbCfg().Items)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
dbCM := engine.NewDBConnManager(map[string]engine.DataDB{utils.MetaDefault: idb}, cfg.DbCfg())
|
||||
dm := engine.NewDataManager(dbCM, cfg, nil)
|
||||
|
||||
cp := &utils.ChargerProfile{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "cp1",
|
||||
FilterIDs: []string{
|
||||
"*string:~*req.Account:1001", "*string:~*req.Account:1001",
|
||||
"*string:~*req.Subject:1002", "*string:~*req.Subject:1002", "*string:~*req.Subject:1002",
|
||||
"*string:~*req.Destination:1001",
|
||||
},
|
||||
RunID: "*rated",
|
||||
AttributeIDs: []string{"ATTR_TEST"},
|
||||
Weights: utils.DynamicWeights{
|
||||
{
|
||||
Weight: 20,
|
||||
},
|
||||
},
|
||||
Blockers: utils.DynamicBlockers{
|
||||
{
|
||||
Blocker: false,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
if len(cp.FilterIDs) != 6 {
|
||||
t.Fatalf("Expected 6 FilterIDs before setToDB, got %d", len(cp.FilterIDs))
|
||||
}
|
||||
|
||||
if err := setToDB(context.Background(), dm, utils.MetaChargers, cp, true, false); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
expectedFilterIDs := []string{
|
||||
"*string:~*req.Account:1001",
|
||||
"*string:~*req.Subject:1002",
|
||||
"*string:~*req.Destination:1001",
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(cp.FilterIDs, expectedFilterIDs) {
|
||||
t.Errorf("Expected FilterIDs after setToDB: %v, received: %v", expectedFilterIDs, cp.FilterIDs)
|
||||
}
|
||||
|
||||
if len(cp.FilterIDs) != 3 {
|
||||
t.Errorf("Expected 3 FilterIDs after compacting, got %d", len(cp.FilterIDs))
|
||||
}
|
||||
|
||||
retrieved, err := dm.GetChargerProfile(
|
||||
context.Background(),
|
||||
"cgrates.org",
|
||||
"cp1",
|
||||
true,
|
||||
true,
|
||||
utils.NonTransactional,
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(retrieved.FilterIDs, expectedFilterIDs) {
|
||||
t.Errorf("Expected FilterIDs in DB: %v, received: %v", expectedFilterIDs, retrieved.FilterIDs)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user