From 1c086ac0e3af828c02df43434f221a5568a9f428 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 18 Dec 2019 11:37:20 +0200 Subject: [PATCH] Updated gob integration tests --- apier/v2/cdrs_it_test.go | 13 ++--- engine/cdrs.go | 6 ++- general_tests/cdrs_processevent_it_test.go | 56 ++++++++++++---------- general_tests/gocs_it_test.go | 8 ++-- 4 files changed, 44 insertions(+), 39 deletions(-) diff --git a/apier/v2/cdrs_it_test.go b/apier/v2/cdrs_it_test.go index 087037c21..ce6eb231d 100644 --- a/apier/v2/cdrs_it_test.go +++ b/apier/v2/cdrs_it_test.go @@ -167,7 +167,6 @@ func testV2CDRsProcessCDR(t *testing.T) { } else if reply != utils.OK { t.Error("Unexpected reply received: ", reply) } - time.Sleep(150 * time.Millisecond) // Give time for CDR to be rated } func testV2CDRsGetCdrs(t *testing.T) { @@ -281,13 +280,12 @@ func testV2CDRsRateCDRs(t *testing.T) { if err := cdrsRpc.Call(utils.CDRsV1RateCDRs, &engine.ArgRateCDRs{ RPCCDRsFilter: utils.RPCCDRsFilter{NotRunIDs: []string{utils.MetaRaw}}, - Flags: []string{"*chargers:true"}, + Flags: []string{"*chargers:false"}, }, &reply); err != nil { t.Error("Unexpected error: ", err.Error()) } else if reply != utils.OK { t.Error("Unexpected reply received: ", reply) } - time.Sleep(150 * time.Millisecond) // Give time for CDR to be rated } func testV2CDRsGetCdrs2(t *testing.T) { @@ -325,7 +323,7 @@ func testV2CDRsGetCdrs2(t *testing.T) { } else if len(cdrs) != 1 { t.Error("Unexpected number of CDRs returned: ", len(cdrs)) } else { - if cdrs[0].Cost != 0.0198 { + if cdrs[0].Cost != 0.0102 { t.Errorf("Unexpected cost for CDR: %f", cdrs[0].Cost) } } @@ -358,7 +356,6 @@ func testV2CDRsUsageNegative(t *testing.T) { } else if reply != utils.OK { t.Error("Unexpected reply received: ", reply) } - time.Sleep(150 * time.Millisecond) // Give time for CDR to be rated var cdrs []*engine.ExternalCDR args := utils.RPCCDRsFilter{RunIDs: []string{utils.MetaRaw}, OriginIDs: []string{"testV2CDRsUsageNegative"}} @@ -512,7 +509,6 @@ func testV2CDRsDifferentTenants(t *testing.T) { } else if reply3 != utils.OK { t.Error("Unexpected reply received: ", reply3) } - time.Sleep(150 * time.Millisecond) // Give time for CDR to be rated var cdrs []*engine.ExternalCDR args := utils.RPCCDRsFilter{Tenants: []string{"CustomTenant"}} @@ -572,7 +568,6 @@ func testV2CDRsProcessCDRNoRattingPlan(t *testing.T) { } else if reply != utils.OK { t.Error("Unexpected reply received: ", reply) } - time.Sleep(150 * time.Millisecond) // Give time for CDR to be rated } func testV2CDRsGetCdrsNoRattingPlan(t *testing.T) { @@ -665,7 +660,6 @@ func testV2CDRsRateCDRsWithRatingPlan(t *testing.T) { } else if reply != utils.OK { t.Error("Unexpected reply received: ", reply) } - time.Sleep(150 * time.Millisecond) // Give time for CDR to be rated } func testV2CDRsGetCdrsWithRattingPlan(t *testing.T) { @@ -778,7 +772,7 @@ func testV2CDRsProcessCDRWithThreshold(t *testing.T) { utils.OriginID: "testV2CDRsProcessCDRWithThreshold", utils.OriginHost: "192.168.1.1", utils.Source: "testV2CDRsProcessCDRWithThreshold", - utils.RequestType: utils.META_PREPAID, + utils.RequestType: utils.META_POSTPAID, utils.Category: "call", utils.Account: "1005", utils.Subject: "ANY2CNT", @@ -796,7 +790,6 @@ func testV2CDRsProcessCDRWithThreshold(t *testing.T) { } else if reply != utils.OK { t.Error("Unexpected reply received: ", reply) } - time.Sleep(150 * time.Millisecond) // Give time for CDR to be rated } func testV2CDRsGetThreshold(t *testing.T) { diff --git a/engine/cdrs.go b/engine/cdrs.go index 843c0d957..f69c1e91b 100644 --- a/engine/cdrs.go +++ b/engine/cdrs.go @@ -954,6 +954,10 @@ func (cdrS *CDRServer) V1RateCDRs(arg *ArgRateCDRs, reply *string) (err error) { if flgs.HasKey(utils.MetaChargers) { chrgS = flgs.GetBool(utils.MetaChargers) } + attrS := len(cdrS.cgrCfg.CdrsCfg().AttributeSConns) != 0 + if flgs.HasKey(utils.MetaAttributes) { + attrS = flgs.GetBool(utils.MetaAttributes) + } if chrgS && len(cdrS.cgrCfg.CdrsCfg().ChargerSConns) == 0 { return utils.NewErrNotConnected(utils.ChargerS) @@ -964,7 +968,7 @@ func (cdrS *CDRServer) V1RateCDRs(arg *ArgRateCDRs, reply *string) (err error) { CGREvent: cdr.AsCGREvent(), ArgDispatcher: arg.ArgDispatcher, } - if err = cdrS.processEvent(cgrEv, chrgS, false, false, + if err = cdrS.processEvent(cgrEv, chrgS, attrS, false, true, store, true, export, thdS, statS); err != nil { return utils.NewErrServerError(err) } diff --git a/general_tests/cdrs_processevent_it_test.go b/general_tests/cdrs_processevent_it_test.go index 082a7777d..3f0822d53 100644 --- a/general_tests/cdrs_processevent_it_test.go +++ b/general_tests/cdrs_processevent_it_test.go @@ -31,6 +31,7 @@ import ( "testing" "time" + v1 "github.com/cgrates/cgrates/apier/v1" v2 "github.com/cgrates/cgrates/apier/v2" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" @@ -170,18 +171,20 @@ func testV1CDRsProcessEventAttrS(t *testing.T) { }, } var cdrs []*engine.CDR - alsPrf := &engine.AttributeProfile{ - Tenant: "cgrates.org", - ID: "ApierTest", - Contexts: []string{utils.META_ANY}, - FilterIDs: []string{"*string:~*req.Account:1001"}, - Attributes: []*engine.Attribute{ - { - FieldName: utils.Subject, - Value: config.NewRSRParsersMustCompile("1011", true, utils.INFIELD_SEP), + alsPrf := &v1.AttributeWithCache{ + AttributeProfile: &engine.AttributeProfile{ + Tenant: "cgrates.org", + ID: "ApierTest", + Contexts: []string{utils.META_ANY}, + FilterIDs: []string{"*string:~*req.Account:1001"}, + Attributes: []*engine.Attribute{ + { + FieldName: utils.Subject, + Value: config.NewRSRParsersMustCompile("1011", true, utils.INFIELD_SEP), + }, }, + Weight: 20, }, - Weight: 20, } alsPrf.Compile() var result string @@ -191,13 +194,13 @@ func testV1CDRsProcessEventAttrS(t *testing.T) { t.Error("Unexpected reply returned", result) } var replyAt *engine.AttributeProfile - if err := pecdrsRpc.Call(utils.ApierV1GetAttributeProfile, - &utils.TenantID{Tenant: "cgrates.org", ID: "ApierTest"}, &replyAt); err != nil { + if err := pecdrsRpc.Call(utils.ApierV1GetAttributeProfile, &utils.TenantIDWithArgDispatcher{ + TenantID: &utils.TenantID{Tenant: "cgrates.org", ID: "ApierTest"}}, &replyAt); err != nil { t.Fatal(err) } replyAt.Compile() - if !reflect.DeepEqual(alsPrf, replyAt) { - t.Errorf("Expecting : %+v, received: %+v", alsPrf, reply) + if !reflect.DeepEqual(alsPrf.AttributeProfile, replyAt) { + t.Errorf("Expecting : %+v, received: %+v", utils.ToJSON(alsPrf.AttributeProfile), utils.ToJSON(replyAt)) } if err := pecdrsRpc.Call(utils.CDRsV1ProcessEvent, argsEv, &reply); err != nil { t.Error(err) @@ -205,7 +208,8 @@ func testV1CDRsProcessEventAttrS(t *testing.T) { t.Error("Unexpected reply received: ", reply) } // check if the CDR was correctly processed - if err := pecdrsRpc.Call(utils.CDRsV1GetCDRs, utils.RPCCDRsFilter{OriginHosts: []string{"OriginHost1"}}, &cdrs); err != nil { + if err := pecdrsRpc.Call(utils.CDRsV1GetCDRs, &utils.RPCCDRsFilterWithArgDispatcher{ + RPCCDRsFilter: &utils.RPCCDRsFilter{OriginHosts: []string{"OriginHost1"}}}, &cdrs); err != nil { t.Fatal("Unexpected error: ", err.Error()) } else if len(cdrs) != 1 { t.Errorf("Expecting: 1, received: %+v", len(cdrs)) @@ -258,7 +262,8 @@ func testV1CDRsProcessEventChrgS(t *testing.T) { t.Error("Unexpected reply received: ", reply) } var cdrs []*engine.CDR - if err := pecdrsRpc.Call(utils.CDRsV1GetCDRs, utils.RPCCDRsFilter{OriginHosts: []string{"OriginHost2"}}, &cdrs); err != nil { + if err := pecdrsRpc.Call(utils.CDRsV1GetCDRs, &utils.RPCCDRsFilterWithArgDispatcher{ + RPCCDRsFilter: &utils.RPCCDRsFilter{OriginHosts: []string{"OriginHost2"}}}, &cdrs); err != nil { t.Fatal("Unexpected error: ", err.Error()) } else if len(cdrs) != 3 { t.Errorf("Expecting: 3, received: %+v", len(cdrs)) @@ -266,12 +271,12 @@ func testV1CDRsProcessEventChrgS(t *testing.T) { t.Errorf("Expecting: test2_processEvent, received: %+v, %+v, %+v ", cdrs[0].OriginID, cdrs[1].OriginID, cdrs[2].OriginID) } sort.Slice(cdrs, func(i, j int) bool { return cdrs[i].RunID < cdrs[j].RunID }) - if cdrs[0].RunID != "*raw" { + if cdrs[0].RunID != utils.MetaRaw { // charger with RunID *raw t.Errorf("Expecting: %+v, received: %+v", utils.MetaRaw, cdrs[0].RunID) } else if cdrs[1].RunID != "CustomerCharges" { - t.Errorf("Expecting: %+v, received: %+v", utils.MetaRaw, cdrs[0].RunID) + t.Errorf("Expecting: %+v, received: %+v", "CustomerCharges", cdrs[1].RunID) } else if cdrs[2].RunID != "SupplierCharges" { - t.Errorf("Expecting: %+v, received: %+v", utils.MetaRaw, cdrs[0].RunID) + t.Errorf("Expecting: %+v, received: %+v", "SupplierCharges", cdrs[2].RunID) } } @@ -300,7 +305,8 @@ func testV1CDRsProcessEventRalS(t *testing.T) { t.Error("Unexpected reply received: ", reply) } var cdrs []*engine.CDR - if err := pecdrsRpc.Call(utils.CDRsV1GetCDRs, utils.RPCCDRsFilter{OriginHosts: []string{"OriginHost3"}}, &cdrs); err != nil { + if err := pecdrsRpc.Call(utils.CDRsV1GetCDRs, &utils.RPCCDRsFilterWithArgDispatcher{ + RPCCDRsFilter: &utils.RPCCDRsFilter{OriginHosts: []string{"OriginHost3"}}}, &cdrs); err != nil { t.Fatal("Unexpected error: ", err.Error()) } else if len(cdrs) != 1 { t.Errorf("Expecting: 1, received: %+v", len(cdrs)) @@ -366,7 +372,8 @@ func testV1CDRsProcessEventSts(t *testing.T) { CostDetails: nil, }, } - if err := pecdrsRpc.Call(utils.CDRsV1GetCDRs, utils.RPCCDRsFilter{OriginHosts: []string{"OriginHost4"}}, &cdrs); err != nil { + if err := pecdrsRpc.Call(utils.CDRsV1GetCDRs, &utils.RPCCDRsFilterWithArgDispatcher{ + RPCCDRsFilter: &utils.RPCCDRsFilter{OriginHosts: []string{"OriginHost4"}}}, &cdrs); err != nil { t.Fatal("Unexpected error: ", err.Error()) } else if len(cdrs) != 1 { t.Errorf("Expecting: 1, received: %+v", len(cdrs)) @@ -418,8 +425,8 @@ func testV1CDRsProcessEventStore(t *testing.T) { t.Error("Unexpected reply received: ", reply) } var cdrs []*engine.CDR - if err := pecdrsRpc.Call(utils.CDRsV1GetCDRs, - utils.RPCCDRsFilter{OriginHosts: []string{"OriginHost5"}}, &cdrs); err == nil || + if err := pecdrsRpc.Call(utils.CDRsV1GetCDRs, &utils.RPCCDRsFilterWithArgDispatcher{ + RPCCDRsFilter: &utils.RPCCDRsFilter{OriginHosts: []string{"OriginHost5"}}}, &cdrs); err == nil || err.Error() != "SERVER_ERROR: NOT_FOUND" { t.Fatal("Unexpected error: ", err.Error()) } else if len(cdrs) != 0 { @@ -513,7 +520,8 @@ func testV1CDRsProcessEventThreshold(t *testing.T) { } var cdrs []*engine.CDR - if err := pecdrsRpc.Call(utils.CDRsV1GetCDRs, utils.RPCCDRsFilter{OriginHosts: []string{"OriginHost6"}}, &cdrs); err != nil { + if err := pecdrsRpc.Call(utils.CDRsV1GetCDRs, &utils.RPCCDRsFilterWithArgDispatcher{ + RPCCDRsFilter: &utils.RPCCDRsFilter{OriginHosts: []string{"OriginHost6"}}}, &cdrs); err != nil { t.Error("Unexpected error: ", err) } else if len(cdrs) != 1 { t.Errorf("Expecting: 1, received: %+v", len(cdrs)) diff --git a/general_tests/gocs_it_test.go b/general_tests/gocs_it_test.go index 308a6918b..c4dceb13c 100644 --- a/general_tests/gocs_it_test.go +++ b/general_tests/gocs_it_test.go @@ -358,7 +358,7 @@ func testGOCSUpdateSession(t *testing.T) { } aSessions := make([]*sessions.ExternalSession, 0) - if err := auRPC.Call(utils.SessionSv1GetActiveSessions, nil, &aSessions); err != nil { + if err := auRPC.Call(utils.SessionSv1GetActiveSessions, new(utils.SessionFilter), &aSessions); err != nil { t.Error(err) } else if len(aSessions) != 1 { t.Errorf("wrong active sessions: %s", utils.ToJSON(aSessions)) @@ -436,7 +436,7 @@ func testGOCSUpdateSession2(t *testing.T) { } aSessions := make([]*sessions.ExternalSession, 0) - if err := auRPC.Call(utils.SessionSv1GetActiveSessions, nil, &aSessions); err != nil { + if err := auRPC.Call(utils.SessionSv1GetActiveSessions, new(utils.SessionFilter), &aSessions); err != nil { t.Error(err) } else if len(aSessions) != 1 { t.Errorf("wrong active sessions: %s", utils.ToJSON(aSessions)) @@ -508,11 +508,11 @@ func testGOCSTerminateSession(t *testing.T) { t.Errorf("Unexpected reply: %s", rply) } aSessions := make([]*sessions.ExternalSession, 0) - if err := auRPC.Call(utils.SessionSv1GetActiveSessions, nil, &aSessions); err == nil || + if err := auRPC.Call(utils.SessionSv1GetActiveSessions, new(utils.SessionFilter), &aSessions); err == nil || err.Error() != utils.ErrNotFound.Error() { t.Errorf("Expected error %s received error %v and reply %s", utils.ErrNotFound, err, utils.ToJSON(aSessions)) } - if err := usRPC.Call(utils.SessionSv1GetActiveSessions, nil, &aSessions); err == nil || + if err := usRPC.Call(utils.SessionSv1GetActiveSessions, new(utils.SessionFilter), &aSessions); err == nil || err.Error() != utils.ErrNotFound.Error() { t.Errorf("Expected error %s received error %v and reply %s", utils.ErrNotFound, err, utils.ToJSON(aSessions)) }