Merge remote-tracking branch 'origin/master'

This commit is contained in:
Tripon Alexandru-Ionut
2018-10-05 20:37:26 +03:00
16 changed files with 100 additions and 69 deletions

View File

@@ -105,7 +105,7 @@ func TestChargerPopulateChargerService(t *testing.T) {
t.Errorf("Error: %+v", err)
}
chargerSrv, err = NewChargerService(dmCharger,
&FilterS{dm: dmAtr, cfg: defaultCfg}, nil, defaultCfg)
&FilterS{dm: dmCharger, cfg: defaultCfg}, nil, defaultCfg)
if err != nil {
t.Errorf("Error: %+v", err)
}
@@ -176,7 +176,7 @@ func TestChargerSetChargerProfiles(t *testing.T) {
//verify each charger from cache
for _, cp := range cPPs {
if tempCp, err := dmCharger.GetChargerProfile(cp.Tenant, cp.ID,
true, true, utils.NonTransactional); err != nil {
true, false, utils.NonTransactional); err != nil {
t.Errorf("Error: %+v", err)
} else if !reflect.DeepEqual(cp, tempCp) {
t.Errorf("Expecting: %+v, received: %+v", cp, tempCp)
@@ -190,19 +190,15 @@ func TestChargerMatchingChargerProfilesForEvent(t *testing.T) {
t.Errorf("Error: %+v", err)
}
rcv, err := chargerSrv.matchingChargerProfilesForEvent(chargerEvents[0])
if err != nil {
if rcv, err := chargerSrv.matchingChargerProfilesForEvent(chargerEvents[0]); err != nil {
t.Errorf("Error: %+v", err)
}
if !reflect.DeepEqual(cPPs[0], rcv[0]) {
} else if !reflect.DeepEqual(cPPs[0], rcv[0]) {
t.Errorf("Expecting: %+v, received: %+v ", cPPs[0], rcv[0])
}
rcv, err = chargerSrv.matchingChargerProfilesForEvent(chargerEvents[1])
if err != nil {
if rcv, err := chargerSrv.matchingChargerProfilesForEvent(chargerEvents[1]); err != nil {
t.Errorf("Error: %+v", err)
}
if !reflect.DeepEqual(cPPs[1], rcv[0]) {
} else if !reflect.DeepEqual(cPPs[1], rcv[0]) {
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(cPPs[1]), utils.ToJSON(rcv))
}

View File

@@ -235,7 +235,7 @@ func (dm *DataManager) CacheDataFromDB(prfx string, ids []string, mustBeCached b
_, err = dm.GetThreshold(tntID.Tenant, tntID.ID, false, true, utils.NonTransactional)
case utils.FilterPrefix:
tntID := utils.NewTenantID(dataID)
_, err = dm.GetFilter(tntID.Tenant, tntID.ID, true, utils.NonTransactional)
_, err = dm.GetFilter(tntID.Tenant, tntID.ID, false, true, utils.NonTransactional)
case utils.SupplierProfilePrefix:
tntID := utils.NewTenantID(dataID)
_, err = dm.GetSupplierProfile(tntID.Tenant, tntID.ID, false, true, utils.NonTransactional)
@@ -310,10 +310,10 @@ func (dm *DataManager) RemoveStatQueue(tenant, id string, transactionID string)
}
// GetFilter returns
func (dm *DataManager) GetFilter(tenant, id string,
skipCache bool, transactionID string) (fltr *Filter, err error) {
func (dm *DataManager) GetFilter(tenant, id string, cacheRead, cacheWrite bool,
transactionID string) (fltr *Filter, err error) {
tntID := utils.ConcatenatedKey(tenant, id)
if !skipCache {
if cacheRead {
if x, ok := Cache.Get(utils.CacheFilters, tntID); ok {
if x == nil {
return nil, utils.ErrNotFound
@@ -324,17 +324,21 @@ func (dm *DataManager) GetFilter(tenant, id string,
if strings.HasPrefix(id, utils.Meta) {
fltr, err = NewFilterFromInline(tenant, id)
} else {
fltr, err = dm.dataDB.GetFilterDrv(tenant, id)
fltr, err = dm.DataDB().GetFilterDrv(tenant, id)
}
if err != nil {
if err == utils.ErrNotFound {
Cache.Set(utils.CacheFilters, tntID, nil, nil,
cacheCommit(transactionID), transactionID)
if cacheWrite {
Cache.Set(utils.CacheFilters, tntID, nil, nil,
cacheCommit(transactionID), transactionID)
}
}
return nil, err
}
Cache.Set(utils.CacheFilters, tntID, fltr, nil,
cacheCommit(transactionID), transactionID)
if cacheWrite {
Cache.Set(utils.CacheFilters, tntID, fltr, nil,
cacheCommit(transactionID), transactionID)
}
return
}

View File

@@ -224,7 +224,7 @@ func (rfi *FilterIndexer) RemoveItemFromIndex(tenant, itemID string, oldFilters
},
}
} else if fltr, err = rfi.dm.GetFilter(tenant, fltrID,
false, utils.NonTransactional); err != nil {
true, false, utils.NonTransactional); err != nil {
if err == utils.ErrNotFound {
err = fmt.Errorf("broken reference to filter: %+v for itemType: %+v and ID: %+v",
fltrID, rfi.itemType, itemID)
@@ -285,7 +285,7 @@ func createAndIndex(itemPrefix, tenant, context, itemID string, filterIDs []stri
},
}
} else if fltr, err = dm.GetFilter(tenant, fltrID,
false, utils.NonTransactional); err != nil {
true, false, utils.NonTransactional); err != nil {
if err == utils.ErrNotFound {
err = fmt.Errorf("broken reference to filter: %+v for itemType: %+v and ID: %+v",
fltrID, itemPrefix, itemID)

View File

@@ -85,7 +85,7 @@ func (fS *FilterS) Pass(tenant string, filterIDs []string,
}
for _, fltrID := range filterIDs {
f, err := fS.dm.GetFilter(tenant, fltrID,
false, utils.NonTransactional)
true, true, utils.NonTransactional)
if err != nil {
return false, err
}

View File

@@ -2283,7 +2283,7 @@ func testOnStorITFilter(t *testing.T) {
},
}
if _, rcvErr := onStor.GetFilter("cgrates.org", "Filter1",
false, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound {
true, false, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound {
t.Error(rcvErr)
}
if err := onStor.SetFilter(fp); err != nil {
@@ -2291,14 +2291,14 @@ func testOnStorITFilter(t *testing.T) {
}
//get from cache
if rcv, err := onStor.GetFilter("cgrates.org", "Filter1",
false, utils.NonTransactional); err != nil {
true, false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !(reflect.DeepEqual(fp, rcv)) {
t.Errorf("Expecting: %v, received: %v", fp, rcv)
}
//get from database
if rcv, err := onStor.GetFilter("cgrates.org", "Filter1",
true, utils.NonTransactional); err != nil {
false, false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !(reflect.DeepEqual(fp, rcv)) {
t.Errorf("Expecting: %v, received: %v", fp, rcv)
@@ -2328,14 +2328,14 @@ func testOnStorITFilter(t *testing.T) {
time.Sleep(sleepDelay)
//get from cache
if rcv, err := onStor.GetFilter("cgrates.org", "Filter1",
false, utils.NonTransactional); err != nil {
true, false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !(reflect.DeepEqual(fp, rcv)) {
t.Errorf("Expecting: %v, received: %v", fp, rcv)
}
//get from database
if rcv, err := onStor.GetFilter("cgrates.org", "Filter1",
true, utils.NonTransactional); err != nil {
false, false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !(reflect.DeepEqual(fp, rcv)) {
t.Errorf("Expecting: %v, received: %v", fp, rcv)
@@ -2345,12 +2345,12 @@ func testOnStorITFilter(t *testing.T) {
}
//check cache if removed
if _, rcvErr := onStor.GetFilter("cgrates.org", "Filter1",
false, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound {
true, false, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound {
t.Error(rcvErr)
}
//check database if removed
if _, rcvErr := onStor.GetFilter("cgrates.org", "Filter1",
true, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound {
false, false, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound {
t.Error(rcvErr)
}
}