Coverage tests in engine

This commit is contained in:
arberkatellari
2023-01-23 10:56:50 -05:00
committed by Dan Christian Bogos
parent ce512854f2
commit ee196765c3
2 changed files with 394 additions and 57 deletions

View File

@@ -3043,3 +3043,345 @@ func TestDMCacheDataFromDBAttributeFilterIndexes(t *testing.T) {
}
}
func TestDMCacheDataFromDBResourceFilterIndexes(t *testing.T) {
tmp := Cache
defer func() {
Cache = tmp
}()
Cache.Clear(nil)
cfg := config.NewDefaultCGRConfig()
data := NewInternalDB(nil, nil, cfg.DataDbCfg().Items)
cM := NewConnManager(cfg)
dm := NewDataManager(data, cfg.CacheCfg(), cM)
indexes := map[string]utils.StringSet{"*string:*req.Account:1002": {"ATTR1": {}, "ATTR2": {}}}
if err := dm.SetIndexes(context.Background(), utils.CacheResourceFilterIndexes, "cgrates.org", indexes, true, utils.NonTransactional); err != nil {
t.Error(err)
}
if _, ok := Cache.Get(utils.CacheResourceFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); ok {
t.Error("expected ok to be false")
}
if err := dm.CacheDataFromDB(context.Background(), utils.ResourceFilterIndexes, []string{utils.MetaAny}, false); err != nil {
t.Error(err)
}
exp := utils.StringSet{"ATTR1": {}, "ATTR2": {}}
if rcv, ok := Cache.Get(utils.CacheResourceFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); !ok {
t.Error("expected ok to be true")
} else if !reflect.DeepEqual(rcv, exp) {
t.Errorf("\nExpected <%+v>, \nReceived <%+v>", exp, rcv)
}
}
func TestDMCacheDataFromDBStatFilterIndexes(t *testing.T) {
tmp := Cache
defer func() {
Cache = tmp
}()
Cache.Clear(nil)
cfg := config.NewDefaultCGRConfig()
data := NewInternalDB(nil, nil, cfg.DataDbCfg().Items)
cM := NewConnManager(cfg)
dm := NewDataManager(data, cfg.CacheCfg(), cM)
indexes := map[string]utils.StringSet{"*string:*req.Account:1002": {"ATTR1": {}, "ATTR2": {}}}
if err := dm.SetIndexes(context.Background(), utils.CacheStatFilterIndexes, "cgrates.org", indexes, true, utils.NonTransactional); err != nil {
t.Error(err)
}
if _, ok := Cache.Get(utils.CacheStatFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); ok {
t.Error("expected ok to be false")
}
if err := dm.CacheDataFromDB(context.Background(), utils.StatFilterIndexes, []string{utils.MetaAny}, false); err != nil {
t.Error(err)
}
exp := utils.StringSet{"ATTR1": {}, "ATTR2": {}}
if rcv, ok := Cache.Get(utils.CacheStatFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); !ok {
t.Error("expected ok to be true")
} else if !reflect.DeepEqual(rcv, exp) {
t.Errorf("\nExpected <%+v>, \nReceived <%+v>", exp, rcv)
}
}
func TestDMCacheDataFromDBThresholdFilterIndexes(t *testing.T) {
tmp := Cache
defer func() {
Cache = tmp
}()
Cache.Clear(nil)
cfg := config.NewDefaultCGRConfig()
data := NewInternalDB(nil, nil, cfg.DataDbCfg().Items)
cM := NewConnManager(cfg)
dm := NewDataManager(data, cfg.CacheCfg(), cM)
indexes := map[string]utils.StringSet{"*string:*req.Account:1002": {"ATTR1": {}, "ATTR2": {}}}
if err := dm.SetIndexes(context.Background(), utils.CacheThresholdFilterIndexes, "cgrates.org", indexes, true, utils.NonTransactional); err != nil {
t.Error(err)
}
if _, ok := Cache.Get(utils.CacheThresholdFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); ok {
t.Error("expected ok to be false")
}
if err := dm.CacheDataFromDB(context.Background(), utils.ThresholdFilterIndexes, []string{utils.MetaAny}, false); err != nil {
t.Error(err)
}
exp := utils.StringSet{"ATTR1": {}, "ATTR2": {}}
if rcv, ok := Cache.Get(utils.CacheThresholdFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); !ok {
t.Error("expected ok to be true")
} else if !reflect.DeepEqual(rcv, exp) {
t.Errorf("\nExpected <%+v>, \nReceived <%+v>", exp, rcv)
}
}
func TestDMCacheDataFromDBRouteFilterIndexes(t *testing.T) {
tmp := Cache
defer func() {
Cache = tmp
}()
Cache.Clear(nil)
cfg := config.NewDefaultCGRConfig()
data := NewInternalDB(nil, nil, cfg.DataDbCfg().Items)
cM := NewConnManager(cfg)
dm := NewDataManager(data, cfg.CacheCfg(), cM)
indexes := map[string]utils.StringSet{"*string:*req.Account:1002": {"ATTR1": {}, "ATTR2": {}}}
if err := dm.SetIndexes(context.Background(), utils.CacheRouteFilterIndexes, "cgrates.org", indexes, true, utils.NonTransactional); err != nil {
t.Error(err)
}
if _, ok := Cache.Get(utils.CacheRouteFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); ok {
t.Error("expected ok to be false")
}
if err := dm.CacheDataFromDB(context.Background(), utils.RouteFilterIndexes, []string{utils.MetaAny}, false); err != nil {
t.Error(err)
}
exp := utils.StringSet{"ATTR1": {}, "ATTR2": {}}
if rcv, ok := Cache.Get(utils.CacheRouteFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); !ok {
t.Error("expected ok to be true")
} else if !reflect.DeepEqual(rcv, exp) {
t.Errorf("\nExpected <%+v>, \nReceived <%+v>", exp, rcv)
}
}
func TestDMCacheDataFromDBChargerFilterIndexes(t *testing.T) {
tmp := Cache
defer func() {
Cache = tmp
}()
Cache.Clear(nil)
cfg := config.NewDefaultCGRConfig()
data := NewInternalDB(nil, nil, cfg.DataDbCfg().Items)
cM := NewConnManager(cfg)
dm := NewDataManager(data, cfg.CacheCfg(), cM)
indexes := map[string]utils.StringSet{"*string:*req.Account:1002": {"ATTR1": {}, "ATTR2": {}}}
if err := dm.SetIndexes(context.Background(), utils.CacheChargerFilterIndexes, "cgrates.org", indexes, true, utils.NonTransactional); err != nil {
t.Error(err)
}
if _, ok := Cache.Get(utils.CacheChargerFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); ok {
t.Error("expected ok to be false")
}
if err := dm.CacheDataFromDB(context.Background(), utils.ChargerFilterIndexes, []string{utils.MetaAny}, false); err != nil {
t.Error(err)
}
exp := utils.StringSet{"ATTR1": {}, "ATTR2": {}}
if rcv, ok := Cache.Get(utils.CacheChargerFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); !ok {
t.Error("expected ok to be true")
} else if !reflect.DeepEqual(rcv, exp) {
t.Errorf("\nExpected <%+v>, \nReceived <%+v>", exp, rcv)
}
}
func TestDMCacheDataFromDBDispatcherFilterIndexes(t *testing.T) {
tmp := Cache
defer func() {
Cache = tmp
}()
Cache.Clear(nil)
cfg := config.NewDefaultCGRConfig()
data := NewInternalDB(nil, nil, cfg.DataDbCfg().Items)
cM := NewConnManager(cfg)
dm := NewDataManager(data, cfg.CacheCfg(), cM)
indexes := map[string]utils.StringSet{"*string:*req.Account:1002": {"ATTR1": {}, "ATTR2": {}}}
if err := dm.SetIndexes(context.Background(), utils.CacheDispatcherFilterIndexes, "cgrates.org", indexes, true, utils.NonTransactional); err != nil {
t.Error(err)
}
if _, ok := Cache.Get(utils.CacheDispatcherFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); ok {
t.Error("expected ok to be false")
}
if err := dm.CacheDataFromDB(context.Background(), utils.DispatcherFilterIndexes, []string{utils.MetaAny}, false); err != nil {
t.Error(err)
}
exp := utils.StringSet{"ATTR1": {}, "ATTR2": {}}
if rcv, ok := Cache.Get(utils.CacheDispatcherFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); !ok {
t.Error("expected ok to be true")
} else if !reflect.DeepEqual(rcv, exp) {
t.Errorf("\nExpected <%+v>, \nReceived <%+v>", exp, rcv)
}
}
func TestDMCacheDataFromDBRateProfilesFilterIndexPrfx(t *testing.T) {
tmp := Cache
defer func() {
Cache = tmp
}()
Cache.Clear(nil)
cfg := config.NewDefaultCGRConfig()
data := NewInternalDB(nil, nil, cfg.DataDbCfg().Items)
cM := NewConnManager(cfg)
dm := NewDataManager(data, cfg.CacheCfg(), cM)
indexes := map[string]utils.StringSet{"*string:*req.Account:1002": {"ATTR1": {}, "ATTR2": {}}}
if err := dm.SetIndexes(context.Background(), utils.CacheRateProfilesFilterIndexes, "cgrates.org", indexes, true, utils.NonTransactional); err != nil {
t.Error(err)
}
if _, ok := Cache.Get(utils.CacheRateProfilesFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); ok {
t.Error("expected ok to be false")
}
if err := dm.CacheDataFromDB(context.Background(), utils.RateProfilesFilterIndexPrfx, []string{utils.MetaAny}, false); err != nil {
t.Error(err)
}
exp := utils.StringSet{"ATTR1": {}, "ATTR2": {}}
if rcv, ok := Cache.Get(utils.CacheRateProfilesFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); !ok {
t.Error("expected ok to be true")
} else if !reflect.DeepEqual(rcv, exp) {
t.Errorf("\nExpected <%+v>, \nReceived <%+v>", exp, rcv)
}
}
func TestDMCacheDataFromDBRateFilterIndexPrfx(t *testing.T) {
tmp := Cache
defer func() {
Cache = tmp
}()
Cache.Clear(nil)
cfg := config.NewDefaultCGRConfig()
data := NewInternalDB(nil, nil, cfg.DataDbCfg().Items)
cM := NewConnManager(cfg)
dm := NewDataManager(data, cfg.CacheCfg(), cM)
indexes := map[string]utils.StringSet{"*string:*req.Account:1002": {"ATTR1": {}, "ATTR2": {}}}
if err := dm.SetIndexes(context.Background(), utils.CacheRateFilterIndexes, "cgrates.org", indexes, true, utils.NonTransactional); err != nil {
t.Error(err)
}
if _, ok := Cache.Get(utils.CacheRateFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); ok {
t.Error("expected ok to be false")
}
if err := dm.CacheDataFromDB(context.Background(), utils.RateFilterIndexPrfx, []string{utils.MetaAny}, false); err != nil {
t.Error(err)
}
exp := utils.StringSet{"ATTR1": {}, "ATTR2": {}}
if rcv, ok := Cache.Get(utils.CacheRateFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); !ok {
t.Error("expected ok to be true")
} else if !reflect.DeepEqual(rcv, exp) {
t.Errorf("\nExpected <%+v>, \nReceived <%+v>", exp, rcv)
}
}
func TestDMCacheDataFromDBActionProfilesFilterIndexPrfx(t *testing.T) {
tmp := Cache
defer func() {
Cache = tmp
}()
Cache.Clear(nil)
cfg := config.NewDefaultCGRConfig()
data := NewInternalDB(nil, nil, cfg.DataDbCfg().Items)
cM := NewConnManager(cfg)
dm := NewDataManager(data, cfg.CacheCfg(), cM)
indexes := map[string]utils.StringSet{"*string:*req.Account:1002": {"ATTR1": {}, "ATTR2": {}}}
if err := dm.SetIndexes(context.Background(), utils.CacheActionProfilesFilterIndexes, "cgrates.org", indexes, true, utils.NonTransactional); err != nil {
t.Error(err)
}
if _, ok := Cache.Get(utils.CacheActionProfilesFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); ok {
t.Error("expected ok to be false")
}
if err := dm.CacheDataFromDB(context.Background(), utils.ActionProfilesFilterIndexPrfx, []string{utils.MetaAny}, false); err != nil {
t.Error(err)
}
exp := utils.StringSet{"ATTR1": {}, "ATTR2": {}}
if rcv, ok := Cache.Get(utils.CacheActionProfilesFilterIndexes, utils.ConcatenatedKey("cgrates.org", "*string:*req.Account:1002")); !ok {
t.Error("expected ok to be true")
} else if !reflect.DeepEqual(rcv, exp) {
t.Errorf("\nExpected <%+v>, \nReceived <%+v>", exp, rcv)
}
}
func TestDMCacheDataFromDBActionProfilesFilterIndexPrfxErr(t *testing.T) {
tmp := Cache
defer func() {
Cache = tmp
}()
Cache.Clear(nil)
cfg := config.NewDefaultCGRConfig()
data := NewInternalDB(nil, nil, cfg.DataDbCfg().Items)
cM := NewConnManager(cfg)
dm := NewDataManager(data, cfg.CacheCfg(), cM)
errExp := "WRONG_IDX_KEY_FORMAT<tntCtx:*prefix:~*accounts>"
if err := dm.CacheDataFromDB(context.Background(), utils.AttributeFilterIndexes, []string{"tntCtx:*prefix:~*accounts"}, false); errExp != err.Error() {
t.Errorf("Expected %v\n but received %v", errExp, err)
}
}

