mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 10:06:24 +05:00
add tests for resourceS
This commit is contained in:
committed by
Dan Christian Bogos
parent
1c2aac5547
commit
a106f7eb6f
@@ -3747,3 +3747,252 @@ func TestResourceMatchingResourcesForEventWeightFromDynamicsErr(t *testing.T) {
|
||||
}
|
||||
|
||||
}
|
||||
func TestStoreMatchedResourcesStoreIntervalZero(t *testing.T) {
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
cfg.ResourceSCfg().StoreInterval = 0
|
||||
|
||||
data, _ := engine.NewInternalDB(nil, nil, nil, cfg.DbCfg().Items)
|
||||
dbCM := engine.NewDBConnManager(map[string]engine.DataDB{utils.MetaDefault: data}, cfg.DbCfg())
|
||||
dm := engine.NewDataManager(dbCM, cfg, nil)
|
||||
|
||||
rS := &ResourceS{
|
||||
dm: dm,
|
||||
cfg: cfg,
|
||||
storedResources: utils.NewStringSet(nil),
|
||||
}
|
||||
|
||||
dirty := true
|
||||
resources := Resources{
|
||||
{
|
||||
Resource: &utils.Resource{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "RES1",
|
||||
Usages: map[string]*utils.ResourceUsage{},
|
||||
},
|
||||
dirty: &dirty,
|
||||
},
|
||||
}
|
||||
|
||||
err := rS.storeMatchedResources(context.Background(), resources)
|
||||
if err != nil {
|
||||
t.Errorf("Expected nil error, got: %v", err)
|
||||
}
|
||||
|
||||
if !*resources[0].dirty {
|
||||
t.Error("Expected dirty flag to remain true when StoreInterval is 0")
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoreMatchedResourcesStoreIntervalPositive(t *testing.T) {
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
cfg.ResourceSCfg().StoreInterval = 10 * time.Second
|
||||
|
||||
data, _ := engine.NewInternalDB(nil, nil, nil, cfg.DbCfg().Items)
|
||||
dbCM := engine.NewDBConnManager(map[string]engine.DataDB{utils.MetaDefault: data}, cfg.DbCfg())
|
||||
dm := engine.NewDataManager(dbCM, cfg, nil)
|
||||
|
||||
rS := &ResourceS{
|
||||
dm: dm,
|
||||
cfg: cfg,
|
||||
storedResources: utils.NewStringSet(nil),
|
||||
}
|
||||
|
||||
dirty := true
|
||||
resources := Resources{
|
||||
{
|
||||
Resource: &utils.Resource{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "RES1",
|
||||
Usages: map[string]*utils.ResourceUsage{},
|
||||
},
|
||||
dirty: &dirty,
|
||||
},
|
||||
{
|
||||
Resource: &utils.Resource{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "RES2",
|
||||
Usages: map[string]*utils.ResourceUsage{},
|
||||
},
|
||||
dirty: &dirty,
|
||||
},
|
||||
}
|
||||
|
||||
err := rS.storeMatchedResources(context.Background(), resources)
|
||||
if err != nil {
|
||||
t.Errorf("Expected nil error, got: %v", err)
|
||||
}
|
||||
|
||||
if !*resources[0].dirty {
|
||||
t.Error("Expected dirty flag to be true for RES1")
|
||||
}
|
||||
if !*resources[1].dirty {
|
||||
t.Error("Expected dirty flag to be true for RES2")
|
||||
}
|
||||
|
||||
if !rS.storedResources.Has("cgrates.org:RES1") {
|
||||
t.Error("Expected RES1 to be in storedResources set")
|
||||
}
|
||||
if !rS.storedResources.Has("cgrates.org:RES2") {
|
||||
t.Error("Expected RES2 to be in storedResources set")
|
||||
}
|
||||
|
||||
if rS.storedResources.Size() != 2 {
|
||||
t.Errorf("Expected 2 resources in set, got: %d", rS.storedResources.Size())
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoreMatchedResourcesStoreIntervalNegative(t *testing.T) {
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
cfg.ResourceSCfg().StoreInterval = -1
|
||||
|
||||
data, _ := engine.NewInternalDB(nil, nil, nil, cfg.DbCfg().Items)
|
||||
dbCM := engine.NewDBConnManager(map[string]engine.DataDB{utils.MetaDefault: data}, cfg.DbCfg())
|
||||
dm := engine.NewDataManager(dbCM, cfg, nil)
|
||||
|
||||
rS := &ResourceS{
|
||||
dm: dm,
|
||||
cfg: cfg,
|
||||
storedResources: utils.NewStringSet(nil),
|
||||
}
|
||||
|
||||
dirty := true
|
||||
resources := Resources{
|
||||
{
|
||||
Resource: &utils.Resource{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "RES1",
|
||||
Usages: map[string]*utils.ResourceUsage{},
|
||||
},
|
||||
dirty: &dirty,
|
||||
rPrf: &resourceProfile{
|
||||
ResourceProfile: &utils.ResourceProfile{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "RES1",
|
||||
Limit: 10,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
err := rS.storeMatchedResources(context.Background(), resources)
|
||||
if err != nil {
|
||||
t.Errorf("Expected nil error, got: %v", err)
|
||||
}
|
||||
|
||||
savedRes, err := dm.GetResource(context.Background(), "cgrates.org", "RES1", false, false, "")
|
||||
if err != nil {
|
||||
t.Errorf("Expected resource to be stored in database, got error: %v", err)
|
||||
}
|
||||
if savedRes == nil {
|
||||
t.Error("Expected resource to be stored in database")
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoreMatchedResourcesNoDirtyFlag(t *testing.T) {
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
cfg.ResourceSCfg().StoreInterval = -1
|
||||
|
||||
data, _ := engine.NewInternalDB(nil, nil, nil, cfg.DbCfg().Items)
|
||||
dbCM := engine.NewDBConnManager(map[string]engine.DataDB{utils.MetaDefault: data}, cfg.DbCfg())
|
||||
dm := engine.NewDataManager(dbCM, cfg, nil)
|
||||
|
||||
rS := &ResourceS{
|
||||
dm: dm,
|
||||
cfg: cfg,
|
||||
storedResources: utils.NewStringSet(nil),
|
||||
}
|
||||
|
||||
resources := Resources{
|
||||
{
|
||||
Resource: &utils.Resource{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "RES1",
|
||||
Usages: map[string]*utils.ResourceUsage{},
|
||||
},
|
||||
dirty: nil,
|
||||
},
|
||||
}
|
||||
|
||||
err := rS.storeMatchedResources(context.Background(), resources)
|
||||
if err != nil {
|
||||
t.Errorf("Expected nil error, got: %v", err)
|
||||
}
|
||||
|
||||
_, err = dm.GetResource(context.Background(), "cgrates.org", "RES1", false, false, "")
|
||||
if err == nil {
|
||||
t.Error("Expected resource with nil dirty flag not to be stored")
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoreMatchedResourcesWithUsages(t *testing.T) {
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
cfg.ResourceSCfg().StoreInterval = -1
|
||||
|
||||
data, _ := engine.NewInternalDB(nil, nil, nil, cfg.DbCfg().Items)
|
||||
dbCM := engine.NewDBConnManager(map[string]engine.DataDB{utils.MetaDefault: data}, cfg.DbCfg())
|
||||
dm := engine.NewDataManager(dbCM, cfg, nil)
|
||||
|
||||
rS := &ResourceS{
|
||||
dm: dm,
|
||||
cfg: cfg,
|
||||
storedResources: utils.NewStringSet(nil),
|
||||
}
|
||||
|
||||
dirty := true
|
||||
resources := Resources{
|
||||
{
|
||||
Resource: &utils.Resource{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "RES1",
|
||||
Usages: map[string]*utils.ResourceUsage{
|
||||
"USAGE1": {
|
||||
Tenant: "cgrates.org",
|
||||
ID: "USAGE1",
|
||||
ExpiryTime: time.Now().Add(1 * time.Hour),
|
||||
Units: 5,
|
||||
},
|
||||
"USAGE2": {
|
||||
Tenant: "cgrates.org",
|
||||
ID: "USAGE2",
|
||||
ExpiryTime: time.Now().Add(2 * time.Hour),
|
||||
Units: 3,
|
||||
},
|
||||
},
|
||||
TTLIdx: []string{"USAGE1", "USAGE2"},
|
||||
},
|
||||
dirty: &dirty,
|
||||
rPrf: &resourceProfile{
|
||||
ResourceProfile: &utils.ResourceProfile{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "RES1",
|
||||
Limit: 10,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
err := rS.storeMatchedResources(context.Background(), resources)
|
||||
if err != nil {
|
||||
t.Errorf("Expected nil error, got: %v", err)
|
||||
}
|
||||
|
||||
savedRes, err := dm.GetResource(context.Background(), "cgrates.org", "RES1", false, false, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Expected resource to be stored, got error: %v", err)
|
||||
}
|
||||
|
||||
if len(savedRes.Usages) != 2 {
|
||||
t.Errorf("Expected 2 usages, got: %d", len(savedRes.Usages))
|
||||
}
|
||||
if _, exists := savedRes.Usages["USAGE1"]; !exists {
|
||||
t.Error("Expected USAGE1 to be stored")
|
||||
}
|
||||
if _, exists := savedRes.Usages["USAGE2"]; !exists {
|
||||
t.Error("Expected USAGE2 to be stored")
|
||||
}
|
||||
|
||||
if len(savedRes.TTLIdx) != 2 {
|
||||
t.Errorf("Expected 2 TTL indexes, got: %d", len(savedRes.TTLIdx))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user