From f912ab04e8a2f3754a324f4a7452d617f8bbdb86 Mon Sep 17 00:00:00 2001 From: arberkatellari Date: Thu, 23 Feb 2023 10:53:07 -0500 Subject: [PATCH] Improve logger and libindex tests --- engine/libindex_test.go | 207 ++++++++++++++++++++++++++++++++++++++++ utils/logger_it_test.go | 46 +++++++++ utils/logger_test.go | 131 ------------------------- 3 files changed, 253 insertions(+), 131 deletions(-) diff --git a/engine/libindex_test.go b/engine/libindex_test.go index 1dfc734a3..c7d217fd3 100644 --- a/engine/libindex_test.go +++ b/engine/libindex_test.go @@ -2444,3 +2444,210 @@ func TestUpdateFilterIndexRateProfilesErr2(t *testing.T) { } } + +func TestUpdateFilterIndexDispatcherIndex(t *testing.T) { + tmp := Cache + defer func() { + Cache = tmp + }() + Cache.Clear(nil) + + cfg := config.NewDefaultCGRConfig() + dataDB := NewInternalDB(nil, nil, cfg.DataDbCfg().Items) + dm := NewDataManager(dataDB, cfg.CacheCfg(), nil) + + oldFlt := &Filter{ + Tenant: "cgrates.org", + ID: "fltr_test", + Rules: []*FilterRule{ + { + Type: utils.MetaString, + Element: "~*req.Cost", + Values: []string{"unRegVal2"}, + }, + }, + } + + if err := oldFlt.Compile(); err != nil { + t.Error(err) + } + + if err := dm.SetFilter(context.Background(), oldFlt, true); err != nil { + t.Error(err) + } + dpp := &DispatcherProfile{ + Tenant: "cgrates.org", + ID: "ID", + FilterIDs: []string{"fltr_test"}, + Weight: 65, + Strategy: utils.MetaLoad, + StrategyParams: map[string]interface{}{"k": "v"}, + Hosts: DispatcherHostProfiles{ + { + ID: "C2", + FilterIDs: []string{"fltr3"}, + Weight: 10, + Params: map[string]interface{}{ + "param3": "value3", + }, + Blocker: false, + }, + }, + } + + if err := dm.SetDispatcherProfile(context.Background(), dpp, true); err != nil { + t.Error(err) + } + + expindx := map[string]utils.StringSet{ + "*string:*req.Cost:unRegVal2": {"ID": {}}, + } + + getindx, err := dm.GetIndexes(context.Background(), utils.CacheDispatcherFilterIndexes, utils.CGRateSorg, utils.EmptyString, utils.EmptyString, true, true) + if err != nil { + t.Error(err) + } else if !reflect.DeepEqual(expindx, getindx) { + t.Errorf("Expected \n<%v>, \nReceived \n<%v>", utils.ToJSON(expindx), utils.ToJSON(getindx)) + } + + newFlt := &Filter{ + Tenant: "cgrates.org", + ID: "fltr_test", + Rules: []*FilterRule{ + { + Type: utils.MetaPrefix, + Element: "~*req.Usage", + Values: []string{"10s"}, + }, + }, + } + if err := newFlt.Compile(); err != nil { + t.Error(err) + } + if err := dm.SetFilter(context.Background(), newFlt, false); err != nil { + t.Error(err) + } + + if err := UpdateFilterIndex(context.Background(), dm, oldFlt, newFlt); err != nil { + t.Error(err) + } + + expindxNew := map[string]utils.StringSet{ + "*prefix:*req.Usage:10s": {"ID": {}}, + } + getindxNew, err := dm.GetIndexes(context.Background(), utils.CacheDispatcherFilterIndexes, utils.CGRateSorg, utils.EmptyString, utils.EmptyString, true, true) + if err != nil { + t.Error(err) + } else if !reflect.DeepEqual(expindxNew, getindxNew) { + t.Errorf("Expected \n<%v>, \nReceived \n<%v>", utils.ToJSON(expindxNew), utils.ToJSON(getindxNew)) + } + +} + +func TestUpdateFilterDispatcherIndexErr1(t *testing.T) { + tmp := Cache + defer func() { + Cache = tmp + }() + Cache.Clear(nil) + + cfg := config.NewDefaultCGRConfig() + dataDB := NewInternalDB(nil, nil, cfg.DataDbCfg().Items) + dm := NewDataManager(dataDB, cfg.CacheCfg(), nil) + + dm.dataDB = &DataDBMock{ + GetIndexesDrvF: func(ctx *context.Context, idxItmType, tntCtx, idxKey, transactionID string) (indexes map[string]utils.StringSet, err error) { + return map[string]utils.StringSet{ + utils.CacheDispatcherFilterIndexes: { + "ATTR_TEST": {}, + }, + }, nil + }, + SetIndexesDrvF: func(ctx *context.Context, idxItmType, tntCtx string, indexes map[string]utils.StringSet, commit bool, transactionID string) (err error) { + return utils.ErrNotImplemented + }, + } + + oldFlt := &Filter{ + Tenant: "cgrates.org", + ID: "fltr_test", + Rules: []*FilterRule{ + { + Type: utils.MetaString, + Element: "~*req.Cost", + Values: []string{"unRegVal2"}, + }, + }, + } + newFlt := &Filter{ + Tenant: "cgrates.org", + ID: "fltr_test", + Rules: []*FilterRule{ + { + Type: utils.MetaPrefix, + Element: "~*req.Usage", + Values: []string{"10s"}, + }, + }, + } + + expErr := utils.ErrNotImplemented + if err := UpdateFilterIndex(context.Background(), dm, oldFlt, newFlt); err != expErr { + t.Errorf("Expected error <%v>, Received error <%v>", expErr, err) + } + +} + +func TestUpdateFilterIndexDispatcherErr2(t *testing.T) { + tmp := Cache + defer func() { + Cache = tmp + }() + Cache.Clear(nil) + + cfg := config.NewDefaultCGRConfig() + dataDB := NewInternalDB(nil, nil, cfg.DataDbCfg().Items) + dm := NewDataManager(dataDB, cfg.CacheCfg(), nil) + + dm.dataDB = &DataDBMock{ + GetIndexesDrvF: func(ctx *context.Context, idxItmType, tntCtx, idxKey, transactionID string) (indexes map[string]utils.StringSet, err error) { + return map[string]utils.StringSet{ + utils.CacheDispatcherFilterIndexes: { + "ATTR_TEST": {}, + }, + }, nil + }, + SetIndexesDrvF: func(ctx *context.Context, idxItmType, tntCtx string, indexes map[string]utils.StringSet, commit bool, transactionID string) (err error) { + return nil + }, + } + + oldFlt := &Filter{ + Tenant: "cgrates.org", + ID: "fltr_test", + Rules: []*FilterRule{ + { + Type: utils.MetaString, + Element: "~*req.Cost", + Values: []string{"unRegVal2"}, + }, + }, + } + newFlt := &Filter{ + Tenant: "cgrates.org", + ID: "fltr_test", + Rules: []*FilterRule{ + { + Type: utils.MetaPrefix, + Element: "~*req.Usage", + Values: []string{"10s"}, + }, + }, + } + + expErr := "SERVER_ERROR: NOT_IMPLEMENTED" + if err := UpdateFilterIndex(context.Background(), dm, oldFlt, newFlt); err.Error() != expErr { + t.Errorf("Expected error <%v>, Received error <%v>", expErr, err) + } + +} diff --git a/utils/logger_it_test.go b/utils/logger_it_test.go index 3f4b19d32..b2d3abf25 100644 --- a/utils/logger_it_test.go +++ b/utils/logger_it_test.go @@ -124,6 +124,12 @@ func testEmergencyLogger(t *testing.T) { if err := newLogger.Emerg("emergency_panic"); err != nil { t.Error(err) } + + newLogger.SetLogLevel(-1) + + if err := newLogger.Emerg("emergency_panic2"); err != nil { + t.Error(err) + } if err := writer.Close(); err != nil { t.Error(err) } @@ -133,8 +139,11 @@ func testEmergencyLogger(t *testing.T) { t.Error(err) } expected := "emergency_panic" + expected2 := "emergency_panic2" if rcv := l.String(); !strings.Contains(rcv, expected) { t.Errorf("Expected %q, received %q", expected, rcv) + } else if strings.Contains(rcv, expected2) { + t.Errorf("Expected %q to not exist, received %q", expected, rcv) } } @@ -160,6 +169,12 @@ func testAlertLogger(t *testing.T) { if err := newLogger.Alert("emergency_alert"); err != nil { t.Error(err) } + + newLogger.SetLogLevel(0) + + if err := newLogger.Alert("emergency_alert2"); err != nil { + t.Error(err) + } if err := writer.Close(); err != nil { t.Error(err) } @@ -169,8 +184,11 @@ func testAlertLogger(t *testing.T) { t.Error(err) } expected := "emergency_alert" + expected2 := "emergency_alert2" if rcv := l.String(); !strings.Contains(rcv, expected) { t.Errorf("Expected %q, received %q", expected, rcv) + } else if strings.Contains(rcv, expected2) { + t.Errorf("Expected %q to not exist, received %q", expected, rcv) } } @@ -195,6 +213,13 @@ func testCriticalLogger(t *testing.T) { if err := newLogger.Crit("critical_panic"); err != nil { t.Error(err) } + + newLogger.SetLogLevel(1) + + if err := newLogger.Crit("critical_panic2"); err != nil { + t.Error(err) + } + if err := writer.Close(); err != nil { t.Error(err) } @@ -204,8 +229,11 @@ func testCriticalLogger(t *testing.T) { t.Error(err) } expected := "critical_panic" + expected2 := "critical_panic2" if rcv := l.String(); !strings.Contains(rcv, expected) { t.Errorf("Expected %q, received %q", expected, rcv) + } else if strings.Contains(rcv, expected2) { + t.Errorf("Expected %q to not exist, received %q", expected, rcv) } } @@ -301,6 +329,12 @@ func testNoticeLogger(t *testing.T) { t.Error(err) } + newLogger.SetLogLevel(4) + + if err := newLogger.Notice("notice_panic2"); err != nil { + t.Error(err) + } + if err := writer.Close(); err != nil { t.Error(err) } @@ -310,8 +344,11 @@ func testNoticeLogger(t *testing.T) { t.Error(err) } expected := "notice_panic" + expected2 := "notice_panic2" if rcv := l.String(); !strings.Contains(rcv, expected) { t.Errorf("Expected %q, received %q", expected, rcv) + } else if strings.Contains(rcv, expected2) { + t.Errorf("Expected %q to not exist, received %q", expected, rcv) } } @@ -371,6 +408,12 @@ func testDebugLogger(t *testing.T) { if err := newLogger.Debug("debug_panic"); err != nil { t.Error(err) } + + newLogger.SetLogLevel(6) + + if err := newLogger.Debug("debug_panic2"); err != nil { + t.Error(err) + } if err := writer.Close(); err != nil { t.Error(err) } @@ -380,7 +423,10 @@ func testDebugLogger(t *testing.T) { t.Error(err) } expected := "debug_panic" + expected2 := "debug_panic2" if rcv := l.String(); !strings.Contains(rcv, expected) { t.Errorf("Expected %q, received %q", expected, rcv) + } else if strings.Contains(rcv, expected2) { + t.Errorf("Expected %q to not exist, received %q", expected, rcv) } } diff --git a/utils/logger_test.go b/utils/logger_test.go index 8d22c6783..fe557dd5a 100644 --- a/utils/logger_test.go +++ b/utils/logger_test.go @@ -235,18 +235,6 @@ func TestLoggerStdLoggerDebug(t *testing.T) { t.Errorf("expected: <%s>, \nreceived: <%s>", expMsg, buf.String()) } } - -func TestCloseSysLogger(t *testing.T) { - if noSysLog { - t.SkipNow() - } - sl, _ := NewSysLogger("test", 2) - - if err := sl.Close(); err != nil { - t.Errorf("Expected , received %v", err) - } - -} func TestWriteSysLogger(t *testing.T) { if noSysLog { t.SkipNow() @@ -261,125 +249,6 @@ func TestWriteSysLogger(t *testing.T) { } } - -func TestAlertSysLogger(t *testing.T) { - if noSysLog { - t.SkipNow() - } - sl, _ := NewSysLogger("test", 0) - - if err := sl.Alert("Alert Message"); err != nil { - t.Errorf("Expected , received %v", err) - } - sl, _ = NewSysLogger("test2", 2) - if err := sl.Alert("Alert Message 2"); err != nil { - t.Errorf("Expected , received %v", err) - } -} -func TestCritSysLogger(t *testing.T) { - if noSysLog { - t.SkipNow() - } - sl, _ := NewSysLogger("test", 1) - - if err := sl.Crit("Critical Message"); err != nil { - t.Errorf("Expected , received %v", err) - } - sl, _ = NewSysLogger("test2", 4) - if err := sl.Crit("Critical Message 2"); err != nil { - t.Errorf("Expected , received %v", err) - } -} - -func TestDebugSysLogger(t *testing.T) { - if noSysLog { - t.SkipNow() - } - sl, _ := NewSysLogger("test", 6) - - if err := sl.Debug("Debug Message"); err != nil { - t.Errorf("Expected , received %v", err) - } - sl, _ = NewSysLogger("test2", 8) - if err := sl.Debug("Debug Message 2"); err != nil { - t.Errorf("Expected , received %v", err) - } -} - -func TestEmergSysLogger(t *testing.T) { - if noSysLog { - t.SkipNow() - } - sl, _ := NewSysLogger("test", -1) - - if err := sl.Emerg("Emergency Message"); err != nil { - t.Errorf("Expected , received %v", err) - } - // always broadcasts message from journal - // sl, _ = NewSysLogger("test2", 1) - // if err := sl.Emerg("Emergency Message 2"); err != nil { - // t.Errorf("Expected , received %v", err) - // } - -} - -func TestErrSysLogger(t *testing.T) { - if noSysLog { - t.SkipNow() - } - sl, _ := NewSysLogger("test", 2) - - if err := sl.Err("Error Message"); err != nil { - t.Errorf("Expected , received %v", err) - } - sl, _ = NewSysLogger("test2", 4) - if err := sl.Err("Error Message 2"); err != nil { - t.Errorf("Expected , received %v", err) - } -} -func TestInfoSysLogger(t *testing.T) { - if noSysLog { - t.SkipNow() - } - sl, _ := NewSysLogger("test", 5) - - if err := sl.Info("Info Message"); err != nil { - t.Errorf("Expected , received %v", err) - } - sl, _ = NewSysLogger("test2", 7) - if err := sl.Info("Info Message 2"); err != nil { - t.Errorf("Expected , received %v", err) - } -} -func TestNoticeSysLogger(t *testing.T) { - if noSysLog { - t.SkipNow() - } - sl, _ := NewSysLogger("test", 4) - - if err := sl.Notice("Notice Message"); err != nil { - t.Errorf("Expected , received %v", err) - } - sl, _ = NewSysLogger("test2", 6) - if err := sl.Notice("Notice Message 2"); err != nil { - t.Errorf("Expected , received %v", err) - } -} -func TestWarningSysLogger(t *testing.T) { - if noSysLog { - t.SkipNow() - } - sl, _ := NewSysLogger("test", 3) - - if err := sl.Warning("Warning Message"); err != nil { - t.Errorf("Expected , received %v", err) - } - sl, _ = NewSysLogger("test2", 5) - if err := sl.Warning("Warning Message 2"); err != nil { - t.Errorf("Expected , received %v", err) - } -} - func TestCloseNopCloser(t *testing.T) { var nC NopCloser