mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-16 13:49:53 +05:00
local test passes
This commit is contained in:
@@ -56,7 +56,7 @@ func TestSetAccounts(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
apierAcntsAcntStorage.CachePrefixes(utils.ACTION_PREFIX)
|
||||
apierAcntsAcntStorage.CacheRatingPrefixes(utils.ACTION_PREFIX)
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
|
||||
package v1
|
||||
|
||||
/*
|
||||
import (
|
||||
"github.com/cgrates/cgrates/engine"
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
@@ -80,9 +81,6 @@ func (self *ApierV1) RemRatingSubjectAliases(tenantRatingSubject engine.TenantRa
|
||||
}
|
||||
|
||||
// cache refresh not needed, synched in RemoveRpAliases
|
||||
/*if err := self.RatingDb.CachePrefixes(utils.RP_ALIAS_PREFIX); err != nil {
|
||||
return utils.NewErrServerError(err)
|
||||
}*/
|
||||
*reply = utils.OK
|
||||
return nil
|
||||
}
|
||||
@@ -131,10 +129,7 @@ func (self *ApierV1) RemAccountAliases(tenantAccount engine.TenantAccount, reply
|
||||
}
|
||||
return utils.NewErrServerError(err)
|
||||
}
|
||||
// cache refresh not needed, synched in RemoveRpAliases
|
||||
/*if err := self.RatingDb.CachePrefixes(utils.ACC_ALIAS_PREFIX); err != nil {
|
||||
return utils.NewErrServerError(err)
|
||||
}*/
|
||||
*reply = utils.OK
|
||||
return nil
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -86,7 +86,7 @@ func (self *ApierV1) SetDestination(attrs utils.AttrSetDestination, reply *strin
|
||||
if err := self.RatingDb.SetDestination(dest); err != nil {
|
||||
return utils.NewErrServerError(err)
|
||||
}
|
||||
self.RatingDb.CachePrefixValues(map[string][]string{utils.DESTINATION_PREFIX: []string{dest.Id}})
|
||||
self.RatingDb.CacheRatingPrefixValues(map[string][]string{utils.DESTINATION_PREFIX: []string{dest.Id}})
|
||||
*reply = OK
|
||||
return nil
|
||||
}
|
||||
@@ -216,7 +216,7 @@ func (self *ApierV1) LoadDestination(attrs AttrLoadDestination, reply *string) e
|
||||
if len(attrs.DestinationId) == 0 {
|
||||
destIds = nil // Cache all destinations, temporary here until we add ApierV2.LoadDestinations
|
||||
}
|
||||
if err := self.RatingDb.CachePrefixValues(map[string][]string{
|
||||
if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{
|
||||
utils.DESTINATION_PREFIX: destIds}); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -239,7 +239,7 @@ func (self *ApierV1) LoadDerivedChargers(attrs utils.TPDerivedChargers, reply *s
|
||||
if len(attrs.Direction) != 0 && len(attrs.Tenant) != 0 && len(attrs.Category) != 0 && len(attrs.Account) != 0 && len(attrs.Subject) != 0 {
|
||||
derivedChargingKeys = []string{utils.DERIVEDCHARGERS_PREFIX + attrs.GetDerivedChargersKey()}
|
||||
}
|
||||
if err := self.RatingDb.CachePrefixValues(map[string][]string{utils.DERIVEDCHARGERS_PREFIX: derivedChargingKeys}); err != nil {
|
||||
if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{utils.DERIVEDCHARGERS_PREFIX: derivedChargingKeys}); err != nil {
|
||||
return err
|
||||
}
|
||||
*reply = OK
|
||||
@@ -267,7 +267,7 @@ func (self *ApierV1) LoadRatingPlan(attrs AttrLoadRatingPlan, reply *string) err
|
||||
if len(attrs.TPid) != 0 {
|
||||
changedRPlKeys = []string{utils.RATING_PLAN_PREFIX + attrs.RatingPlanId}
|
||||
}
|
||||
if err := self.RatingDb.CachePrefixValues(map[string][]string{
|
||||
if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{
|
||||
utils.DESTINATION_PREFIX: nil,
|
||||
utils.RATING_PLAN_PREFIX: changedRPlKeys,
|
||||
}); err != nil {
|
||||
@@ -292,7 +292,7 @@ func (self *ApierV1) LoadRatingProfile(attrs utils.TPRatingProfile, reply *strin
|
||||
if attrs.KeyId() != ":::" { // if has some filters
|
||||
ratingProfile = []string{utils.RATING_PROFILE_PREFIX + attrs.KeyId()}
|
||||
}
|
||||
if err := self.RatingDb.CachePrefixValues(map[string][]string{utils.RATING_PROFILE_PREFIX: ratingProfile}); err != nil {
|
||||
if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{utils.RATING_PROFILE_PREFIX: ratingProfile}); err != nil {
|
||||
return err
|
||||
}
|
||||
*reply = OK
|
||||
@@ -318,7 +318,7 @@ func (self *ApierV1) LoadSharedGroup(attrs AttrLoadSharedGroup, reply *string) e
|
||||
if len(attrs.SharedGroupId) != 0 {
|
||||
changedSharedGroup = []string{utils.SHARED_GROUP_PREFIX + attrs.SharedGroupId}
|
||||
}
|
||||
if err := self.RatingDb.CachePrefixValues(map[string][]string{utils.SHARED_GROUP_PREFIX: changedSharedGroup}); err != nil {
|
||||
if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{utils.SHARED_GROUP_PREFIX: changedSharedGroup}); err != nil {
|
||||
return err
|
||||
}
|
||||
*reply = OK
|
||||
@@ -398,15 +398,10 @@ func (self *ApierV1) LoadTariffPlanFromStorDb(attrs AttrLoadTpFromStorDb, reply
|
||||
for idx, shgId := range shgIds {
|
||||
shgKeys[idx] = utils.SHARED_GROUP_PREFIX + shgId
|
||||
}
|
||||
rpAliases, _ := dbReader.GetLoadedIds(utils.RP_ALIAS_PREFIX)
|
||||
rpAlsKeys := make([]string, len(rpAliases))
|
||||
for idx, alias := range rpAliases {
|
||||
rpAlsKeys[idx] = utils.RP_ALIAS_PREFIX + alias
|
||||
}
|
||||
accAliases, _ := dbReader.GetLoadedIds(utils.ACC_ALIAS_PREFIX)
|
||||
accAlsKeys := make([]string, len(accAliases))
|
||||
for idx, alias := range accAliases {
|
||||
accAlsKeys[idx] = utils.ACC_ALIAS_PREFIX + alias
|
||||
aliases, _ := dbReader.GetLoadedIds(utils.ALIASES_PREFIX)
|
||||
alsKeys := make([]string, len(aliases))
|
||||
for idx, alias := range aliases {
|
||||
alsKeys[idx] = utils.ALIASES_PREFIX + alias
|
||||
}
|
||||
lcrIds, _ := dbReader.GetLoadedIds(utils.LCR_PREFIX)
|
||||
lcrKeys := make([]string, len(lcrIds))
|
||||
@@ -419,16 +414,19 @@ func (self *ApierV1) LoadTariffPlanFromStorDb(attrs AttrLoadTpFromStorDb, reply
|
||||
dcsKeys[idx] = utils.DERIVEDCHARGERS_PREFIX + dc
|
||||
}
|
||||
engine.Logger.Info("ApierV1.LoadTariffPlanFromStorDb, reloading cache.")
|
||||
if err := self.RatingDb.CachePrefixValues(map[string][]string{
|
||||
if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{
|
||||
utils.DESTINATION_PREFIX: dstKeys,
|
||||
utils.RATING_PLAN_PREFIX: rpKeys,
|
||||
utils.RATING_PROFILE_PREFIX: rpfKeys,
|
||||
utils.RP_ALIAS_PREFIX: rpAlsKeys,
|
||||
utils.LCR_PREFIX: lcrKeys,
|
||||
utils.DERIVEDCHARGERS_PREFIX: dcsKeys,
|
||||
utils.ACTION_PREFIX: actKeys,
|
||||
utils.SHARED_GROUP_PREFIX: shgKeys,
|
||||
utils.ACC_ALIAS_PREFIX: accAlsKeys,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := self.AccountDb.CacheAccountingPrefixValues(map[string][]string{
|
||||
utils.ALIASES_PREFIX: shgKeys,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -524,7 +522,7 @@ func (self *ApierV1) SetRatingProfile(attrs AttrSetRatingProfile, reply *string)
|
||||
return utils.NewErrServerError(err)
|
||||
}
|
||||
//Automatic cache of the newly inserted rating profile
|
||||
if err := self.RatingDb.CachePrefixValues(map[string][]string{
|
||||
if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{
|
||||
utils.RATING_PROFILE_PREFIX: []string{utils.RATING_PROFILE_PREFIX + keyId},
|
||||
}); err != nil {
|
||||
return err
|
||||
@@ -578,7 +576,7 @@ func (self *ApierV1) SetActions(attrs utils.AttrSetActions, reply *string) error
|
||||
if err := self.RatingDb.SetActions(attrs.ActionsId, storeActions); err != nil {
|
||||
return utils.NewErrServerError(err)
|
||||
}
|
||||
self.RatingDb.CachePrefixes(utils.ACTION_PREFIX)
|
||||
self.RatingDb.CacheRatingPrefixes(utils.ACTION_PREFIX)
|
||||
*reply = OK
|
||||
return nil
|
||||
}
|
||||
@@ -834,7 +832,7 @@ func (self *ApierV1) LoadAccountActions(attrs utils.TPAccountActions, reply *str
|
||||
}
|
||||
// ToDo: Get the action keys loaded by dbReader so we reload only these in cache
|
||||
// Need to do it before scheduler otherwise actions to run will be unknown
|
||||
if err := self.RatingDb.CachePrefixes(utils.DERIVEDCHARGERS_PREFIX, utils.ACTION_PREFIX, utils.SHARED_GROUP_PREFIX, utils.ACC_ALIAS_PREFIX); err != nil {
|
||||
if err := self.RatingDb.CacheRatingPrefixes(utils.DERIVEDCHARGERS_PREFIX, utils.ACTION_PREFIX, utils.SHARED_GROUP_PREFIX); err != nil {
|
||||
return err
|
||||
}
|
||||
if self.Sched != nil {
|
||||
@@ -857,7 +855,7 @@ func (self *ApierV1) ReloadScheduler(input string, reply *string) error {
|
||||
}
|
||||
|
||||
func (self *ApierV1) ReloadCache(attrs utils.ApiReloadCache, reply *string) error {
|
||||
var dstKeys, rpKeys, rpfKeys, actKeys, shgKeys, rpAlsKeys, accAlsKeys, lcrKeys, dcsKeys []string
|
||||
var dstKeys, rpKeys, rpfKeys, actKeys, shgKeys, lcrKeys, dcsKeys, alsKeys []string
|
||||
if len(attrs.DestinationIds) > 0 {
|
||||
dstKeys = make([]string, len(attrs.DestinationIds))
|
||||
for idx, dId := range attrs.DestinationIds {
|
||||
@@ -888,16 +886,10 @@ func (self *ApierV1) ReloadCache(attrs utils.ApiReloadCache, reply *string) erro
|
||||
shgKeys[idx] = utils.SHARED_GROUP_PREFIX + shgId
|
||||
}
|
||||
}
|
||||
if len(attrs.RpAliases) > 0 {
|
||||
rpAlsKeys = make([]string, len(attrs.RpAliases))
|
||||
for idx, alias := range attrs.RpAliases {
|
||||
rpAlsKeys[idx] = utils.RP_ALIAS_PREFIX + alias
|
||||
}
|
||||
}
|
||||
if len(attrs.AccAliases) > 0 {
|
||||
accAlsKeys = make([]string, len(attrs.AccAliases))
|
||||
for idx, alias := range attrs.AccAliases {
|
||||
accAlsKeys[idx] = utils.ACC_ALIAS_PREFIX + alias
|
||||
if len(attrs.Aliases) > 0 {
|
||||
alsKeys = make([]string, len(attrs.Aliases))
|
||||
for idx, alias := range attrs.Aliases {
|
||||
alsKeys[idx] = utils.ALIASES_PREFIX + alias
|
||||
}
|
||||
}
|
||||
if len(attrs.LCRIds) > 0 {
|
||||
@@ -913,16 +905,19 @@ func (self *ApierV1) ReloadCache(attrs utils.ApiReloadCache, reply *string) erro
|
||||
dcsKeys[idx] = utils.DERIVEDCHARGERS_PREFIX + dc
|
||||
}
|
||||
}
|
||||
if err := self.RatingDb.CachePrefixValues(map[string][]string{
|
||||
if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{
|
||||
utils.DESTINATION_PREFIX: dstKeys,
|
||||
utils.RATING_PLAN_PREFIX: rpKeys,
|
||||
utils.RATING_PROFILE_PREFIX: rpfKeys,
|
||||
utils.RP_ALIAS_PREFIX: rpAlsKeys,
|
||||
utils.LCR_PREFIX: lcrKeys,
|
||||
utils.DERIVEDCHARGERS_PREFIX: dcsKeys,
|
||||
utils.ACTION_PREFIX: actKeys,
|
||||
utils.SHARED_GROUP_PREFIX: shgKeys,
|
||||
utils.ACC_ALIAS_PREFIX: accAlsKeys,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{
|
||||
utils.ALIASES_PREFIX: alsKeys,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -937,10 +932,9 @@ func (self *ApierV1) GetCacheStats(attrs utils.AttrCacheStats, reply *utils.Cach
|
||||
cs.RatingProfiles = cache2go.CountEntries(utils.RATING_PROFILE_PREFIX)
|
||||
cs.Actions = cache2go.CountEntries(utils.ACTION_PREFIX)
|
||||
cs.SharedGroups = cache2go.CountEntries(utils.SHARED_GROUP_PREFIX)
|
||||
cs.RatingAliases = cache2go.CountEntries(utils.RP_ALIAS_PREFIX)
|
||||
cs.AccountAliases = cache2go.CountEntries(utils.ACC_ALIAS_PREFIX)
|
||||
cs.DerivedChargers = cache2go.CountEntries(utils.DERIVEDCHARGERS_PREFIX)
|
||||
cs.LcrProfiles = cache2go.CountEntries(utils.LCR_PREFIX)
|
||||
cs.Aliases = cache2go.CountEntries(utils.ALIASES_PREFIX)
|
||||
if self.CdrStatsSrv != nil && self.Config.CDRStatsEnabled {
|
||||
var queueIds []string
|
||||
if err := self.CdrStatsSrv.GetQueueIds(0, &queueIds); err != nil {
|
||||
@@ -966,7 +960,7 @@ func (self *ApierV1) GetCachedItemAge(itemId string, reply *utils.CachedItemAge)
|
||||
cachedItemAge := new(utils.CachedItemAge)
|
||||
var found bool
|
||||
for idx, cacheKey := range []string{utils.DESTINATION_PREFIX + itemId, utils.RATING_PLAN_PREFIX + itemId, utils.RATING_PROFILE_PREFIX + itemId,
|
||||
utils.ACTION_PREFIX + itemId, utils.SHARED_GROUP_PREFIX + itemId, utils.RP_ALIAS_PREFIX + itemId, utils.ACC_ALIAS_PREFIX + itemId,
|
||||
utils.ACTION_PREFIX + itemId, utils.SHARED_GROUP_PREFIX + itemId, utils.ALIASES_PREFIX + itemId,
|
||||
utils.LCR_PREFIX + itemId} {
|
||||
if age, err := cache2go.GetKeyAge(cacheKey); err == nil {
|
||||
found = true
|
||||
@@ -1024,7 +1018,9 @@ func (self *ApierV1) LoadTariffPlanFromFolder(attrs utils.AttrLoadTpFromFolder,
|
||||
path.Join(attrs.FolderPath, utils.ACCOUNT_ACTIONS_CSV),
|
||||
path.Join(attrs.FolderPath, utils.DERIVED_CHARGERS_CSV),
|
||||
path.Join(attrs.FolderPath, utils.CDR_STATS_CSV),
|
||||
path.Join(attrs.FolderPath, utils.USERS_CSV)), "")
|
||||
path.Join(attrs.FolderPath, utils.USERS_CSV),
|
||||
path.Join(attrs.FolderPath, utils.ALIASES_CSV),
|
||||
), "")
|
||||
if err := loader.LoadAll(); err != nil {
|
||||
return utils.NewErrServerError(err)
|
||||
}
|
||||
@@ -1069,15 +1065,10 @@ func (self *ApierV1) LoadTariffPlanFromFolder(attrs utils.AttrLoadTpFromFolder,
|
||||
for idx, shgId := range shgIds {
|
||||
shgKeys[idx] = utils.SHARED_GROUP_PREFIX + shgId
|
||||
}
|
||||
rpAliases, _ := loader.GetLoadedIds(utils.RP_ALIAS_PREFIX)
|
||||
rpAlsKeys := make([]string, len(rpAliases))
|
||||
for idx, alias := range rpAliases {
|
||||
rpAlsKeys[idx] = utils.RP_ALIAS_PREFIX + alias
|
||||
}
|
||||
accAliases, _ := loader.GetLoadedIds(utils.ACC_ALIAS_PREFIX)
|
||||
accAlsKeys := make([]string, len(accAliases))
|
||||
for idx, alias := range accAliases {
|
||||
accAlsKeys[idx] = utils.ACC_ALIAS_PREFIX + alias
|
||||
aliases, _ := loader.GetLoadedIds(utils.ALIASES_PREFIX)
|
||||
alsKeys := make([]string, len(aliases))
|
||||
for idx, alias := range aliases {
|
||||
alsKeys[idx] = utils.ALIASES_PREFIX + alias
|
||||
}
|
||||
lcrIds, _ := loader.GetLoadedIds(utils.LCR_PREFIX)
|
||||
lcrKeys := make([]string, len(lcrIds))
|
||||
@@ -1092,16 +1083,19 @@ func (self *ApierV1) LoadTariffPlanFromFolder(attrs utils.AttrLoadTpFromFolder,
|
||||
aps, _ := loader.GetLoadedIds(utils.ACTION_TIMING_PREFIX)
|
||||
engine.Logger.Info("ApierV1.LoadTariffPlanFromFolder, reloading cache.")
|
||||
|
||||
if err := self.RatingDb.CachePrefixValues(map[string][]string{
|
||||
if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{
|
||||
utils.DESTINATION_PREFIX: dstKeys,
|
||||
utils.RATING_PLAN_PREFIX: rpKeys,
|
||||
utils.RATING_PROFILE_PREFIX: rpfKeys,
|
||||
utils.RP_ALIAS_PREFIX: rpAlsKeys,
|
||||
utils.LCR_PREFIX: lcrKeys,
|
||||
utils.DERIVEDCHARGERS_PREFIX: dcsKeys,
|
||||
utils.ACTION_PREFIX: actKeys,
|
||||
utils.SHARED_GROUP_PREFIX: shgKeys,
|
||||
utils.ACC_ALIAS_PREFIX: accAlsKeys,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := self.AccountDb.CacheAccountingPrefixValues(map[string][]string{
|
||||
utils.ALIASES_PREFIX: alsKeys,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ import (
|
||||
"os/exec"
|
||||
"path"
|
||||
"reflect"
|
||||
"sort"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -1550,6 +1549,7 @@ func TestApierLocalGetRatingSubjectAliases(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
func TestApierLocalAddRatingSubjectAliases(t *testing.T) {
|
||||
if !*testLocal {
|
||||
return
|
||||
@@ -1573,7 +1573,7 @@ func TestApierLocalAddRatingSubjectAliases(t *testing.T) {
|
||||
t.Errorf("Expecting: %v, received: %v", expectSubjAliases, subjAliases)
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
func TestApierLocalRemRatingSubjectAliases(t *testing.T) {
|
||||
if !*testLocal {
|
||||
@@ -1607,6 +1607,7 @@ func TestApierLocalGetAccountAliases(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
func TestApierLocalAddAccountAliases(t *testing.T) {
|
||||
if !*testLocal {
|
||||
return
|
||||
@@ -1630,7 +1631,7 @@ func TestApierLocalAddAccountAliases(t *testing.T) {
|
||||
t.Errorf("Expecting: %v, received: %v", expectAcntAliases, acntAliases)
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
func TestApierLocalRemAccountAliases(t *testing.T) {
|
||||
if !*testLocal {
|
||||
@@ -1770,6 +1771,7 @@ func TestApierLoadTariffPlanFromStorDb(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
func TestApierGetCacheStats3(t *testing.T) {
|
||||
if !*testLocal {
|
||||
return
|
||||
@@ -1782,7 +1784,7 @@ func TestApierGetCacheStats3(t *testing.T) {
|
||||
} else if !reflect.DeepEqual(expectedStats, rcvStats) {
|
||||
t.Errorf("Calling ApierV1.GetCacheStats expected: %v, received: %v", expectedStats, rcvStats)
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
// Simply kill the engine after we are done with tests within this file
|
||||
func TestApierStopEngine(t *testing.T) {
|
||||
|
||||
@@ -76,7 +76,7 @@ func (self *ApierV1) SetDerivedChargers(attrs AttrSetDerivedChargers, reply *str
|
||||
if err := self.RatingDb.SetDerivedChargers(dcKey, attrs.DerivedChargers); err != nil {
|
||||
return utils.NewErrServerError(err)
|
||||
}
|
||||
if err := self.RatingDb.CachePrefixValues(map[string][]string{
|
||||
if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{
|
||||
utils.DERIVEDCHARGERS_PREFIX: []string{utils.DERIVEDCHARGERS_PREFIX + dcKey},
|
||||
}); err != nil {
|
||||
return utils.NewErrServerError(err)
|
||||
@@ -110,7 +110,7 @@ func (self *ApierV1) RemDerivedChargers(attrs AttrRemDerivedChargers, reply *str
|
||||
} else {
|
||||
*reply = "OK"
|
||||
}
|
||||
if err := self.RatingDb.CachePrefixes(utils.DERIVEDCHARGERS_PREFIX); err != nil {
|
||||
if err := self.RatingDb.CacheRatingPrefixes(utils.DERIVEDCHARGERS_PREFIX); err != nil {
|
||||
return utils.NewErrServerError(err)
|
||||
}
|
||||
return nil
|
||||
|
||||
@@ -50,7 +50,7 @@ func (self *ApierV2) LoadRatingProfile(attrs AttrLoadRatingProfile, reply *strin
|
||||
if tpRpf.KeyId() != ":::" { // if has some filters
|
||||
ratingProfile = []string{utils.RATING_PROFILE_PREFIX + tpRpf.KeyId()}
|
||||
}
|
||||
if err := self.RatingDb.CachePrefixValues(map[string][]string{utils.RATING_PROFILE_PREFIX: ratingProfile}); err != nil {
|
||||
if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{utils.RATING_PROFILE_PREFIX: ratingProfile}); err != nil {
|
||||
return err
|
||||
}
|
||||
*reply = v1.OK
|
||||
@@ -81,7 +81,7 @@ func (self *ApierV2) LoadAccountActions(attrs AttrLoadAccountActions, reply *str
|
||||
}
|
||||
// ToDo: Get the action keys loaded by dbReader so we reload only these in cache
|
||||
// Need to do it before scheduler otherwise actions to run will be unknown
|
||||
if err := self.RatingDb.CachePrefixes(utils.DERIVED_CHARGERS_CSV, utils.ACTION_PREFIX, utils.SHARED_GROUP_PREFIX, utils.ACC_ALIAS_PREFIX); err != nil {
|
||||
if err := self.RatingDb.CacheRatingPrefixes(utils.DERIVED_CHARGERS_CSV, utils.ACTION_PREFIX, utils.SHARED_GROUP_PREFIX); err != nil {
|
||||
return err
|
||||
}
|
||||
if self.Sched != nil {
|
||||
@@ -114,7 +114,7 @@ func (self *ApierV2) LoadDerivedChargers(attrs AttrLoadDerivedChargers, reply *s
|
||||
if len(attrs.DerivedChargersId) != 0 {
|
||||
dcsChanged = []string{utils.DERIVEDCHARGERS_PREFIX + attrs.DerivedChargersId}
|
||||
}
|
||||
if err := self.RatingDb.CachePrefixValues(map[string][]string{utils.DERIVEDCHARGERS_PREFIX: dcsChanged}); err != nil {
|
||||
if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{utils.DERIVEDCHARGERS_PREFIX: dcsChanged}); err != nil {
|
||||
return err
|
||||
}
|
||||
*reply = v1.OK
|
||||
|
||||
@@ -79,11 +79,16 @@ var (
|
||||
)
|
||||
|
||||
func cacheData(ratingDb engine.RatingStorage, accountDb engine.AccountingStorage, doneChan chan struct{}) {
|
||||
if err := ratingDb.CacheAll(); err != nil {
|
||||
if err := ratingDb.CacheRatingAll(); err != nil {
|
||||
engine.Logger.Crit(fmt.Sprintf("Cache rating error: %s", err.Error()))
|
||||
exitChan <- true
|
||||
return
|
||||
}
|
||||
if err := accountDb.CacheAccountingAll(); err != nil {
|
||||
engine.Logger.Crit(fmt.Sprintf("Cache accounting error: %s", err.Error()))
|
||||
exitChan <- true
|
||||
return
|
||||
}
|
||||
close(doneChan)
|
||||
}
|
||||
|
||||
|
||||
@@ -111,9 +111,15 @@ func NewAliasHandler(accountingDb AccountingStorage) *AliasHandler {
|
||||
func (am *AliasHandler) SetAlias(al Alias, reply *string) error {
|
||||
am.mu.Lock()
|
||||
defer am.mu.Unlock()
|
||||
// TODO: get previous from cache
|
||||
|
||||
if err := am.accountingDb.SetAlias(&al); err != nil {
|
||||
*reply = err.Error()
|
||||
return err
|
||||
} //add to cache
|
||||
aliasesChanged := []string{utils.ALIASES_PREFIX + al.GetId()}
|
||||
if err := am.accountingDb.CacheAccountingPrefixValues(map[string][]string{utils.ALIASES_PREFIX: aliasesChanged}); err != nil {
|
||||
return utils.NewErrServerError(err)
|
||||
}
|
||||
*reply = utils.OK
|
||||
return nil
|
||||
@@ -126,6 +132,7 @@ func (am *AliasHandler) RemoveAlias(al Alias, reply *string) error {
|
||||
*reply = err.Error()
|
||||
return err
|
||||
}
|
||||
// remove from cache
|
||||
*reply = utils.OK
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -53,13 +53,15 @@ ENABLE_ACNT,*enable_account,,,,,,,,,,,,,10`
|
||||
derivedCharges := ``
|
||||
cdrStats := ``
|
||||
users := ``
|
||||
aliases := ``
|
||||
csvr := engine.NewTpReader(ratingDbAcntActs, acntDbAcntActs, engine.NewStringCSVStorage(',', destinations, timings, rates, destinationRates, ratingPlans, ratingProfiles,
|
||||
sharedGroups, lcrs, actions, actionPlans, actionTriggers, accountActions, derivedCharges, cdrStats, users), "")
|
||||
sharedGroups, lcrs, actions, actionPlans, actionTriggers, accountActions, derivedCharges, cdrStats, users, aliases), "")
|
||||
if err := csvr.LoadAll(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
csvr.WriteToDatabase(false, false)
|
||||
ratingDbAcntActs.CacheAll()
|
||||
ratingDbAcntActs.CacheRatingAll()
|
||||
acntDbAcntActs.CacheAccountingAll()
|
||||
expectAcnt := &engine.Account{Id: "*out:cgrates.org:1"}
|
||||
if acnt, err := acntDbAcntActs.GetAccount("*out:cgrates.org:1"); err != nil {
|
||||
t.Error(err)
|
||||
|
||||
@@ -54,7 +54,7 @@ RP_SMS1,DR_SMS_1,ALWAYS,10`
|
||||
*out,cgrates.org,data,*any,2012-01-01T00:00:00Z,RP_DATA1,,
|
||||
*out,cgrates.org,sms,*any,2012-01-01T00:00:00Z,RP_SMS1,,`
|
||||
csvr := engine.NewTpReader(ratingDb, acntDb, engine.NewStringCSVStorage(',', dests, timings, rates, destinationRates, ratingPlans, ratingProfiles,
|
||||
"", "", "", "", "", "", "", "", ""), "")
|
||||
"", "", "", "", "", "", "", "", "", ""), "")
|
||||
|
||||
if err := csvr.LoadTimings(); err != nil {
|
||||
t.Fatal(err)
|
||||
@@ -75,7 +75,8 @@ RP_SMS1,DR_SMS_1,ALWAYS,10`
|
||||
t.Fatal(err)
|
||||
}
|
||||
csvr.WriteToDatabase(false, false)
|
||||
ratingDb.CacheAll()
|
||||
ratingDb.CacheRatingAll()
|
||||
acntDb.CacheAccountingAll()
|
||||
|
||||
if cachedRPlans := cache2go.CountEntries(utils.RATING_PLAN_PREFIX); cachedRPlans != 3 {
|
||||
t.Error("Wrong number of cached rating plans found", cachedRPlans)
|
||||
|
||||
@@ -45,7 +45,7 @@ DR_DATA_2,*any,RT_DATA_1c,*up,4,0,`
|
||||
RP_DATA1,DR_DATA_2,TM2,10`
|
||||
ratingProfiles := `*out,cgrates.org,data,*any,2012-01-01T00:00:00Z,RP_DATA1,,`
|
||||
csvr := engine.NewTpReader(ratingDb, acntDb, engine.NewStringCSVStorage(',', "", timings, rates, destinationRates, ratingPlans, ratingProfiles,
|
||||
"", "", "", "", "", "", "", "", ""), "")
|
||||
"", "", "", "", "", "", "", "", "", ""), "")
|
||||
if err := csvr.LoadTimings(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -62,7 +62,8 @@ RP_DATA1,DR_DATA_2,TM2,10`
|
||||
t.Fatal(err)
|
||||
}
|
||||
csvr.WriteToDatabase(false, false)
|
||||
ratingDb.CacheAll()
|
||||
ratingDb.CacheRatingAll()
|
||||
acntDb.CacheAccountingAll()
|
||||
|
||||
if cachedRPlans := cache2go.CountEntries(utils.RATING_PLAN_PREFIX); cachedRPlans != 1 {
|
||||
t.Error("Wrong number of cached rating plans found", cachedRPlans)
|
||||
|
||||
@@ -62,8 +62,9 @@ TOPUP10_AT,TOPUP10_AC1,ASAP,10`
|
||||
derivedCharges := ``
|
||||
cdrStats := ``
|
||||
users := ``
|
||||
aliases := ``
|
||||
csvr := engine.NewTpReader(ratingDb, acntDb, engine.NewStringCSVStorage(',', destinations, timings, rates, destinationRates, ratingPlans, ratingProfiles,
|
||||
sharedGroups, lcrs, actions, actionPlans, actionTriggers, accountActions, derivedCharges, cdrStats, users), "")
|
||||
sharedGroups, lcrs, actions, actionPlans, actionTriggers, accountActions, derivedCharges, cdrStats, users, aliases), "")
|
||||
if err := csvr.LoadDestinations(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -110,7 +111,8 @@ TOPUP10_AT,TOPUP10_AC1,ASAP,10`
|
||||
t.Error("No account saved")
|
||||
}
|
||||
|
||||
ratingDb.CacheAll()
|
||||
ratingDb.CacheRatingAll()
|
||||
acntDb.CacheAccountingAll()
|
||||
|
||||
if cachedDests := cache2go.CountEntries(utils.DESTINATION_PREFIX); cachedDests != 2 {
|
||||
t.Error("Wrong number of cached destinations found", cachedDests)
|
||||
|
||||
@@ -62,8 +62,9 @@ TOPUP10_AT,TOPUP10_AC1,ASAP,10`
|
||||
derivedCharges := ``
|
||||
cdrStats := ``
|
||||
users := ``
|
||||
aliases := ``
|
||||
csvr := engine.NewTpReader(ratingDb2, acntDb2, engine.NewStringCSVStorage(',', destinations, timings, rates, destinationRates, ratingPlans, ratingProfiles,
|
||||
sharedGroups, lcrs, actions, actionPlans, actionTriggers, accountActions, derivedCharges, cdrStats, users), "")
|
||||
sharedGroups, lcrs, actions, actionPlans, actionTriggers, accountActions, derivedCharges, cdrStats, users, aliases), "")
|
||||
if err := csvr.LoadDestinations(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -109,7 +110,8 @@ TOPUP10_AT,TOPUP10_AC1,ASAP,10`
|
||||
} else if acnt == nil {
|
||||
t.Error("No account saved")
|
||||
}
|
||||
ratingDb2.CacheAll()
|
||||
ratingDb2.CacheRatingAll()
|
||||
acntDb2.CacheAccountingAll()
|
||||
|
||||
if cachedDests := cache2go.CountEntries(utils.DESTINATION_PREFIX); cachedDests != 2 {
|
||||
t.Error("Wrong number of cached destinations found", cachedDests)
|
||||
|
||||
@@ -60,8 +60,9 @@ RP_UK,DR_UK_Mobile_BIG5,ALWAYS,10`
|
||||
derivedCharges := ``
|
||||
cdrStats := ``
|
||||
users := ``
|
||||
aliases := ``
|
||||
csvr := engine.NewTpReader(ratingDb3, acntDb3, engine.NewStringCSVStorage(',', destinations, timings, rates, destinationRates, ratingPlans, ratingProfiles,
|
||||
sharedGroups, lcrs, actions, actionPlans, actionTriggers, accountActions, derivedCharges, cdrStats, users), "")
|
||||
sharedGroups, lcrs, actions, actionPlans, actionTriggers, accountActions, derivedCharges, cdrStats, users, aliases), "")
|
||||
if err := csvr.LoadDestinations(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -107,7 +108,8 @@ RP_UK,DR_UK_Mobile_BIG5,ALWAYS,10`
|
||||
} else if acnt == nil {
|
||||
t.Error("No account saved")
|
||||
}
|
||||
ratingDb3.CacheAll()
|
||||
ratingDb3.CacheRatingAll()
|
||||
acntDb3.CacheAccountingAll()
|
||||
|
||||
if cachedDests := cache2go.CountEntries(utils.DESTINATION_PREFIX); cachedDests != 2 {
|
||||
t.Error("Wrong number of cached destinations found", cachedDests)
|
||||
|
||||
@@ -41,7 +41,7 @@ func TestSMSLoadCsvTpSmsChrg1(t *testing.T) {
|
||||
ratingPlans := `RP_SMS1,DR_SMS_1,ALWAYS,10`
|
||||
ratingProfiles := `*out,cgrates.org,sms,*any,2012-01-01T00:00:00Z,RP_SMS1,,`
|
||||
csvr := engine.NewTpReader(ratingDb, acntDb, engine.NewStringCSVStorage(',', "", timings, rates, destinationRates, ratingPlans, ratingProfiles,
|
||||
"", "", "", "", "", "", "", "", ""), "")
|
||||
"", "", "", "", "", "", "", "", "", ""), "")
|
||||
if err := csvr.LoadTimings(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -58,7 +58,8 @@ func TestSMSLoadCsvTpSmsChrg1(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
csvr.WriteToDatabase(false, false)
|
||||
ratingDb.CacheAll()
|
||||
ratingDb.CacheRatingAll()
|
||||
acntDb.CacheAccountingAll()
|
||||
|
||||
if cachedRPlans := cache2go.CountEntries(utils.RATING_PLAN_PREFIX); cachedRPlans != 1 {
|
||||
t.Error("Wrong number of cached rating plans found", cachedRPlans)
|
||||
|
||||
@@ -116,7 +116,7 @@ func TestTutLocalCacheStats(t *testing.T) {
|
||||
return
|
||||
}
|
||||
var rcvStats *utils.CacheStats
|
||||
expectedStats := &utils.CacheStats{Destinations: 4, RatingPlans: 3, RatingProfiles: 8, Actions: 7, SharedGroups: 1, RatingAliases: 1, AccountAliases: 1,
|
||||
expectedStats := &utils.CacheStats{Destinations: 4, RatingPlans: 3, RatingProfiles: 8, Actions: 7, SharedGroups: 1, Aliases: 1,
|
||||
DerivedChargers: 1, LcrProfiles: 4, CdrStats: 6, Users: 2}
|
||||
var args utils.AttrCacheStats
|
||||
if err := tutLocalRpc.Call("ApierV1.GetCacheStats", args, &rcvStats); err != nil {
|
||||
|
||||
@@ -526,11 +526,10 @@ type ApiReloadCache struct {
|
||||
RatingProfileIds []string
|
||||
ActionIds []string
|
||||
SharedGroupIds []string
|
||||
RpAliases []string
|
||||
AccAliases []string
|
||||
LCRIds []string
|
||||
DerivedChargers []string
|
||||
LcrProfiles []string
|
||||
Aliases []string
|
||||
}
|
||||
|
||||
type AttrCacheStats struct { // Add in the future filters here maybe so we avoid counting complete cache
|
||||
@@ -542,12 +541,11 @@ type CacheStats struct {
|
||||
RatingProfiles int
|
||||
Actions int
|
||||
SharedGroups int
|
||||
RatingAliases int
|
||||
AccountAliases int
|
||||
DerivedChargers int
|
||||
LcrProfiles int
|
||||
CdrStats int
|
||||
Users int
|
||||
Aliases int
|
||||
}
|
||||
|
||||
type AttrCachedItemAge struct {
|
||||
|
||||
Reference in New Issue
Block a user