View File

@@ -18,31 +18,33 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
package engine
/*
import (
"reflect"
"testing"
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/utils"
"github.com/segmentio/kafka-go"
)
func TestLoggerNewLoggerExport(t *testing.T) {
cfg := config.NewDefaultCGRConfig()
exp := &ExportLogger{
logLevel: 6,
nodeID: "123",
tenant: "cgrates.org",
loggOpts: cfg.LoggerCfg().Opts,
writer: &kafka.Writer{
Addr: kafka.TCP(cfg.LoggerCfg().Opts.KafkaConn),
Topic: cfg.LoggerCfg().Opts.KafkaTopic,
MaxAttempts: cfg.LoggerCfg().Opts.Attempts,
},
}
if rcv, err := NewLogger(utils.MetaKafka, "cgrates.org", "123", cfg.LoggerCfg()); err != nil {
cM := NewConnManager(cfg)
exp := NewExportLogger(context.Background(), "123", "cgrates.org", 6, cM, cfg)
if rcv, err := NewLogger(context.Background(), utils.MetaKafkaLog, "cgrates.org", "123", cM, cfg); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(rcv.(*ExportLogger), exp) {
} else if !reflect.DeepEqual(rcv, exp) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", exp, rcv)
}
}
func TestLoggerNewLoggerDefault(t *testing.T) {
cfg := config.NewDefaultCGRConfig()
cM := NewConnManager(cfg)
experr := `unsupported logger: <invalid>`
if _, err := NewLogger("invalid", "cgrates.org", "123", cfg.LoggerCfg()); err == nil ||
if _, err := NewLogger(context.Background(), "invalid", "cgrates.org", "123", cM, cfg); err == nil ||
err.Error() != experr {
t.Errorf("expected: <%s>, \nreceived: <%s>", experr, err)
}
@@ -50,69 +52,62 @@ func TestLoggerNewLoggerDefault(t *testing.T) {
func TestLoggerNewExportLogger(t *testing.T) {
cfg := config.NewDefaultCGRConfig()
cM := NewConnManager(cfg)
exp := &ExportLogger{
logLevel: 7,
nodeID: "123",
tenant: "cgrates.org",
loggOpts: cfg.LoggerCfg().Opts,
writer: &kafka.Writer{
ctx: context.Background(),
cfg: cfg,
connMgr: cM,
FldPostDir: "/var/spool/cgrates/failed_posts",
LogLevel: 7,
NodeID: "123",
Tenant: "cgrates.org",
Writer: &kafka.Writer{
Addr: kafka.TCP(cfg.LoggerCfg().Opts.KafkaConn),
Topic: cfg.LoggerCfg().Opts.KafkaTopic,
MaxAttempts: cfg.LoggerCfg().Opts.Attempts,
MaxAttempts: cfg.LoggerCfg().Opts.KafkaAttempts,
},
}
if rcv := NewExportLogger("123", "cgrates.org", 7, cfg.LoggerCfg().Opts); !reflect.DeepEqual(rcv, exp) {
if rcv := NewExportLogger(context.Background(), "123", "cgrates.org", 7, cM, cfg); !reflect.DeepEqual(rcv, exp) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", exp, rcv)
}
}
func TestLoggerExportEmerg(t *testing.T) {
func TestLoggerExportEmergNil(t *testing.T) {
tmp := Cache
defer func() {
Cache = tmp
}()
eesConn := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs)
Cache.Clear(nil)
cfg := config.NewDefaultCGRConfig()
cfg.CoreSCfg().EEsConns = []string{eesConn}
Cache = NewCacheS(cfg, nil, nil)
cM := NewConnManager(cfg)
ccM := &ccMock{
calls: map[string]func(ctx *context.Context, args interface{}, reply interface{}) error{
utils.EeSv1ProcessEvent: func(ctx *context.Context, args, reply interface{}) error {
delete(args.(*utils.CGREventWithEeIDs).Event, "Timestamp")
exp := &utils.CGREventWithEeIDs{
CGREvent: &utils.CGREvent{
Tenant: "cgrates.org",
Event: map[string]interface{}{
utils.NodeID: "123",
"Message": "Emergency message",
"Severity": utils.LOGLEVEL_EMERGENCY,
},
},
}
if !reflect.DeepEqual(exp, args) {
return fmt.Errorf("\nexpected: <%+v>, \nreceived: <%+v>",
utils.ToJSON(exp), utils.ToJSON(args))
}
return nil
},
},
}
rpcInternal := make(chan birpc.ClientConnector, 1)
rpcInternal <- ccM
cM.AddInternalConn(eesConn, utils.EeSv1, rpcInternal)
el := NewExportLogger("123", "cgrates.org", -1, cfg.LoggerCfg().Opts)
el := NewExportLogger(context.Background(), "123", "cgrates.org", -1, cM, cfg)
if err := el.Emerg("Emergency message"); err != nil {
t.Error(err)
}
el.SetLogLevel(0)
if err := el.Emerg("Emergency message"); err != nil {
t.Error(err)
}
}
// func TestLoggerExportEmergOk(t *testing.T) {
// tmp := Cache
// defer func() {
// Cache = tmp
// }()
// Cache.Clear(nil)
// cfg := config.NewDefaultCGRConfig()
// cM := NewConnManager(cfg)
// el := NewExportLogger(context.Background(), "123", "cgrates.org", 0, cM, cfg)
// if err := el.Emerg("Emergency message"); err != nil {
// t.Error(err)
// }
// }
/*
func TestLoggerExportAlert(t *testing.T) {
tmp := Cache
defer func() {
@@ -504,4 +499,4 @@ func TestLoggerExportWrite(t *testing.T) {
t.Error(err)
}
el.Close()
} */
}*/