Resource indexing usage on ID instead of TenantID

This commit is contained in:
DanB
2017-09-16 08:33:11 +02:00
parent f16ef66443
commit 26efe5456e
5 changed files with 31 additions and 22 deletions

View File

@@ -71,12 +71,14 @@ func TestRsV1ITMySQL(t *testing.T) {
}
}
/*
func TestRsV1ITMongo(t *testing.T) {
rlsV1ConfDIR = "tutmongo"
for _, stest := range sTestsRLSV1 {
t.Run(rlsV1ConfDIR, stest)
}
}
*/
func testV1RsLoadConfig(t *testing.T) {
var err error

View File

@@ -196,7 +196,7 @@ func testOnStorITSetReqFilterIndexes(t *testing.T) {
},
},
}
if err := onStor.SetReqFilterIndexes(utils.ResourceProfilesIndex, idxes); err != nil {
if err := onStor.SetReqFilterIndexes(utils.ResourceProfilesStringIndex, idxes); err != nil {
t.Error(err)
}
}
@@ -227,7 +227,7 @@ func testOnStorITGetReqFilterIndexes(t *testing.T) {
},
},
}
if idxes, err := onStor.GetReqFilterIndexes(utils.ResourceProfilesIndex); err != nil {
if idxes, err := onStor.GetReqFilterIndexes(utils.ResourceProfilesStringIndex); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(eIdxes, idxes) {
t.Errorf("Expecting: %+v, received: %+v", eIdxes, idxes)
@@ -242,12 +242,12 @@ func testOnStorITMatchReqFilterIndex(t *testing.T) {
"RL1": true,
"RL2": true,
}
if rcvMp, err := onStor.MatchReqFilterIndex(utils.ResourceProfilesIndex, "Account", "1002"); err != nil {
if rcvMp, err := onStor.MatchReqFilterIndex(utils.ResourceProfilesStringIndex, "Account", "1002"); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(eMp, rcvMp) {
t.Errorf("Expecting: %+v, received: %+v", eMp, rcvMp)
}
if _, err := onStor.MatchReqFilterIndex(utils.ResourceProfilesIndex, "NonexistentField", "1002"); err == nil || err != utils.ErrNotFound {
if _, err := onStor.MatchReqFilterIndex(utils.ResourceProfilesStringIndex, "NonexistentField", "1002"); err == nil || err != utils.ErrNotFound {
t.Error(err)
}
}

View File

@@ -136,10 +136,10 @@ func (r *Resource) totalUsage() (tU float64) {
// recordUsage records a new usage
func (r *Resource) recordUsage(ru *ResourceUsage) (err error) {
if _, hasID := r.Usages[ru.TenantID()]; hasID {
if _, hasID := r.Usages[ru.ID]; hasID {
return fmt.Errorf("duplicate resource usage with id: %s", ru.TenantID())
}
r.Usages[ru.TenantID()] = ru
r.Usages[ru.ID] = ru
if r.tUsage != nil {
*r.tUsage += ru.Units
}
@@ -147,12 +147,12 @@ func (r *Resource) recordUsage(ru *ResourceUsage) (err error) {
}
// clearUsage clears the usage for an ID
func (r *Resource) clearUsage(ruTntID string) (err error) {
ru, hasIt := r.Usages[ruTntID]
func (r *Resource) clearUsage(ruID string) (err error) {
ru, hasIt := r.Usages[ruID]
if !hasIt {
return fmt.Errorf("Cannot find usage record with id: %s", ruTntID)
return fmt.Errorf("cannot find usage record with id: %s", ruID)
}
delete(r.Usages, ruTntID)
delete(r.Usages, ruID)
if r.tUsage != nil {
*r.tUsage -= ru.Units
}
@@ -403,8 +403,7 @@ func (rS *ResourceService) matchingResourcesForEvent(tenant string, ev map[strin
guardian.Guardian.GuardIDs(config.CgrConfig().LockingTimeout, lockIDs...)
defer guardian.Guardian.UnguardIDs(lockIDs...)
for resName := range rIDs {
rTntID := utils.NewTenantID(resName)
rPrf, err := rS.dataDB.GetResourceProfile(rTntID.Tenant, rTntID.ID, false, utils.NonTransactional)
rPrf, err := rS.dataDB.GetResourceProfile(tenant, resName, false, utils.NonTransactional)
if err != nil {
if err == utils.ErrNotFound {
continue

View File

@@ -32,23 +32,27 @@ var (
rs Resources
)
func TestRSRecordUsage(t *testing.T) {
func TestRSRecordUsage1(t *testing.T) {
ru1 = &ResourceUsage{
Tenant: "cgrates.org",
ID: "RU1",
ExpiryTime: time.Date(2014, 7, 3, 13, 43, 0, 1, time.UTC),
Units: 2,
}
ru2 = &ResourceUsage{
Tenant: "cgrates.org",
ID: "RU2",
ExpiryTime: time.Date(2014, 7, 3, 13, 43, 0, 1, time.UTC),
Units: 2,
}
r1 = &Resource{
ID: "RL1",
Tenant: "cgrates.org",
ID: "RL1",
rPrf: &ResourceProfile{
ID: "RL1",
Tenant: "cgrates.org",
ID: "RL1",
Filters: []*RequestFilter{
&RequestFilter{
Type: MetaString,
@@ -83,13 +87,13 @@ func TestRSRecordUsage(t *testing.T) {
t.Error(err.Error())
} else {
if err := r1.recordUsage(ru1); err == nil {
t.Error("Duplicate ResourceUsage id should not be allowed")
t.Error("duplicate ResourceUsage id should not be allowed")
}
if _, found := r1.Usages[ru2.ID]; !found {
t.Error("ResourceUsage was not recorded")
}
if *r1.tUsage != 4 {
t.Errorf("Expecting: %+v, received: %+v", 4, r1.tUsage)
t.Errorf("expecting: %+v, received: %+v", 4, r1.tUsage)
}
}
@@ -126,7 +130,8 @@ func TestRSUsedUnits(t *testing.T) {
func TestRSRsort(t *testing.T) {
r2 = &Resource{
ID: "RL2",
Tenant: "cgrates.org",
ID: "RL2",
rPrf: &ResourceProfile{
ID: "RL2",
Filters: []*RequestFilter{
@@ -246,9 +251,11 @@ func TestRSAllocateResource(t *testing.T) {
// TestRSCacheSetGet assurace the presence of private params in cached resource
func TestRSCacheSetGet(t *testing.T) {
r := &Resource{
ID: "RL",
Tenant: "cgrates.org",
ID: "RL",
rPrf: &ResourceProfile{
ID: "RL",
Tenant: "cgrates.org",
ID: "RL",
Filters: []*RequestFilter{
&RequestFilter{
Type: MetaString,
@@ -273,6 +280,7 @@ func TestRSCacheSetGet(t *testing.T) {
},
Usages: map[string]*ResourceUsage{
"RU2": &ResourceUsage{
Tenant: "cgrates.org",
ID: "RU2",
ExpiryTime: time.Date(2014, 7, 3, 13, 43, 0, 1, time.UTC),
Units: 2,
@@ -281,7 +289,7 @@ func TestRSCacheSetGet(t *testing.T) {
tUsage: utils.Float64Pointer(2),
dirty: utils.BoolPointer(true),
}
key := utils.ResourcesPrefix + r.ID
key := utils.ResourcesPrefix + r.TenantID()
cache.Set(key, r, true, "")
if x, ok := cache.Get(key); !ok {
t.Error("not in cache")

View File

@@ -2074,7 +2074,7 @@ func (tpr *TpReader) WriteToDatabase(flush, verbose, disable_reverse bool) (err
if rl, err := APItoResource(tpRL, tpr.timezone); err != nil {
return err
} else {
rlIdxr.IndexFilters(rl.TenantID(), rl.Filters)
rlIdxr.IndexFilters(rl.ID, rl.Filters)
}
}
if verbose {