Verify CacheConfig before Caching the data from db

This commit is contained in:
TeoV
2020-05-11 11:51:06 +03:00
committed by Dan Christian Bogos
parent e29541f5b2
commit bbefd7885e
4 changed files with 96 additions and 66 deletions

View File

@@ -63,10 +63,12 @@ const (
)
var (
sortedCfgSections = []string{GENERAL_JSN, RPCConnsJsonName, DATADB_JSN, STORDB_JSN, LISTEN_JSN, TlsCfgJson, HTTP_JSN, SCHEDULER_JSN, CACHE_JSN, FilterSjsn, RALS_JSN,
sortedCfgSections = []string{GENERAL_JSN, RPCConnsJsonName, DATADB_JSN, STORDB_JSN, LISTEN_JSN, TlsCfgJson, HTTP_JSN,
SCHEDULER_JSN, CACHE_JSN, FilterSjsn, RALS_JSN,
CDRS_JSN, CDRE_JSN, ERsJson, SessionSJson, AsteriskAgentJSN, FreeSWITCHAgentJSN, KamailioAgentJSN,
DA_JSN, RA_JSN, HttpAgentJson, DNSAgentJson, ATTRIBUTE_JSN, ChargerSCfgJson, RESOURCES_JSON, STATS_JSON, THRESHOLDS_JSON,
RouteSJson, LoaderJson, MAILER_JSN, SURETAX_JSON, CgrLoaderCfgJson, CgrMigratorCfgJson, DispatcherSJson, AnalyzerCfgJson, ApierS}
RouteSJson, LoaderJson, MAILER_JSN, SURETAX_JSON, CgrLoaderCfgJson, CgrMigratorCfgJson, DispatcherSJson,
AnalyzerCfgJson, ApierS, EEsJson}
)
// Loads the json config out of io.Reader, eg other sources than file, maybe over http

View File

