mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
improving coverage at engine
This commit is contained in:
committed by
Dan Christian Bogos
parent
d9821eb1bb
commit
2217d1525c
@@ -2181,3 +2181,110 @@ func TestCDRServerListenAndServe2(t *testing.T) {
|
||||
}()
|
||||
cdrS.ListenAndServe(stopChan)
|
||||
}
|
||||
|
||||
func TestStoreSMCostErr(t *testing.T) {
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
tmpConnMgr := connMgr
|
||||
tmpCache := Cache
|
||||
defer func() {
|
||||
connMgr = tmpConnMgr
|
||||
config.SetCgrConfig(config.NewDefaultCGRConfig())
|
||||
Cache = tmpCache
|
||||
}()
|
||||
Cache.Clear(nil)
|
||||
cfg.DataDbCfg().Items = map[string]*config.ItemOpt{
|
||||
utils.CacheSessionCostsTBL: {
|
||||
Replicate: true,
|
||||
},
|
||||
}
|
||||
db := NewInternalDB(nil, nil, true, cfg.DataDbCfg().Items)
|
||||
db.db.Set(utils.CacheSessionCostsTBL, "CGRID:CGRID", nil, []string{"GRP_1"}, true, utils.NonTransactional)
|
||||
dm := NewDataManager(db, cfg.CacheCfg(), nil)
|
||||
cdrS := &CDRServer{
|
||||
cgrCfg: cfg,
|
||||
connMgr: connMgr,
|
||||
dm: dm,
|
||||
cdrDb: db,
|
||||
guard: guardian.Guardian,
|
||||
}
|
||||
smCost := &SMCost{
|
||||
CGRID: "CGRID",
|
||||
RunID: utils.MetaDefault,
|
||||
OriginHost: utils.FreeSWITCHAgent,
|
||||
OriginID: "Origin1",
|
||||
Usage: time.Second,
|
||||
CostSource: utils.MetaSessionS,
|
||||
CostDetails: &EventCost{
|
||||
CGRID: "164b0422fdc6a5117031b427439482c6a4f90e41",
|
||||
RunID: utils.MetaDefault,
|
||||
StartTime: time.Date(2017, 1, 9, 16, 18, 21, 0, time.UTC),
|
||||
Charges: []*ChargingInterval{
|
||||
{
|
||||
RatingID: "c1a5ab9",
|
||||
Increments: []*ChargingIncrement{
|
||||
{
|
||||
Usage: 0,
|
||||
Cost: 0.1,
|
||||
AccountingID: "9bdad10",
|
||||
CompressFactor: 1,
|
||||
},
|
||||
},
|
||||
CompressFactor: 1,
|
||||
},
|
||||
},
|
||||
AccountSummary: &AccountSummary{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "dan",
|
||||
BalanceSummaries: []*BalanceSummary{
|
||||
{
|
||||
UUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010",
|
||||
Type: utils.MetaMonetary,
|
||||
Value: 50,
|
||||
},
|
||||
},
|
||||
AllowNegative: false,
|
||||
Disabled: false,
|
||||
},
|
||||
Rating: Rating{
|
||||
"3cd6425": &RatingUnit{
|
||||
RoundingMethod: "*up",
|
||||
RoundingDecimals: 5,
|
||||
TimingID: "7f324ab",
|
||||
RatesID: "4910ecf",
|
||||
RatingFiltersID: "43e77dc",
|
||||
},
|
||||
},
|
||||
Accounting: Accounting{
|
||||
"a012888": &BalanceCharge{
|
||||
AccountID: "cgrates.org:dan",
|
||||
BalanceUUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010",
|
||||
Units: 0.01,
|
||||
},
|
||||
},
|
||||
RatingFilters: RatingFilters{
|
||||
"43e77dc": RatingMatchedFilters{
|
||||
"DestinationID": "GERMANY",
|
||||
"DestinationPrefix": "+49",
|
||||
"RatingPlanID": "RPL_RETAIL1",
|
||||
"Subject": "*out:cgrates.org:call:*any",
|
||||
},
|
||||
},
|
||||
Rates: ChargedRates{
|
||||
"ec1a177": RateGroups{
|
||||
&RGRate{
|
||||
GroupIntervalStart: 0,
|
||||
Value: 0.01,
|
||||
RateIncrement: time.Minute,
|
||||
RateUnit: time.Second},
|
||||
},
|
||||
},
|
||||
Timings: ChargedTimings{
|
||||
"7f324ab": &ChargedTiming{
|
||||
StartTime: "00:00:00",
|
||||
}}}}
|
||||
|
||||
if err := cdrS.storeSMCost(smCost, true); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -41,6 +41,8 @@ type DataDBMock struct {
|
||||
GetActionPlanDrvF func(key string) (ap *ActionPlan, err error)
|
||||
SetActionPlanDrvF func(key string, ap *ActionPlan) (err error)
|
||||
RemoveActionPlanDrvF func(key string) (err error)
|
||||
GetRouteProfileDrvF func(tenant, id string) (rp *RouteProfile, err error)
|
||||
RemoveRouteProfileDrvF func(tenant, id string) error
|
||||
}
|
||||
|
||||
// Storage methods
|
||||
@@ -379,7 +381,10 @@ func (dbM *DataDBMock) RemoveFilterDrv(string, string) error {
|
||||
return utils.ErrNotImplemented
|
||||
}
|
||||
|
||||
func (dbM *DataDBMock) GetRouteProfileDrv(string, string) (*RouteProfile, error) {
|
||||
func (dbM *DataDBMock) GetRouteProfileDrv(tenant, id string) (*RouteProfile, error) {
|
||||
if dbM.GetRouteProfileDrvF != nil {
|
||||
return dbM.GetRouteProfileDrvF(tenant, id)
|
||||
}
|
||||
return nil, utils.ErrNotImplemented
|
||||
}
|
||||
|
||||
@@ -387,7 +392,11 @@ func (dbM *DataDBMock) SetRouteProfileDrv(*RouteProfile) error {
|
||||
return utils.ErrNotImplemented
|
||||
}
|
||||
|
||||
func (dbM *DataDBMock) RemoveRouteProfileDrv(string, string) error {
|
||||
func (dbM *DataDBMock) RemoveRouteProfileDrv(tenant, id string) error {
|
||||
|
||||
if dbM.RemoveRouteProfileDrvF != nil {
|
||||
return dbM.RemoveRouteProfileDrvF(tenant, id)
|
||||
}
|
||||
return utils.ErrNotImplemented
|
||||
}
|
||||
|
||||
|
||||
@@ -4775,3 +4775,107 @@ func TestGetDispatcherProfileErr(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRemoveIndexFiltersItem(t *testing.T) {
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
tmpCache := Cache
|
||||
defer func() {
|
||||
config.SetCgrConfig(config.NewDefaultCGRConfig())
|
||||
Cache = tmpCache
|
||||
}()
|
||||
Cache.Clear(nil)
|
||||
db := NewInternalDB(nil, nil, true, cfg.DataDbCfg().Items)
|
||||
dm := NewDataManager(db, cfg.CacheCfg(), nil)
|
||||
fltr := &Filter{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "FLTR_ACCOUNT_1001",
|
||||
Rules: []*FilterRule{
|
||||
{
|
||||
Type: utils.MetaString,
|
||||
Element: "~*req.Account",
|
||||
Values: []string{"1001"},
|
||||
},
|
||||
},
|
||||
}
|
||||
if err := dm.SetFilter(fltr, false); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
thd := &ThresholdProfile{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "THD_ACNT_1001",
|
||||
FilterIDs: []string{"FLTR_ACCOUNT_1001"},
|
||||
ActivationInterval: &utils.ActivationInterval{
|
||||
ActivationTime: time.Date(2014, 7, 29, 15, 0, 0, 0, time.UTC),
|
||||
},
|
||||
MaxHits: -1,
|
||||
MinHits: 0,
|
||||
MinSleep: 0,
|
||||
Blocker: false,
|
||||
Weight: 10.0,
|
||||
ActionIDs: []string{"TOPUP_MONETARY_10"},
|
||||
Async: false,
|
||||
}
|
||||
if err := dm.SetThresholdProfile(thd, false); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
indexes := map[string]utils.StringSet{
|
||||
"*string:*req.Account:1001": {
|
||||
"THD_ACNT_1001": struct{}{},
|
||||
},
|
||||
}
|
||||
|
||||
if err := dm.SetIndexes(utils.CacheReverseFilterIndexes, "cgrates.org:FLTR_ACCOUNT_1001:*threshold_filter_indexes",
|
||||
indexes, true, utils.NonTransactional); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if err := removeIndexFiltersItem(dm, utils.CacheThresholdFilterIndexes, "cgrates", "THD_ACNT_1001", []string{"FLTR_ACCOUNT_1001"}); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestDmRemoveRouteProfileErr(t *testing.T) {
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
defer func() {
|
||||
config.SetCgrConfig(config.NewDefaultCGRConfig())
|
||||
}()
|
||||
db := NewInternalDB(nil, nil, true, cfg.DataDbCfg().Items)
|
||||
dm := NewDataManager(db, cfg.CacheCfg(), nil)
|
||||
oldRp := &RouteProfile{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "RouteProfilePrefix4",
|
||||
Sorting: utils.MetaWeight,
|
||||
Routes: []*Route{
|
||||
{
|
||||
ID: "route1",
|
||||
Weight: 10.0,
|
||||
RouteParameters: "param1",
|
||||
},
|
||||
},
|
||||
Weight: 0,
|
||||
}
|
||||
dm.dataDB = &DataDBMock{
|
||||
GetRouteProfileDrvF: func(tenant, id string) (rp *RouteProfile, err error) {
|
||||
return oldRp, nil
|
||||
},
|
||||
RemoveRouteProfileDrvF: func(tenant, id string) error {
|
||||
return nil
|
||||
},
|
||||
}
|
||||
if err := dm.RemoveRouteProfile("cgrates.org", "RP1", true); err == nil || err != utils.ErrNotImplemented {
|
||||
t.Error(err)
|
||||
}
|
||||
dm.dataDB = &DataDBMock{
|
||||
GetRouteProfileDrvF: func(tenant, id string) (rp *RouteProfile, err error) {
|
||||
return oldRp, nil
|
||||
},
|
||||
}
|
||||
if err := dm.RemoveRouteProfile("cgrates.org", "RP1", true); err == nil || err != utils.ErrNotImplemented {
|
||||
t.Error(err)
|
||||
}
|
||||
dm.dataDB = &DataDBMock{}
|
||||
if err := dm.RemoveRouteProfile("cgrates.org", "RP1", true); err == nil || err != utils.ErrNotImplemented {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user