improving coverage at engine

This commit is contained in:
gezimbll
2023-01-27 10:52:02 -05:00
committed by Dan Christian Bogos
parent d9821eb1bb
commit 2217d1525c
3 changed files with 222 additions and 2 deletions

View File

@@ -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)
}
}

View File

@@ -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
}

View File

@@ -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)
}
}