@@ -207,6 +207,9 @@ func (dm *DataManager) CacheDataFromDB(prfx string, ids []string, mustBeCached b
utils.UnsupportedCachePrefix,
fmt.Sprintf("prefix <%s> is not a supported cache prefix", prfx))
}
if dm.cacheCfg.Partitions[utils.CachePrefixToInstance[prfx]].Limit == 0 {
return
}
if ids == nil {
keyIDs, err := dm.DataDB().GetKeysForPrefix(prfx)
if err != nil {

View File

@@ -92,7 +92,7 @@ func testLoaderITInitDataDB(t *testing.T) {
if err != nil {
t.Fatal("Error on dataDb connection: ", err.Error())
}
dataDbCsv = NewDataManager(dbConn, nil, nil)
dataDbCsv = NewDataManager(dbConn, lCfg.CacheCfg(), nil)
if err = dbConn.Flush(utils.EmptyString); err != nil {
t.Fatal("Error when flushing datadb")
}

View File

@@ -163,11 +163,14 @@ func testOnStorITCacheDestinations(t *testing.T) {
if err := onStor.CacheDataFromDB(utils.DESTINATION_PREFIX, []string{dst.Id}, false); err != nil {
t.Error(err)
}
if itm, hasIt := Cache.Get(utils.CacheDestinations, dst.Id); !hasIt {
t.Error("Did not cache")
} else if !reflect.DeepEqual(dst, itm.(*Destination)) {
t.Error("Wrong item in the cache")
if onStor.dataDB.GetStorageType() != utils.INTERNAL {
if itm, hasIt := Cache.Get(utils.CacheDestinations, dst.Id); !hasIt {
t.Error("Did not cache")
} else if !reflect.DeepEqual(dst, itm.(*Destination)) {
t.Error("Wrong item in the cache")
}
}
}
func testOnStorITCacheReverseDestinations(t *testing.T) {
@@ -183,11 +186,13 @@ func testOnStorITCacheReverseDestinations(t *testing.T) {
if err := onStor.CacheDataFromDB(utils.REVERSE_DESTINATION_PREFIX, dst.Prefixes, false); err != nil {
t.Error(err)
}
for _, prfx := range dst.Prefixes {
if itm, hasIt := Cache.Get(utils.CacheReverseDestinations, prfx); !hasIt {
t.Error("Did not cache")
} else if !reflect.DeepEqual([]string{dst.Id}, itm.([]string)) {
t.Error("Wrong item in the cache")
if onStor.dataDB.GetStorageType() != utils.INTERNAL {
for _, prfx := range dst.Prefixes {
if itm, hasIt := Cache.Get(utils.CacheReverseDestinations, prfx); !hasIt {
t.Error("Did not cache")
} else if !reflect.DeepEqual([]string{dst.Id}, itm.([]string)) {
t.Error("Wrong item in the cache")
}
}
}
}
@@ -242,10 +247,12 @@ func testOnStorITCacheActionPlan(t *testing.T) {
if err := onStor.CacheDataFromDB(utils.ACTION_PLAN_PREFIX, []string{ap.Id}, false); err != nil {
t.Error(err)
}
if itm, hasIt := Cache.Get(utils.CacheActionPlans, ap.Id); !hasIt {
t.Error("Did not cache")
} else if rcv := itm.(*ActionPlan); !reflect.DeepEqual(ap, rcv) {
t.Errorf("Expecting: %+v, received: %+v", ap, rcv)
if onStor.dataDB.GetStorageType() != utils.INTERNAL {
if itm, hasIt := Cache.Get(utils.CacheActionPlans, ap.Id); !hasIt {
t.Error("Did not cache")
} else if rcv := itm.(*ActionPlan); !reflect.DeepEqual(ap, rcv) {
t.Errorf("Expecting: %+v, received: %+v", ap, rcv)
}
}
if err := onStor.RemoveActionPlan(ap.Id, utils.NonTransactional); err != nil {
t.Error(err)
@@ -267,10 +274,12 @@ func testOnStorITCacheAccountActionPlans(t *testing.T) {
if err := onStor.CacheDataFromDB(utils.AccountActionPlansPrefix, []string{acntID}, false); err != nil {
t.Error(err)
}
if itm, hasIt := Cache.Get(utils.CacheAccountActionPlans, acntID); !hasIt {
t.Error("Did not cache")
} else if rcv := itm.([]string); !reflect.DeepEqual(aAPs, rcv) {
t.Errorf("Expecting: %+v, received: %+v", aAPs, rcv)
if onStor.dataDB.GetStorageType() != utils.INTERNAL {
if itm, hasIt := Cache.Get(utils.CacheAccountActionPlans, acntID); !hasIt {
t.Error("Did not cache")
} else if rcv := itm.([]string); !reflect.DeepEqual(aAPs, rcv) {
t.Errorf("Expecting: %+v, received: %+v", aAPs, rcv)
}
}
}
@@ -437,11 +446,13 @@ func testOnStorITRatingPlan(t *testing.T) {
if err := onStor.SetRatingPlan(rp, utils.NonTransactional); err != nil {
t.Error(err)
}
//get from cache
if rcv, err := onStor.GetRatingPlan(rp.Id, false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(rp, rcv) {
t.Errorf("Expecting: %v, received: %v", rp, rcv)
if onStor.dataDB.GetStorageType() != utils.INTERNAL {
//get from cache
if rcv, err := onStor.GetRatingPlan(rp.Id, false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(rp, rcv) {
t.Errorf("Expecting: %v, received: %v", rp, rcv)
}
}
//get from database
if rcv, err := onStor.GetRatingPlan(rp.Id, true, utils.NonTransactional); err != nil {
@@ -520,12 +531,14 @@ func testOnStorITRatingProfile(t *testing.T) {
if err := onStor.SetRatingProfile(rpf, utils.NonTransactional); err != nil {
t.Error(err)
}
//get from cache
if rcv, err := onStor.GetRatingProfile(rpf.Id, false,
utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(rpf, rcv) {
t.Errorf("Expecting: %v, received: %v", utils.ToJSON(rpf), utils.ToJSON(rcv))
if onStor.dataDB.GetStorageType() != utils.INTERNAL {
//get from cache
if rcv, err := onStor.GetRatingProfile(rpf.Id, false,
utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(rpf, rcv) {
t.Errorf("Expecting: %v, received: %v", utils.ToJSON(rpf), utils.ToJSON(rcv))
}
}
//get from database
@@ -554,12 +567,14 @@ func testOnStorITRatingProfile(t *testing.T) {
t.Error(err)
}
time.Sleep(sleepDelay)
//get from cache
if rcv, err := onStor.GetRatingProfile(rpf.Id, false,
utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(rpf, rcv) {
t.Errorf("Expecting: %v, received: %v", utils.ToJSON(rpf), utils.ToJSON(rcv))
if onStor.dataDB.GetStorageType() != utils.INTERNAL {
//get from cache
if rcv, err := onStor.GetRatingProfile(rpf.Id, false,
utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(rpf, rcv) {
t.Errorf("Expecting: %v, received: %v", utils.ToJSON(rpf), utils.ToJSON(rcv))
}
}
//get from database
if rcv, err := onStor.GetRatingProfile(rpf.Id, true,
@@ -733,12 +748,14 @@ func testOnStorITActions(t *testing.T) {
} else if rcv != true {
t.Errorf("Expecting: true, received: %v", rcv)
}
//get from cache
if rcv, err := onStor.GetActions(acts[0].Id,
false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(acts[0], rcv[0]) {
t.Errorf("Expecting: %v, received: %v", utils.ToJSON(acts[0]), utils.ToJSON(rcv[0]))
if onStor.dataDB.GetStorageType() != utils.INTERNAL {
//get from cache
if rcv, err := onStor.GetActions(acts[0].Id,
false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(acts[0], rcv[0]) {
t.Errorf("Expecting: %v, received: %v", utils.ToJSON(acts[0]), utils.ToJSON(rcv[0]))
}
}
//get from database
if rcv, err := onStor.GetActions(acts[0].Id,
@@ -837,12 +854,14 @@ func testOnStorITActions(t *testing.T) {
t.Error(err)
}
time.Sleep(sleepDelay)
//get from cache
if rcv, err := onStor.GetActions(acts[0].Id,
false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(acts[0], rcv[0]) {
t.Errorf("Expecting: %v, received: %v", utils.ToJSON(acts[0]), utils.ToJSON(rcv[0]))
if onStor.dataDB.GetStorageType() != utils.INTERNAL {
//get from cache
if rcv, err := onStor.GetActions(acts[0].Id,
false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(acts[0], rcv[0]) {
t.Errorf("Expecting: %v, received: %v", utils.ToJSON(acts[0]), utils.ToJSON(rcv[0]))
}
}
//get from database
if rcv, err := onStor.GetActions(acts[0].Id,
@@ -884,12 +903,14 @@ func testOnStorITSharedGroup(t *testing.T) {
if err := onStor.SetSharedGroup(sg, utils.NonTransactional); err != nil {
t.Error(err)
}
//get from cache
if rcv, err := onStor.GetSharedGroup(sg.Id, false,
utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(sg, rcv) {
t.Errorf("Expecting: %v, received: %v", sg, rcv)
if onStor.dataDB.GetStorageType() != utils.INTERNAL {
//get from cache
if rcv, err := onStor.GetSharedGroup(sg.Id, false,
utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(sg, rcv) {
t.Errorf("Expecting: %v, received: %v", sg, rcv)
}
}
//get from database
if rcv, err := onStor.GetSharedGroup(sg.Id, true,
@@ -912,12 +933,14 @@ func testOnStorITSharedGroup(t *testing.T) {
if err := onStor.SetSharedGroup(sg, utils.NonTransactional); err != nil {
t.Error(err)
}
//get from cache
if rcv, err := onStor.GetSharedGroup(sg.Id, false,
utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(sg, rcv) {
t.Errorf("Expecting: %v, received: %v", sg, rcv)
if onStor.dataDB.GetStorageType() != utils.INTERNAL {
//get from cache
if rcv, err := onStor.GetSharedGroup(sg.Id, false,
utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(sg, rcv) {
t.Errorf("Expecting: %v, received: %v", sg, rcv)
}
}
//get from database
if rcv, err := onStor.GetSharedGroup(sg.Id, true,
@@ -1276,11 +1299,13 @@ func testOnStorITTiming(t *testing.T) {
if err := onStor.SetTiming(tmg); err != nil {
t.Error(err)
}
//get from cache
if rcv, err := onStor.GetTiming(tmg.ID, false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(tmg, rcv) {
t.Errorf("Expecting: %v, received: %v", tmg, rcv)
if onStor.dataDB.GetStorageType() != utils.INTERNAL {
//get from cache
if rcv, err := onStor.GetTiming(tmg.ID, false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(tmg, rcv) {
t.Errorf("Expecting: %v, received: %v", tmg, rcv)
}
}
//get from database
if rcv, err := onStor.GetTiming(tmg.ID, true, utils.NonTransactional); err != nil {