Added tests for loader subsystem cache and removed commented tests from tpreader_test.go

This commit is contained in:
nickolasdaniel
2021-05-11 11:13:28 +03:00
committed by Dan Christian Bogos
parent ba17d60f00
commit 489d627965
2 changed files with 490 additions and 247 deletions

View File

@@ -530,208 +530,6 @@ func TestGetLoadedIdsReverseDestinations(t *testing.T) {
}
}
// func TestGetLoadedIdsRatingPlans(t *testing.T) {
// tpr := &TpReader{
// ratingPlans: map[string]*RatingPlan{
// "RP_RETAIL1": {
// Id: "RP_1001",
// Timings: map[string]*RITiming{
// "TIMING_1001": {
// ID: "PEAK",
// Years: []int{2021},
// Months: []time.Month{8},
// MonthDays: []int{31},
// WeekDays: []time.Weekday{5},
// StartTime: "15:00:00Z",
// EndTime: "17:00:00Z",
// cronString: "21 2 5 25 8 5 2021", //sec, min, hour, monthday, month, weekday, year
// tag: utils.MetaAny,
// },
// },
// Ratings: map[string]*RIRate{
// "RATING_1001": {
// ConnectFee: 0.4,
// RoundingMethod: utils.MetaUp,
// RoundingDecimals: 4,
// MaxCost: 0.60,
// MaxCostStrategy: utils.MetaMaxCostDisconnect,
// Rates: []*RGRate{
// {
// GroupIntervalStart: 0,
// Value: 0.2,
// RateIncrement: 60 * time.Second,
// RateUnit: 60 * time.Second,
// },
// },
// tag: utils.MetaAny,
// },
// },
// DestinationRates: map[string]RPRateList{
// "DR_FS_40CNT": {
// {
// Timing: "TIMING_1001",
// Rating: "RATING_1001",
// Weight: 10,
// },
// },
// },
// },
// },
// }
// rcv, err := tpr.GetLoadedIds(utils.RatingPlanPrefix)
// if err != nil {
// t.Error(err)
// }
// expRcv := []string{"RP_RETAIL1"}
// if !reflect.DeepEqual(expRcv, rcv) {
// t.Errorf("\nExpected %v but received \n%v", expRcv, rcv)
// }
// }
// func TestGetLoadedIdsRatingProfiles(t *testing.T) {
// tpr := &TpReader{
// ratingProfiles: map[string]*RatingProfile{
// "1001": {
// Id: "RP_RETAIL1",
// RatingPlanActivations: []*RatingPlanActivation{
// {
// ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
// RatingPlanId: "RETAIL1",
// },
// },
// },
// "1002": {
// Id: "RP_RETAIL2",
// RatingPlanActivations: []*RatingPlanActivation{
// {
// ActivationTime: time.Date(2014, 7, 21, 14, 15, 0, 0, time.UTC),
// RatingPlanId: "RETAIL2",
// },
// },
// },
// },
// }
// rcv, err := tpr.GetLoadedIds(utils.RatingProfilePrefix)
// if err != nil {
// t.Error(err)
// }
// sort.Strings(rcv)
// expRcv := []string{"1001", "1002"}
// if !reflect.DeepEqual(expRcv, rcv) {
// t.Errorf("\nExpected %v but received \n%v", expRcv, rcv)
// }
// }
// func TestGetLoadedIdsActions(t *testing.T) {
// tpr := &TpReader{
// actions: map[string][]*Action{
// "TOPUP_RST_10": {
// {
// Id: "ACTION_1001",
// ActionType: utils.MetaSetBalance,
// ExtraParameters: "",
// Filter: "",
// ExpirationString: "",
// Weight: 10,
// balanceValue: 9.45,
// },
// },
// "TOPUP_RST_5": {
// {
// Id: "ACTION_1002",
// ActionType: utils.MetaPublishAccount,
// ExtraParameters: "",
// Filter: "",
// ExpirationString: "",
// Weight: 5,
// balanceValue: 12.32,
// },
// },
// },
// }
// rcv, err := tpr.GetLoadedIds(utils.ActionPrefix)
// if err != nil {
// t.Error(err)
// }
// sort.Strings(rcv)
// expRcv := []string{"TOPUP_RST_10", "TOPUP_RST_5"}
// if !reflect.DeepEqual(expRcv, rcv) {
// t.Errorf("\nExpected %v but received \n%v", expRcv, rcv)
// }
// }
// func TestGetLoadedIdsActionPlans(t *testing.T) {
// tpr := &TpReader{
// actionPlans: map[string]*ActionPlan{
// "PACKAGE_1001": {
// Id: "TOPUP_RST_10",
// AccountIDs: map[string]bool{
// "1001": true,
// "1002": false,
// },
// },
// "PACKAGE_1002": {
// Id: "TOPUP_RST_5",
// AccountIDs: map[string]bool{
// "1001": false,
// "1002": true,
// },
// },
// },
// }
// rcv, err := tpr.GetLoadedIds(utils.ActionPlanPrefix)
// if err != nil {
// t.Error(err)
// }
// sort.Strings(rcv)
// expRcv := []string{"PACKAGE_1001", "PACKAGE_1002"}
// if !reflect.DeepEqual(expRcv, rcv) {
// t.Errorf("\nExpected %v but received \n%v", expRcv, rcv)
// }
// }
// func TestGetLoadedIdsSharedGroup(t *testing.T) {
// tpr := &TpReader{
// sharedGroups: map[string]*SharedGroup{
// "SHARED_A": {
// Id: "SHARED_ID1",
// AccountParameters: map[string]*SharingParameters{
// "PARAM_1": {
// Strategy: utils.MetaTopUp,
// RatingSubject: "1001",
// },
// },
// MemberIds: map[string]bool{
// "1001": true,
// "1002": false,
// },
// },
// "SHARED_B": {
// Id: "SHARED_ID2",
// AccountParameters: map[string]*SharingParameters{
// "PARAM_1": {
// Strategy: utils.MetaTopUp,
// RatingSubject: "1002",
// },
// },
// MemberIds: map[string]bool{
// "1001": true,
// "1002": false,
// },
// },
// },
// }
// rcv, err := tpr.GetLoadedIds(utils.SharedGroupPrefix)
// if err != nil {
// t.Error(err)
// }
// sort.Strings(rcv)
// expRcv := []string{"SHARED_A", "SHARED_B"}
// if !reflect.DeepEqual(expRcv, rcv) {
// t.Errorf("\nExpected %v but received \n%v", expRcv, rcv)
// }
// }
func TestGetLoadedIdsResourceProfiles(t *testing.T) {
tpr := &TpReader{
resProfiles: map[utils.TenantID]*utils.TPResourceProfile{
@@ -762,33 +560,6 @@ func TestGetLoadedIdsResourceProfiles(t *testing.T) {
}
}
// func TestGetLoadedIdsActionTriggers(t *testing.T) {
// tpr := &TpReader{
// actionsTriggers: map[string]ActionTriggers{
// "STANDARD_TRIGGERS": {
// {
// ID: "ID1",
// UniqueID: "",
// ThresholdType: "*max_balance",
// ThresholdValue: 20,
// Recurrent: false,
// MinSleep: 0,
// Weight: 10,
// ActionsID: "LOG_WARNING",
// },
// },
// },
// }
// rcv, err := tpr.GetLoadedIds(utils.ActionTriggerPrefix)
// if err != nil {
// t.Error(err)
// }
// expRcv := []string{"STANDARD_TRIGGERS"}
// if !reflect.DeepEqual(expRcv, rcv) {
// t.Errorf("\nExpected %v but received \n%v", expRcv, rcv)
// }
// }
func TestGetLoadedIdsStatQueueProfiles(t *testing.T) {
tpr := &TpReader{
sqProfiles: map[utils.TenantID]*utils.TPStatProfile{
@@ -1053,30 +824,12 @@ func TestReloadCache(t *testing.T) {
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches): rpcInternal,
})
tpr := &TpReader{
// actions: map[string][]*Action{
// "ActionsID": {},
// },
// actionPlans: map[string]*ActionPlan{
// "ActionPlansID": {},
// },
// actionsTriggers: map[string]ActionTriggers{
// "ActionTriggersID": {},
// },
destinations: map[string]*Destination{
"DestinationsID": {},
},
timings: map[string]*utils.TPTiming{
"TimingsID": {},
},
// ratingPlans: map[string]*RatingPlan{
// "RatingPlansID": {},
// },
// ratingProfiles: map[string]*RatingProfile{
// "RatingProfilesID": {},
// },
// sharedGroups: map[string]*SharedGroup{
// "SharedGroupsID": {},
// },
resProfiles: map[utils.TenantID]*utils.TPResourceProfile{
{Tenant: "cgrates.org", ID: "resourceProfilesID"}: {},
},

View File

@@ -27,8 +27,10 @@ import (
"testing"
"time"
"github.com/cgrates/birpc"
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/engine"
"github.com/cgrates/rpcclient"
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/utils"
@@ -5148,3 +5150,491 @@ func TestLoaderServiceEnabled(t *testing.T) {
t.Errorf("Expected false, received %+v", rcv)
}
}
type ccMock struct {
calls map[string]func(ctx *context.Context, args interface{}, reply interface{}) error
}
func (ccM *ccMock) Call(ctx *context.Context, serviceMethod string, args interface{}, reply interface{}) (err error) {
if call, has := ccM.calls[serviceMethod]; !has {
return rpcclient.ErrUnsupporteServiceMethod
} else {
return call(ctx, args, reply)
}
}
func TestStoreLoadedDataAttributes(t *testing.T) {
engine.Cache.Clear(nil)
data := engine.NewInternalDB(nil, nil, false)
cfg := config.NewDefaultCGRConfig()
argExpect := utils.AttrReloadCacheWithAPIOpts{
APIOpts: nil,
Tenant: "",
ArgsCache: map[string][]string{
"AttributeProfileIDs": {"cgrates.org:attributesID"},
},
}
cM := &ccMock{
calls: map[string]func(ctx *context.Context, args interface{}, reply interface{}) error{
utils.CacheSv1ReloadCache: func(ctx *context.Context, args interface{}, reply interface{}) error {
if !reflect.DeepEqual(args, argExpect) {
t.Errorf("Expected %v \nbut received %v", utils.ToJSON(argExpect), utils.ToJSON(args))
}
return nil
},
utils.CacheSv1Clear: func(ctx *context.Context, args interface{}, reply interface{}) error {
return nil
},
},
}
rpcInternal := make(chan birpc.ClientConnector, 1)
rpcInternal <- cM
connMgr := engine.NewConnManager(cfg, map[string]chan birpc.ClientConnector{
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches): rpcInternal,
})
dm := engine.NewDataManager(data, config.CgrConfig().CacheCfg(), connMgr)
// ldr := &Loader{
// }
cacheConns := []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches)}
loaderCfg := config.CgrConfig().LoaderCfg()
fltrS := engine.NewFilterS(cfg, connMgr, dm)
ldr := NewLoader(dm, loaderCfg[0], "", fltrS, connMgr, cacheConns)
lds := map[string][]LoaderData{
"Attributes": {
{
"Tenant": "cgrates.org",
"ID": "attributesID",
},
},
}
if err := ldr.storeLoadedData(utils.MetaAttributes, lds, utils.MetaReload); err != nil {
t.Error(err)
}
}
func TestStoreLoadedDataResources(t *testing.T) {
engine.Cache.Clear(nil)
data := engine.NewInternalDB(nil, nil, false)
cfg := config.NewDefaultCGRConfig()
argExpect := utils.AttrReloadCacheWithAPIOpts{
APIOpts: nil,
Tenant: "",
ArgsCache: map[string][]string{
"ResourceIDs": {
"cgrates.org:resourcesID",
},
"ResourceProfileIDs": {
"cgrates.org:resourcesID",
},
},
}
cM := &ccMock{
calls: map[string]func(ctx *context.Context, args interface{}, reply interface{}) error{
utils.CacheSv1ReloadCache: func(ctx *context.Context, args interface{}, reply interface{}) error {
if !reflect.DeepEqual(args, argExpect) {
t.Errorf("Expected %v \nbut received %v", utils.ToJSON(argExpect), utils.ToJSON(args))
}
return nil
},
utils.CacheSv1Clear: func(ctx *context.Context, args interface{}, reply interface{}) error {
return nil
},
},
}
rpcInternal := make(chan birpc.ClientConnector, 1)
rpcInternal <- cM
connMgr := engine.NewConnManager(cfg, map[string]chan birpc.ClientConnector{
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches): rpcInternal,
})
dm := engine.NewDataManager(data, config.CgrConfig().CacheCfg(), connMgr)
// ldr := &Loader{
// }
cacheConns := []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches)}
loaderCfg := config.CgrConfig().LoaderCfg()
fltrS := engine.NewFilterS(cfg, connMgr, dm)
ldr := NewLoader(dm, loaderCfg[0], "", fltrS, connMgr, cacheConns)
lds := map[string][]LoaderData{
"Resources": {
{
"Tenant": "cgrates.org",
"ID": "resourcesID",
},
},
}
if err := ldr.storeLoadedData(utils.MetaResources, lds, utils.MetaReload); err != nil {
t.Error(err)
}
}
func TestStoreLoadedDataFilters(t *testing.T) {
engine.Cache.Clear(nil)
data := engine.NewInternalDB(nil, nil, false)
cfg := config.NewDefaultCGRConfig()
argExpect := utils.AttrReloadCacheWithAPIOpts{
APIOpts: nil,
Tenant: "",
ArgsCache: map[string][]string{
"FilterIDs": {"cgrates.org:filtersID"},
},
}
cM := &ccMock{
calls: map[string]func(ctx *context.Context, args interface{}, reply interface{}) error{
utils.CacheSv1ReloadCache: func(ctx *context.Context, args interface{}, reply interface{}) error {
if !reflect.DeepEqual(args, argExpect) {
t.Errorf("Expected %v \nbut received %v", utils.ToJSON(argExpect), utils.ToJSON(args))
}
return nil
},
utils.CacheSv1Clear: func(ctx *context.Context, args interface{}, reply interface{}) error {
return nil
},
},
}
rpcInternal := make(chan birpc.ClientConnector, 1)
rpcInternal <- cM
connMgr := engine.NewConnManager(cfg, map[string]chan birpc.ClientConnector{
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches): rpcInternal,
})
dm := engine.NewDataManager(data, config.CgrConfig().CacheCfg(), connMgr)
// ldr := &Loader{
// }
cacheConns := []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches)}
loaderCfg := config.CgrConfig().LoaderCfg()
fltrS := engine.NewFilterS(cfg, connMgr, dm)
ldr := NewLoader(dm, loaderCfg[0], "", fltrS, connMgr, cacheConns)
lds := map[string][]LoaderData{
"Filters": {
{
"Tenant": "cgrates.org",
"ID": "filtersID",
},
},
}
if err := ldr.storeLoadedData(utils.MetaFilters, lds, utils.MetaReload); err != nil {
t.Error(err)
}
}
func TestStoreLoadedDataStats(t *testing.T) {
engine.Cache.Clear(nil)
data := engine.NewInternalDB(nil, nil, false)
cfg := config.NewDefaultCGRConfig()
argExpect := utils.AttrReloadCacheWithAPIOpts{
APIOpts: nil,
Tenant: "",
ArgsCache: map[string][]string{
"StatsQueueIDs": {
"cgrates.org:statsID",
},
"StatsQueueProfileIDs": {
"cgrates.org:statsID",
},
},
}
cM := &ccMock{
calls: map[string]func(ctx *context.Context, args interface{}, reply interface{}) error{
utils.CacheSv1ReloadCache: func(ctx *context.Context, args interface{}, reply interface{}) error {
if !reflect.DeepEqual(args, argExpect) {
t.Errorf("Expected %v \nbut received %v", utils.ToJSON(argExpect), utils.ToJSON(args))
}
return nil
},
utils.CacheSv1Clear: func(ctx *context.Context, args interface{}, reply interface{}) error {
return nil
},
},
}
rpcInternal := make(chan birpc.ClientConnector, 1)
rpcInternal <- cM
connMgr := engine.NewConnManager(cfg, map[string]chan birpc.ClientConnector{
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches): rpcInternal,
})
dm := engine.NewDataManager(data, config.CgrConfig().CacheCfg(), connMgr)
// ldr := &Loader{
// }
cacheConns := []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches)}
loaderCfg := config.CgrConfig().LoaderCfg()
fltrS := engine.NewFilterS(cfg, connMgr, dm)
ldr := NewLoader(dm, loaderCfg[0], "", fltrS, connMgr, cacheConns)
lds := map[string][]LoaderData{
"StatsQueue": {
{
"Tenant": "cgrates.org",
"ID": "statsID",
},
},
}
if err := ldr.storeLoadedData(utils.MetaStats, lds, utils.MetaReload); err != nil {
t.Error(err)
}
}
func TestStoreLoadedDataThresholds(t *testing.T) {
engine.Cache.Clear(nil)
data := engine.NewInternalDB(nil, nil, false)
cfg := config.NewDefaultCGRConfig()
argExpect := utils.AttrReloadCacheWithAPIOpts{
APIOpts: nil,
Tenant: "",
ArgsCache: map[string][]string{
"ThresholdIDs": {
"cgrates.org:thresholdsID",
},
"ThresholdProfileIDs": {
"cgrates.org:thresholdsID",
},
},
}
cM := &ccMock{
calls: map[string]func(ctx *context.Context, args interface{}, reply interface{}) error{
utils.CacheSv1ReloadCache: func(ctx *context.Context, args interface{}, reply interface{}) error {
if !reflect.DeepEqual(args, argExpect) {
t.Errorf("Expected %v \nbut received %v", utils.ToJSON(argExpect), utils.ToJSON(args))
}
return nil
},
utils.CacheSv1Clear: func(ctx *context.Context, args interface{}, reply interface{}) error {
return nil
},
},
}
rpcInternal := make(chan birpc.ClientConnector, 1)
rpcInternal <- cM
connMgr := engine.NewConnManager(cfg, map[string]chan birpc.ClientConnector{
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches): rpcInternal,
})
dm := engine.NewDataManager(data, config.CgrConfig().CacheCfg(), connMgr)
// ldr := &Loader{
// }
cacheConns := []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches)}
loaderCfg := config.CgrConfig().LoaderCfg()
fltrS := engine.NewFilterS(cfg, connMgr, dm)
ldr := NewLoader(dm, loaderCfg[0], "", fltrS, connMgr, cacheConns)
lds := map[string][]LoaderData{
"Thresholds": {
{
"Tenant": "cgrates.org",
"ID": "thresholdsID",
},
},
}
if err := ldr.storeLoadedData(utils.MetaThresholds, lds, utils.MetaReload); err != nil {
t.Error(err)
}
}
func TestStoreLoadedDataRoutes(t *testing.T) {
engine.Cache.Clear(nil)
data := engine.NewInternalDB(nil, nil, false)
cfg := config.NewDefaultCGRConfig()
argExpect := utils.AttrReloadCacheWithAPIOpts{
APIOpts: nil,
Tenant: "",
ArgsCache: map[string][]string{
"RouteProfileIDs": {"cgrates.org:routesID"},
},
}
cM := &ccMock{
calls: map[string]func(ctx *context.Context, args interface{}, reply interface{}) error{
utils.CacheSv1ReloadCache: func(ctx *context.Context, args interface{}, reply interface{}) error {
if !reflect.DeepEqual(args, argExpect) {
t.Errorf("Expected %v \nbut received %v", utils.ToJSON(argExpect), utils.ToJSON(args))
}
return nil
},
utils.CacheSv1Clear: func(ctx *context.Context, args interface{}, reply interface{}) error {
return nil
},
},
}
rpcInternal := make(chan birpc.ClientConnector, 1)
rpcInternal <- cM
connMgr := engine.NewConnManager(cfg, map[string]chan birpc.ClientConnector{
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches): rpcInternal,
})
dm := engine.NewDataManager(data, config.CgrConfig().CacheCfg(), connMgr)
// ldr := &Loader{
// }
cacheConns := []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches)}
loaderCfg := config.CgrConfig().LoaderCfg()
fltrS := engine.NewFilterS(cfg, connMgr, dm)
ldr := NewLoader(dm, loaderCfg[0], "", fltrS, connMgr, cacheConns)
lds := map[string][]LoaderData{
"Routes": {
{
"Tenant": "cgrates.org",
"ID": "routesID",
},
},
}
if err := ldr.storeLoadedData(utils.MetaRoutes, lds, utils.MetaReload); err != nil {
t.Error(err)
}
}
func TestStoreLoadedDataChargers(t *testing.T) {
engine.Cache.Clear(nil)
data := engine.NewInternalDB(nil, nil, false)
cfg := config.NewDefaultCGRConfig()
argExpect := utils.AttrReloadCacheWithAPIOpts{
APIOpts: nil,
Tenant: "",
ArgsCache: map[string][]string{
"ChargerProfileIDs": {"cgrates.org:chargersID"},
},
}
cM := &ccMock{
calls: map[string]func(ctx *context.Context, args interface{}, reply interface{}) error{
utils.CacheSv1ReloadCache: func(ctx *context.Context, args interface{}, reply interface{}) error {
if !reflect.DeepEqual(args, argExpect) {
t.Errorf("Expected %v \nbut received %v", utils.ToJSON(argExpect), utils.ToJSON(args))
}
return nil
},
utils.CacheSv1Clear: func(ctx *context.Context, args interface{}, reply interface{}) error {
return nil
},
},
}
rpcInternal := make(chan birpc.ClientConnector, 1)
rpcInternal <- cM
connMgr := engine.NewConnManager(cfg, map[string]chan birpc.ClientConnector{
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches): rpcInternal,
})
dm := engine.NewDataManager(data, config.CgrConfig().CacheCfg(), connMgr)
// ldr := &Loader{
// }
cacheConns := []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches)}
loaderCfg := config.CgrConfig().LoaderCfg()
fltrS := engine.NewFilterS(cfg, connMgr, dm)
ldr := NewLoader(dm, loaderCfg[0], "", fltrS, connMgr, cacheConns)
lds := map[string][]LoaderData{
"Chargers": {
{
"Tenant": "cgrates.org",
"ID": "chargersID",
},
},
}
if err := ldr.storeLoadedData(utils.MetaChargers, lds, utils.MetaReload); err != nil {
t.Error(err)
}
}
func TestStoreLoadedDataDispatchers(t *testing.T) {
engine.Cache.Clear(nil)
data := engine.NewInternalDB(nil, nil, false)
cfg := config.NewDefaultCGRConfig()
argExpect := utils.AttrReloadCacheWithAPIOpts{
APIOpts: nil,
Tenant: "",
ArgsCache: map[string][]string{
"DispatcherProfileIDs": {"cgrates.org:dispatchersID"},
},
}
cM := &ccMock{
calls: map[string]func(ctx *context.Context, args interface{}, reply interface{}) error{
utils.CacheSv1ReloadCache: func(ctx *context.Context, args interface{}, reply interface{}) error {
if !reflect.DeepEqual(args, argExpect) {
t.Errorf("Expected %v \nbut received %v", utils.ToJSON(argExpect), utils.ToJSON(args))
}
return nil
},
utils.CacheSv1Clear: func(ctx *context.Context, args interface{}, reply interface{}) error {
return nil
},
},
}
rpcInternal := make(chan birpc.ClientConnector, 1)
rpcInternal <- cM
connMgr := engine.NewConnManager(cfg, map[string]chan birpc.ClientConnector{
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches): rpcInternal,
})
dm := engine.NewDataManager(data, config.CgrConfig().CacheCfg(), connMgr)
// ldr := &Loader{
// }
cacheConns := []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches)}
loaderCfg := config.CgrConfig().LoaderCfg()
fltrS := engine.NewFilterS(cfg, connMgr, dm)
ldr := NewLoader(dm, loaderCfg[0], "", fltrS, connMgr, cacheConns)
lds := map[string][]LoaderData{
"Dispatchers": {
{
"Tenant": "cgrates.org",
"ID": "dispatchersID",
},
},
}
if err := ldr.storeLoadedData(utils.MetaDispatchers, lds, utils.MetaReload); err != nil {
t.Error(err)
}
}
func TestStoreLoadedDataDispatcherHosts(t *testing.T) {
engine.Cache.Clear(nil)
data := engine.NewInternalDB(nil, nil, false)
cfg := config.NewDefaultCGRConfig()
argExpect := utils.AttrReloadCacheWithAPIOpts{
APIOpts: nil,
Tenant: "",
ArgsCache: map[string][]string{
"DispatcherHostIDs": {"cgrates.org:dispatcherHostsID"},
},
}
cM := &ccMock{
calls: map[string]func(ctx *context.Context, args interface{}, reply interface{}) error{
utils.CacheSv1ReloadCache: func(ctx *context.Context, args interface{}, reply interface{}) error {
if !reflect.DeepEqual(args, argExpect) {
t.Errorf("Expected %v \nbut received %v", utils.ToJSON(argExpect), utils.ToJSON(args))
}
return nil
},
utils.CacheSv1Clear: func(ctx *context.Context, args interface{}, reply interface{}) error {
return nil
},
},
}
rpcInternal := make(chan birpc.ClientConnector, 1)
rpcInternal <- cM
connMgr := engine.NewConnManager(cfg, map[string]chan birpc.ClientConnector{
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches): rpcInternal,
})
dm := engine.NewDataManager(data, config.CgrConfig().CacheCfg(), connMgr)
// ldr := &Loader{
// }
cacheConns := []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches)}
loaderCfg := config.CgrConfig().LoaderCfg()
fltrS := engine.NewFilterS(cfg, connMgr, dm)
ldr := NewLoader(dm, loaderCfg[0], "", fltrS, connMgr, cacheConns)
lds := map[string][]LoaderData{
"DispatcherHosts": {
{
"Tenant": "cgrates.org",
"ID": "dispatcherHostsID",
"Address": "192.168.100.1",
},
},
}
if err := ldr.storeLoadedData(utils.MetaDispatcherHosts, lds, utils.MetaReload); err != nil {
t.Error(err)
}
}