From 9354d3b75cf4e429d7cd7ac9ae7831692ff40c2e Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Fri, 7 May 2021 16:58:54 +0300 Subject: [PATCH] Cover funcs in engine/resources.go --- engine/z_resources_test.go | 140 +++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) diff --git a/engine/z_resources_test.go b/engine/z_resources_test.go index e7f52c7d8..1ef946243 100644 --- a/engine/z_resources_test.go +++ b/engine/z_resources_test.go @@ -19,6 +19,7 @@ package engine import ( "bytes" + "errors" "fmt" "log" "os" @@ -3084,3 +3085,142 @@ func TestResourcesRecordUsageClearErr(t *testing.T) { utils.Logger.SetLogLevel(0) } + +func TestResourceClearUsageErr(t *testing.T) { + utils.Logger.SetLogLevel(4) + utils.Logger.SetSyslog(nil) + + var buf bytes.Buffer + log.SetOutput(&buf) + defer func() { + log.SetOutput(os.Stderr) + }() + + rs := Resources{ + { + Usages: map[string]*ResourceUsage{ + "RU_1": { + Tenant: "cgrates.org", + ID: "RU_1", + }, + "RU_2": { + Tenant: "cgrates.org", + ID: "RU_2", + }, + }, + TTLIdx: []string{"RU_1", "RU_2"}, + ttl: utils.DurationPointer(1 * time.Second), + }, + } + + ruTntID := "cgrates.org:RU_3" + + experr := fmt.Sprintf("cannot find usage record with id: %s", ruTntID) + explog := fmt.Sprintf("CGRateS <> [WARNING] , clear ruID: %s, err: %s\n", ruTntID, experr) + err := rs.clearUsage(ruTntID) + + if err == nil || err.Error() != experr { + t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", experr, err) + } + + rcvlog := buf.String()[20:] + if rcvlog != explog { + t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", explog, rcvlog) + } + + utils.Logger.SetLogLevel(0) +} + +func TestResourcesAllocateResourceErrRsUnavailable(t *testing.T) { + rs := Resources{} + ru := &ResourceUsage{} + + experr := utils.ErrResourceUnavailable + rcv, err := rs.allocateResource(ru, false) + + if err == nil || !errors.Is(err, experr) { + t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", experr, err) + } + + if rcv != "" { + t.Errorf("\nexpected empty string, got %s", rcv) + } +} + +func TestResourcesAllocateResourceEmptyConfiguration(t *testing.T) { + rs := Resources{ + { + Usages: map[string]*ResourceUsage{ + "RU_1": { + Tenant: "cgrates.org", + ID: "RU_1", + }, + "RU_2": { + Tenant: "cgrates.org", + ID: "RU_2", + }, + }, + TTLIdx: []string{"RU_1", "RU_2"}, + ttl: utils.DurationPointer(1 * time.Second), + Tenant: "cgrates.org", + ID: "Res_1", + }, + } + + ru := &ResourceUsage{ + Tenant: "cgrates.org", + ID: "RU_2", + } + + experr := fmt.Sprintf("empty configuration for resourceID: %s", rs[0].TenantID()) + rcv, err := rs.allocateResource(ru, false) + + if err == nil || err.Error() != experr { + t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", experr, err) + } + + if rcv != "" { + t.Errorf("\nexpected empty string, got %s", rcv) + } +} + +func TestResourcesAllocateResourceDryRun(t *testing.T) { + rs := Resources{ + { + Usages: map[string]*ResourceUsage{ + "RU_1": { + Tenant: "cgrates.org", + ID: "RU_1", + }, + "RU_2": { + Tenant: "cgrates.org", + ID: "RU_2", + }, + }, + TTLIdx: []string{"RU_1", "RU_2"}, + ttl: utils.DurationPointer(1 * time.Second), + Tenant: "cgrates.org", + ID: "Res_1", + rPrf: &ResourceProfile{ + Tenant: "cgrates.org", + ID: "ResGroup1", + }, + }, + } + + ru := &ResourceUsage{ + Tenant: "cgrates.org", + ID: "RU_2", + } + + exp := "ResGroup1" + rcv, err := rs.allocateResource(ru, true) + + if err != nil { + t.Errorf("\nexpected nil, got %+v", err) + } + + if rcv != exp { + t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", exp, rcv) + } +}