Improving coverage at engine

This commit is contained in:
arberkatellari
2022-12-12 10:52:31 -05:00
committed by Dan Christian Bogos
parent cbe17dd080
commit d59c04e291
3 changed files with 211 additions and 27 deletions

View File

@@ -546,3 +546,123 @@ func TestDatamanagerCacheDataFromDBNotCachedActionProfilePrefix(t *testing.T) {
t.Error(err)
}
}
func TestDataManagerDataDB(t *testing.T) {
var dm *DataManager
rcv := dm.DataDB()
if rcv != nil {
t.Errorf("Expected DataDB to be nil, Received <%+v>", rcv)
}
}
func TestDataManagerSetFilterDMNil(t *testing.T) {
expErr := utils.ErrNoDatabaseConn
var dm *DataManager
err := dm.SetFilter(context.Background(), nil, true)
if err != expErr {
t.Errorf("Expected error <%v>, Received error <%v>", expErr, err)
}
}
func TestDataManagerSetFilterErrConnID(t *testing.T) {
tmp := Cache
cfgtmp := config.CgrConfig()
defer func() {
Cache = tmp
config.SetCgrConfig(cfgtmp)
}()
cfg := config.NewDefaultCGRConfig()
cfg.DataDbCfg().Items[utils.MetaFilters].Remote = true
config.SetCgrConfig(cfg)
data := NewInternalDB(nil, nil, cfg.DataDbCfg().Items)
dm := NewDataManager(data, cfg.CacheCfg(), nil)
fltr := &Filter{
Tenant: "cgrates.org",
ID: "fltr1",
Rules: []*FilterRule{{
Type: utils.MetaString,
Element: "~*req.Account",
Values: []string{"1001", "1002"},
}},
}
expErr := "MANDATORY_IE_MISSING: [connIDs]"
err := dm.SetFilter(context.Background(), fltr, true)
if err.Error() != expErr {
t.Errorf("Expected error <%v>, Received error <%v>", expErr, err)
}
}
func TestDataManagerSetFilterErrSetFilterDrv(t *testing.T) {
tmp := Cache
cfgtmp := config.CgrConfig()
defer func() {
Cache = tmp
config.SetCgrConfig(cfgtmp)
}()
Cache.Clear(nil)
cfg := config.NewDefaultCGRConfig()
data := NewInternalDB(nil, nil, cfg.DataDbCfg().Items)
dm := NewDataManager(data, cfg.CacheCfg(), nil)
dm.dataDB = &DataDBMock{
GetFilterDrvF: func(ctx *context.Context, str1 string, str2 string) (*Filter, error) {
return nil, utils.ErrNotFound
},
}
fltr := &Filter{
Tenant: "cgrates.org",
ID: "fltr1",
Rules: []*FilterRule{{
Type: utils.MetaString,
Element: "~*req.Account",
Values: []string{"1001", "1002"},
}},
}
err := dm.SetFilter(context.Background(), fltr, true)
if err != utils.ErrNotImplemented {
t.Errorf("Expected error <%v>, Received error <%v>", utils.ErrNotImplemented, err)
}
}
// unfinished
// func TestDataManagerSetFilterErrUpdateFilterIndex(t *testing.T) {
// tmp := Cache
// cfgtmp := config.CgrConfig()
// defer func() {
// Cache = tmp
// config.SetCgrConfig(cfgtmp)
// }()
// Cache.Clear(nil)
// cfg := config.NewDefaultCGRConfig()
// data := NewInternalDB(nil, nil, cfg.DataDbCfg().Items)
// cM := NewConnManager(cfg)
// dm := NewDataManager(data, cfg.CacheCfg(), cM)
// dm.dataDB = &DataDBMock{
// GetIndexesDrvF: func(ctx *context.Context, idxItmType, tntCtx, idxKey, transactionID string) (indexes map[string]utils.StringSet, err error) {
// return nil, utils.ErrNotImplemented
// },
// }
// fltr := &Filter{
// Tenant: "cgrates.org",
// ID: "*stirng:~*req.Account:1001",
// Rules: []*FilterRule{{
// Type: utils.MetaString,
// Element: "~*req.Account",
// Values: []string{"1001", "1002"},
// }},
// }
// err := dm.SetFilter(context.Background(), fltr, true)
// if err != nil {
// t.Errorf("Expected error <%v>, Received error <%v>", utils.ErrNotImplemented, err)
// }
// }

View File

@@ -23,6 +23,7 @@ import (
"testing"
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/utils"
)
@@ -45,3 +46,29 @@ func TestFilterHelpersWeightFromDynamics(t *testing.T) {
t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result)
}
}
func TestFilterHelpersWeightFromDynamicsErr(t *testing.T) {
ctx := context.Background()
dWs := []*utils.DynamicWeight{
{
FilterIDs: []string{"*stirng:~*req.Account:1001:4fields"},
Weight: 64,
},
}
cfg := config.NewDefaultCGRConfig()
data := NewInternalDB(nil, nil, cfg.DataDbCfg().Items)
dm := NewDataManager(data, config.CgrConfig().CacheCfg(), nil)
cM := NewConnManager(cfg)
fltrs := NewFilterS(cfg, cM, dm)
tnt := utils.CGRateSorg
ev := utils.MapStorage{}
expErr := "NOT_IMPLEMENTED:*stirng"
_, err := WeightFromDynamics(ctx, dWs, fltrs, tnt, ev)
if err.Error() != expErr {
t.Errorf("Expected error <%v>, received error <%V>", expErr, err)
}
}

