mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-15 13:19:53 +05:00
Improving coverage at engine
This commit is contained in:
committed by
Dan Christian Bogos
parent
cbe17dd080
commit
d59c04e291
@@ -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)
|
||||
// }
|
||||
// }
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user