From 3c82973ecdd3cf31d80f89f20bf799f455a839e1 Mon Sep 17 00:00:00 2001 From: andronache Date: Wed, 13 Oct 2021 14:15:14 +0300 Subject: [PATCH] Cover test for cdrs.go --- engine/cdrs_test.go | 168 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 166 insertions(+), 2 deletions(-) diff --git a/engine/cdrs_test.go b/engine/cdrs_test.go index f27cbfd80..92972b348 100644 --- a/engine/cdrs_test.go +++ b/engine/cdrs_test.go @@ -1540,7 +1540,7 @@ func TestCDRsProcessEventMockChrgsErr(t *testing.T) { } _, err := newCDRSrv.processEvent(context.Background(), cgrEv) if err == nil || err.Error() != "CHARGERS_ERROR:MANDATORY_IE_MISSING: [connIDs]" { - t.Errorf("\nExpected <%+v> \n, received <%+v>", "PARTIALLY_EXECUTED", err) + t.Errorf("\nExpected <%+v> \n, received <%+v>", "CHARGERS_ERROR:MANDATORY_IE_MISSING: [connIDs]", err) } } @@ -2260,7 +2260,166 @@ func TestCDRsProcessEventMockStatsErrGetBoolOpts(t *testing.T) { } -func TestCDRsV1ProcessEventMockStatsErr(t *testing.T) { +func TestCDRsV1ProcessEventMock(t *testing.T) { + testCache := Cache + tmpC := config.CgrConfig() + tmpCM := connMgr + defer func() { + Cache = testCache + config.SetCgrConfig(tmpC) + connMgr = tmpCM + }() + + var sent StorDB + cfg := config.NewDefaultCGRConfig() + cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, + utils.MetaEEs)} + storDBChan := make(chan StorDB, 1) + storDBChan <- sent + data := NewInternalDB(nil, nil, true) + connMng := NewConnManager(cfg) + dm := NewDataManager(data, cfg.CacheCfg(), nil) + fltrs := NewFilterS(cfg, nil, dm) + Cache = NewCacheS(cfg, dm, nil) + newCDRSrv := NewCDRServer(cfg, storDBChan, dm, fltrs, connMng) + ccM := &ccMock{ + calls: map[string]func(ctx *context.Context, args interface{}, reply interface{}) error{ + utils.EeSv1ProcessEvent: func(ctx *context.Context, args, reply interface{}) error { + *reply.(*map[string]map[string]interface{}) = map[string]map[string]interface{}{} + return utils.ErrNotFound + }, + }, + } + rpcInternal := make(chan birpc.ClientConnector, 1) + rpcInternal <- ccM + newCDRSrv.connMgr.AddInternalConn(utils.ConcatenatedKey(utils.MetaInternal, + utils.MetaEEs), utils.ThresholdSv1, rpcInternal) + + cgrEv := &utils.CGREvent{ + Event: map[string]interface{}{ + "Resources": "ResourceProfile1", + utils.AnswerTime: time.Date(2014, 7, 14, 14, 30, 0, 0, time.UTC), + "UsageInterval": "1s", + "PddInterval": "1s", + utils.Weight: "20.0", + utils.Usage: 135 * time.Second, + utils.Cost: 123.0, + }, + APIOpts: map[string]interface{}{ + utils.OptsCDRsExport: true, + "*context": utils.MetaCDRs, + }, + } + var rply string + err := newCDRSrv.V1ProcessEvent(context.Background(), cgrEv, &rply) + if err != nil { + t.Errorf("\nExpected <%+v> \n, received <%+v>", nil, err) + } + expected := &utils.CGREvent{ + Tenant: "cgrates.org", + ID: "testID", + Event: map[string]interface{}{ + "Resources": "ResourceProfile1", + utils.AnswerTime: time.Date(2014, 7, 14, 14, 30, 0, 0, time.UTC), + "UsageInterval": "1s", + "PddInterval": "1s", + utils.Weight: "20.0", + utils.Usage: 135 * time.Second, + utils.Cost: 123.0, + }, + APIOpts: map[string]interface{}{ + utils.OptsCDRsExport: true, + "*context": utils.MetaCDRs, + }, + } + cgrEv.ID = "testID" + if !reflect.DeepEqual(expected, cgrEv) { + t.Errorf("\nExpected <%+v> \n,received <%+v>", utils.ToJSON(expected), utils.ToJSON(cgrEv)) + } +} + +func TestCDRsV1ProcessEventMockErr(t *testing.T) { + testCache := Cache + tmpC := config.CgrConfig() + tmpCM := connMgr + defer func() { + Cache = testCache + config.SetCgrConfig(tmpC) + connMgr = tmpCM + }() + + var sent StorDB + cfg := config.NewDefaultCGRConfig() + cfg.CdrsCfg().EEsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, + utils.MetaEEs)} + storDBChan := make(chan StorDB, 1) + storDBChan <- sent + data := NewInternalDB(nil, nil, true) + connMng := NewConnManager(cfg) + dm := NewDataManager(data, cfg.CacheCfg(), nil) + fltrs := NewFilterS(cfg, nil, dm) + Cache = NewCacheS(cfg, dm, nil) + newCDRSrv := NewCDRServer(cfg, storDBChan, dm, fltrs, connMng) + ccM := &ccMock{ + calls: map[string]func(ctx *context.Context, args interface{}, reply interface{}) error{ + utils.EeSv1ProcessEvent: func(ctx *context.Context, args, reply interface{}) error { + *reply.(*map[string]map[string]interface{}) = map[string]map[string]interface{}{} + return utils.ErrNotFound + }, + }, + } + rpcInternal := make(chan birpc.ClientConnector, 1) + rpcInternal <- ccM + newCDRSrv.connMgr.AddInternalConn(utils.ConcatenatedKey(utils.MetaInternal, + utils.MetaEEs), utils.ThresholdSv1, rpcInternal) + + cgrEv := &utils.CGREvent{ + Tenant: "cgrates.org", + ID: "testID", + Event: map[string]interface{}{ + "Resources": "ResourceProfile1", + utils.AnswerTime: time.Date(2014, 7, 14, 14, 30, 0, 0, time.UTC), + "UsageInterval": "1s", + "PddInterval": "1s", + utils.Weight: "20.0", + utils.Usage: 135 * time.Second, + utils.Cost: 123.0, + }, + APIOpts: map[string]interface{}{ + utils.OptsStatS: true, + utils.OptsCDRsExport: true, + "*context": utils.MetaCDRs, + }, + } + var rply string + err := newCDRSrv.V1ProcessEvent(context.Background(), cgrEv, &rply) + if err == nil || err.Error() != "PARTIALLY_EXECUTED" { + t.Errorf("\nExpected <%+v> \n, received <%+v>", "PARTIALLY_EXECUTED", err) + } + expected := &utils.CGREvent{ + Tenant: "cgrates.org", + ID: "testID", + Event: map[string]interface{}{ + "Resources": "ResourceProfile1", + utils.AnswerTime: time.Date(2014, 7, 14, 14, 30, 0, 0, time.UTC), + "UsageInterval": "1s", + "PddInterval": "1s", + utils.Weight: "20.0", + utils.Usage: 135 * time.Second, + utils.Cost: 123.0, + }, + APIOpts: map[string]interface{}{ + utils.OptsStatS: true, + utils.OptsCDRsExport: true, + "*context": utils.MetaCDRs, + }, + } + if !reflect.DeepEqual(expected, cgrEv) { + t.Errorf("\nExpected <%+v> \n,received <%+v>", expected, cgrEv) + } +} + +func TestCDRsV1ProcessEventMockCache(t *testing.T) { testCache := Cache tmpC := config.CgrConfig() tmpCM := connMgr @@ -2312,6 +2471,11 @@ func TestCDRsV1ProcessEventMockStatsErr(t *testing.T) { "*context": utils.MetaCDRs, }, } + defaultConf := config.CgrConfig().CacheCfg().Partitions[utils.CacheRPCResponses] + config.CgrConfig().CacheCfg().Partitions[utils.CacheRPCResponses].Limit = 1 + defer func() { + config.CgrConfig().CacheCfg().Partitions[utils.CacheRPCResponses] = defaultConf + }() var rply string err := newCDRSrv.V1ProcessEvent(context.Background(), cgrEv, &rply) if err != nil {