View File

@@ -24,6 +24,7 @@ import (
"testing"
"time"
"github.com/cgrates/birpc"
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/utils"
@@ -192,27 +193,28 @@ func TestIntServiceNewService(t *testing.T) {
type TestRPCDspMock struct{} // exported for service
func (TestRPCDspMock) AccountSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) ActionSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) AttributeSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) CacheSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) ChargerSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) ConfigSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) DispatcherSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) GuardianSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) RateSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) ReplicatorSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) ResourceSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) RouteSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) SessionSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) StatSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) ThresholdSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) CDRsv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) EeSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) CoreSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) AnalyzerSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) AdminSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) LoaderSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) AccountSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) ActionSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) AttributeSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) CacheSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) ChargerSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) ConfigSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) DispatcherSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) GuardianSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) RateSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) ReplicatorSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) ResourceSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) RouteSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) SessionSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) StatSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) ThresholdSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) CDRsv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) EeSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) CoreSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) AnalyzerSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) AdminSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) LoaderSv1Do(*context.Context, interface{}, *string) error { return nil }
func (TestRPCDspMock) ServiceManagerv1Do(*context.Context, interface{}, *string) error { return nil }
func TestIntServiceNewDispatcherService(t *testing.T) {
expErrMsg := `rpc.Register: no service name for type struct {}`
@@ -240,17 +242,52 @@ func TestIntServiceNewDispatcherService(t *testing.T) {
"RouteSv1": {"Do", "Ping"},
"SessionSv1": {"Do", "Ping"},
"StatSv1": {"Do", "Ping"},
"TestRPCDspMock": {"AccountSv1Do", "ActionSv1Do", "AdminSv1Do", "AnalyzerSv1Do", "AttributeSv1Do", "CDRsv1Do", "CacheSv1Do", "ChargerSv1Do", "ConfigSv1Do", "CoreSv1Do", "DispatcherSv1Do", "EeSv1Do", "GuardianSv1Do", "LoaderSv1Do", "Ping", "RateSv1Do", "ReplicatorSv1Do", "ResourceSv1Do", "RouteSv1Do", "SessionSv1Do", "StatSv1Do", "ThresholdSv1Do"},
"TestRPCDspMock": {"AccountSv1Do", "ActionSv1Do", "AdminSv1Do", "AnalyzerSv1Do", "AttributeSv1Do", "CDRsv1Do", "CacheSv1Do", "ChargerSv1Do", "ConfigSv1Do", "CoreSv1Do", "DispatcherSv1Do", "EeSv1Do", "GuardianSv1Do", "LoaderSv1Do", "Ping", "RateSv1Do", "ReplicatorSv1Do", "ResourceSv1Do", "RouteSv1Do", "ServiceManagerv1Do", "SessionSv1Do", "StatSv1Do", "ThresholdSv1Do"},
"ThresholdSv1": {"Do", "Ping"},
"ReplicatorSv1": {"Do", "Ping"},
"EeSv1": {"Do", "Ping"},
"CoreSv1": {"Do", "Ping"},
"AnalyzerSv1": {"Do", "Ping"},
"AdminSv1": {"Do", "Ping"},
"LoaderSv1": {"Do", "Ping"},
"EeSv1": {"Do", "Ping"},
"CoreSv1": {"Do", "Ping"},
"AnalyzerSv1": {"Do", "Ping"},
"AdminSv1": {"Do", "Ping"},
"LoaderSv1": {"Do", "Ping"},
"ServiceManagerV1": {"Do", "Ping"},
}
if !reflect.DeepEqual(exp, methods) {
t.Errorf("Expeceted: %v, \nreceived: \n%v", utils.ToJSON(exp), utils.ToJSON(methods))
}
}
func TestNewRPCPoolUnsupportedTransport(t *testing.T) {
tmp := Cache
defer func() {
Cache = tmp
}()
connID := rpcclient.BiRPCInternal + "connID"
cfg := config.NewDefaultCGRConfig()
cfg.RPCConns()[connID] = config.NewDfltRPCConn()
cc := make(chan birpc.ClientConnector, 1)
cM := &ConnManager{
cfg: cfg,
rpcInternal: map[string]chan birpc.ClientConnector{
connID: cc,
},
connCache: ltcache.NewCache(-1, 0, true, nil),
}
badConf := []*config.RemoteHost{
{
Address: "inexistednt Addr",
Transport: "unsupported transport",
},
}
experr := "Unsupported transport: <unsupported transport>"
if _, err := NewRPCPool(context.Background(), utils.MetaFirst, "", "", "", cfg.GeneralCfg().ConnectAttempts,
cfg.GeneralCfg().Reconnects, cfg.GeneralCfg().MaxReconnectInterval, cfg.GeneralCfg().ConnectTimeout,
cfg.GeneralCfg().ReplyTimeout, badConf, cc, true, nil, "", cM.connCache); err == nil || err.Error() != experr {
t.Errorf("Expected error <%v>, received error <%v>", experr, err)
}
}