From 4b35d74a290058547708c52ffa2bc923130bb86d Mon Sep 17 00:00:00 2001 From: armirveliaj Date: Thu, 19 Sep 2024 10:24:40 -0400 Subject: [PATCH] Add new unit tests on engine and config --- config/config_json_test.go | 30 ++++++++++++++++++++++++++ config/generalcfg_test.go | 25 ++++++++++++++++++++++ config/loaderscfg_test.go | 31 +++++++++++++++++++++++++++ engine/trends_test.go | 43 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 129 insertions(+) diff --git a/config/config_json_test.go b/config/config_json_test.go index 7ea2b0287..2fedec663 100644 --- a/config/config_json_test.go +++ b/config/config_json_test.go @@ -2586,3 +2586,33 @@ func TestSentryPeerJson(t *testing.T) { }) } } + +func TestRankingsJsonCfgKeyNotPresent(t *testing.T) { + jsnCfg := CgrJsonCfg{} + rankingsCfg, err := jsnCfg.RankingsJsonCfg() + if rankingsCfg != nil { + t.Errorf("Expected rankingsCfg to be nil, got %v", rankingsCfg) + } + if err != nil { + t.Errorf("Expected no error, but got %v", err) + } +} + +func TestRankingsJsonCfgValidJson(t *testing.T) { + rankingsJson := RankingsJsonCfg{} + rawJson, err := json.Marshal(rankingsJson) + if err != nil { + t.Fatalf("Failed to marshal valid JSON: %v", err) + } + jsnCfg := CgrJsonCfg{ + RANKINGS_JSON: (*json.RawMessage)(&rawJson), + } + rankingsCfg, err := jsnCfg.RankingsJsonCfg() + if rankingsCfg == nil { + t.Errorf("Expected rankingsCfg not to be nil") + } + if err != nil { + t.Errorf("Expected no error, but got %v", err) + } + +} diff --git a/config/generalcfg_test.go b/config/generalcfg_test.go index e233ab3b2..35b7b8335 100644 --- a/config/generalcfg_test.go +++ b/config/generalcfg_test.go @@ -262,3 +262,28 @@ func TestGeneralCfgClone(t *testing.T) { t.Errorf("Expected clone to not modify the cloned") } } + +func TestCachingDelay(t *testing.T) { + + gencfg := &GeneralCfg{ + CachingDelay: 5 * time.Second, + } + + expectedMap := map[string]any{ + utils.CachingDlayCfg: "5s", + } + resultMap := gencfg.AsMapInterface() + if resultMap[utils.CachingDlayCfg] != expectedMap[utils.CachingDlayCfg] { + t.Errorf("Non-zero CachingDelay test failed. Expected %v, but got %v", expectedMap[utils.CachingDlayCfg], resultMap[utils.CachingDlayCfg]) + } + gencfg = &GeneralCfg{ + CachingDelay: 0, + } + expectedMap = map[string]any{ + utils.CachingDlayCfg: "0", + } + resultMap = gencfg.AsMapInterface() + if resultMap[utils.CachingDlayCfg] != expectedMap[utils.CachingDlayCfg] { + t.Errorf("Zero CachingDelay test failed. Expected %v, but got %v", expectedMap[utils.CachingDlayCfg], resultMap[utils.CachingDlayCfg]) + } +} diff --git a/config/loaderscfg_test.go b/config/loaderscfg_test.go index 979059dc4..cfc6bdfe3 100644 --- a/config/loaderscfg_test.go +++ b/config/loaderscfg_test.go @@ -18,6 +18,7 @@ along with this program. If not, see package config import ( + "os" "path" "reflect" "testing" @@ -553,3 +554,33 @@ func TestLoadersCfgGetLockFilePath(t *testing.T) { t.Error(rcv) } } + +func TestGetLockFilePath(t *testing.T) { + loader := LoaderSCfg{ + LockFilePath: "/cgrates/cgrates/lockfile.lck", + } + if loader.GetLockFilePath() != "/cgrates/cgrates/lockfile.lck" { + t.Error("Expected /cgrates/cgrates/lockfile.lck") + } + + loader = LoaderSCfg{ + LockFilePath: "relative.lck", + TpInDir: "/base/dir", + } + if loader.GetLockFilePath() != "/base/dir/relative.lck" { + t.Error("Expected /base/dir/relative.lck") + } + + tmpDir := "/tmp/cgrates_cgrates" + _ = os.Mkdir(tmpDir, 0755) + defer os.Remove(tmpDir) + + loader = LoaderSCfg{ + LockFilePath: tmpDir, + ID: "loader123", + } + expected := "/tmp/cgrates_cgrates/loader123.lck" + if loader.GetLockFilePath() != expected { + t.Errorf("Expected %v, but got %v", expected, loader.GetLockFilePath()) + } +} diff --git a/engine/trends_test.go b/engine/trends_test.go index ed378ad9b..505e335d1 100644 --- a/engine/trends_test.go +++ b/engine/trends_test.go @@ -20,6 +20,8 @@ package engine import ( "testing" + + "github.com/cgrates/cgrates/config" ) func TestTrendProfileTenantID(t *testing.T) { @@ -45,3 +47,44 @@ func TestTrendTenantID(t *testing.T) { t.Errorf("TenantID() = %v; want %v", result, expected) } } + +func TestNewTrendS(t *testing.T) { + dm := &DataManager{} + connMgr := &ConnManager{} + filterS := &FilterS{} + cgrcfg := &config.CGRConfig{} + + trendS := NewTrendS(dm, connMgr, filterS, cgrcfg) + + if trendS == nil { + t.Errorf("Expected NewTrendS to return a non-nil instance") + } + if trendS.dm != dm { + t.Errorf("Expected DataManager to be set correctly, got %v, want %v", trendS.dm, dm) + } + if trendS.connMgr != connMgr { + t.Errorf("Expected ConnManager to be set correctly, got %v, want %v", trendS.connMgr, connMgr) + } + if trendS.filterS != filterS { + t.Errorf("Expected FilterS to be set correctly, got %v, want %v", trendS.filterS, filterS) + } + if trendS.cgrcfg != cgrcfg { + t.Errorf("Expected CGRConfig to be set correctly, got %v, want %v", trendS.cgrcfg, cgrcfg) + } + + if trendS.loopStopped == nil { + t.Errorf("Expected loopStopped to be initialized, but got nil") + } + if trendS.crnTQsMux == nil { + t.Errorf("Expected crnTQsMux to be initialized, but got nil") + } + if trendS.crnTQs == nil { + t.Errorf("Expected crnTQs to be initialized, but got nil") + } else if len(trendS.crnTQs) != 0 { + t.Errorf("Expected crnTQs to be empty, but got length %d", len(trendS.crnTQs)) + } + + if trendS.crn != nil { + t.Errorf("Expected crn to be nil, but got %v", trendS.crn) + } +}