From 47152ca5c72d09a74ffb712e30d16e6ccfef9eb6 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 29 Nov 2019 17:06:04 +0200 Subject: [PATCH] Updated engine integration tests for gob RPC --- cdrc/csv_it_test.go | 80 ++++++++++++++++++++++++-------------- cdrc/flatstore_it_test.go | 3 +- cdrc/fwv_it_test.go | 26 +++++++------ cdrc/partialcsv_it_test.go | 3 +- cdrc/xml_it_test.go | 42 ++++++++++---------- gob_integration_test.sh | 8 ++-- 6 files changed, 92 insertions(+), 70 deletions(-) diff --git a/cdrc/csv_it_test.go b/cdrc/csv_it_test.go index d9bca5480..cb95a497f 100644 --- a/cdrc/csv_it_test.go +++ b/cdrc/csv_it_test.go @@ -20,6 +20,7 @@ along with this program. If not, see package cdrc import ( + "errors" "flag" "io/ioutil" "net/rpc" @@ -32,6 +33,7 @@ import ( "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" + v1 "github.com/cgrates/cgrates/apier/v1" ) /* @@ -47,23 +49,37 @@ README: * */ -var csvCfgPath string -var csvCfg *config.CGRConfig -var cdrcCfgs []*config.CdrcCfg -var cdrcCfg *config.CdrcCfg -var cdrcRpc *rpc.Client +var ( + csvCfgPath string + csvCfg *config.CGRConfig + cdrcCfgs []*config.CdrcCfg + cdrcCfg *config.CdrcCfg + cdrcRpc *rpc.Client -var dataDir = flag.String("data_dir", "/usr/share/cgrates", "CGR data dir path here") -var waitRater = flag.Int("wait_rater", 500, "Number of miliseconds to wait for rater to start and cache") + dataDir = flag.String("data_dir", "/usr/share/cgrates", "CGR data dir path here") + waitRater = flag.Int("wait_rater", 500, "Number of miliseconds to wait for rater to start and cache") + encoding = flag.String("rpc", utils.MetaJSONrpc, "what encoding whould be uused for rpc comunication") -var fileContent1 = `dbafe9c8614c785a65aabd116dd3959c3c56f7f6,default,*voice,dsafdsaf,*rated,*out,cgrates.org,call,1001,1001,+4986517174963,2013-11-07 08:42:25 +0000 UTC,2013-11-07 08:42:26 +0000 UTC,10s,1.0100,val_extra3,"",val_extra1 + fileContent1 = `dbafe9c8614c785a65aabd116dd3959c3c56f7f6,default,*voice,dsafdsaf,*rated,*out,cgrates.org,call,1001,1001,+4986517174963,2013-11-07 08:42:25 +0000 UTC,2013-11-07 08:42:26 +0000 UTC,10s,1.0100,val_extra3,"",val_extra1 dbafe9c8614c785a65aabd116dd3959c3c56f7f7,default,*voice,dsafdsag,*rated,*out,cgrates.org,call,1001,1001,+4986517174964,2013-11-07 09:42:25 +0000 UTC,2013-11-07 09:42:26 +0000 UTC,20s,1.0100,val_extra3,"",val_extra1 ` -var fileContent2 = `accid21;*prepaid;itsyscom.com;1001;086517174963;2013-02-03 19:54:00;62;val_extra3;"";val_extra1 + fileContent2 = `accid21;*prepaid;itsyscom.com;1001;086517174963;2013-02-03 19:54:00;62;val_extra3;"";val_extra1 accid22;*postpaid;itsyscom.com;1001;+4986517174963;2013-02-03 19:54:00;123;val_extra3;"";val_extra1 #accid1;*pseudoprepaid;itsyscom.com;1001;+4986517174963;2013-02-03 19:54:00;12;val_extra3;"";val_extra1 accid23;*rated;cgrates.org;1001;086517174963;2013-02-03 19:54:00;26;val_extra3;"";val_extra1` +) + +func newRPCClient(cfg *config.ListenCfg) (c *rpc.Client, err error) { + switch *encoding { + case utils.MetaJSONrpc: + return jsonrpc.Dial(utils.TCP, cfg.RPCJSONListen) + case utils.MetaGOBrpc: + return rpc.Dial(utils.TCP, cfg.RPCGOBListen) + default: + return nil, errors.New("UNSUPPORTED_RPC") + } +} func TestCsvITInitConfig(t *testing.T) { var err error @@ -114,7 +130,7 @@ func TestCsvITStartEngine(t *testing.T) { // Connect rpc client to rater func TestCsvITRpcConn(t *testing.T) { var err error - cdrcRpc, err = jsonrpc.Dial("tcp", csvCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + cdrcRpc, err = newRPCClient(csvCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } @@ -222,7 +238,7 @@ func TestCsvIT2StartEngine(t *testing.T) { // Connect rpc client to rater func TestCsvIT2RpcConn(t *testing.T) { var err error - cdrcRpc, err = jsonrpc.Dial("tcp", csvCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + cdrcRpc, err = newRPCClient(csvCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } @@ -314,7 +330,7 @@ func TestCsvIT3StartEngine(t *testing.T) { // Connect rpc client to rater func TestCsvIT3RpcConn(t *testing.T) { var err error - cdrcRpc, err = jsonrpc.Dial("tcp", csvCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + cdrcRpc, err = newRPCClient(csvCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } @@ -401,7 +417,7 @@ func TestCsvIT4StartEngine(t *testing.T) { // Connect rpc client to rater func TestCsvIT4RpcConn(t *testing.T) { var err error - cdrcRpc, err = jsonrpc.Dial("tcp", csvCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + cdrcRpc, err = newRPCClient(csvCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } @@ -488,21 +504,23 @@ func TestCsvIT5StartEngine(t *testing.T) { // Connect rpc client to rater func TestCsvIT5RpcConn(t *testing.T) { var err error - cdrcRpc, err = jsonrpc.Dial("tcp", csvCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + cdrcRpc, err = newRPCClient(csvCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } } func TestCsvIT5AddFilters(t *testing.T) { - filter := &engine.Filter{ - Tenant: "cgrates.org", - ID: "FLTR_CDRC_ACC", - Rules: []*engine.FilterRule{ - { - Type: "*string", - FieldName: "~*req.3", - Values: []string{"1002"}, + filter := v1.FilterWithCache{ + Filter: &engine.Filter{ + Tenant: "cgrates.org", + ID: "FLTR_CDRC_ACC", + Rules: []*engine.FilterRule{ + { + Type: "*string", + FieldName: "~*req.3", + Values: []string{"1002"}, + }, }, }, } @@ -512,14 +530,16 @@ func TestCsvIT5AddFilters(t *testing.T) { } else if result != utils.OK { t.Error("Unexpected reply returned", result) } - filter2 := &engine.Filter{ - Tenant: "itsyscom.com", - ID: "FLTR_CDRC_ACC", - Rules: []*engine.FilterRule{ - { - Type: "*string", - FieldName: "~*req.3", - Values: []string{"1001"}, + filter2 := v1.FilterWithCache{ + Filter: &engine.Filter{ + Tenant: "itsyscom.com", + ID: "FLTR_CDRC_ACC", + Rules: []*engine.FilterRule{ + { + Type: "*string", + FieldName: "~*req.3", + Values: []string{"1001"}, + }, }, }, } diff --git a/cdrc/flatstore_it_test.go b/cdrc/flatstore_it_test.go index 94af7ee31..be16fafca 100644 --- a/cdrc/flatstore_it_test.go +++ b/cdrc/flatstore_it_test.go @@ -22,7 +22,6 @@ package cdrc import ( "io/ioutil" "net/rpc" - "net/rpc/jsonrpc" "os" "path" "testing" @@ -113,7 +112,7 @@ func TestFlatstoreitStartEngine(t *testing.T) { // Connect rpc client to rater func TestFlatstoreitRpcConn(t *testing.T) { var err error - flatstoreRpc, err = jsonrpc.Dial("tcp", flatstoreCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + flatstoreRpc, err = newRPCClient(flatstoreCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } diff --git a/cdrc/fwv_it_test.go b/cdrc/fwv_it_test.go index f82a69661..77ac27781 100644 --- a/cdrc/fwv_it_test.go +++ b/cdrc/fwv_it_test.go @@ -23,12 +23,12 @@ package cdrc import ( "io/ioutil" "net/rpc" - "net/rpc/jsonrpc" "os" "path" "testing" "time" + v1 "github.com/cgrates/cgrates/apier/v1" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" @@ -120,7 +120,7 @@ func TestFwvitStartEngine(t *testing.T) { // Connect rpc client to rater func TestFwvitRpcConn(t *testing.T) { var err error - fwvRpc, err = jsonrpc.Dial("tcp", fwvCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + fwvRpc, err = newRPCClient(fwvCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } @@ -221,7 +221,7 @@ func TestFwvit2StartEngine(t *testing.T) { // Connect rpc client to rater func TestFwvit2RpcConn(t *testing.T) { var err error - fwvRpc, err = jsonrpc.Dial("tcp", fwvCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + fwvRpc, err = newRPCClient(fwvCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } @@ -317,21 +317,23 @@ func TestFwvit3StartEngine(t *testing.T) { // Connect rpc client to rater func TestFwvit3RpcConn(t *testing.T) { var err error - fwvRpc, err = jsonrpc.Dial("tcp", fwvCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + fwvRpc, err = newRPCClient(fwvCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } } func TestFwvit3AddFilters(t *testing.T) { - filter := &engine.Filter{ - Tenant: "cgrates.org", - ID: "FLTR_FWV", - Rules: []*engine.FilterRule{ - { - Type: "*string", - FieldName: "0-10", - Values: []string{"CDR0000010"}, + filter := v1.FilterWithCache{ + Filter: &engine.Filter{ + Tenant: "cgrates.org", + ID: "FLTR_FWV", + Rules: []*engine.FilterRule{ + { + Type: "*string", + FieldName: "0-10", + Values: []string{"CDR0000010"}, + }, }, }, } diff --git a/cdrc/partialcsv_it_test.go b/cdrc/partialcsv_it_test.go index 4cca03294..d28f689e8 100644 --- a/cdrc/partialcsv_it_test.go +++ b/cdrc/partialcsv_it_test.go @@ -22,7 +22,6 @@ package cdrc import ( "io/ioutil" "net/rpc" - "net/rpc/jsonrpc" "os" "path" "strings" @@ -104,7 +103,7 @@ func TestPartcsvITStartEngine(t *testing.T) { // Connect rpc client to rater func TestPartcsvITRpcConn(t *testing.T) { var err error - partcsvRPC, err = jsonrpc.Dial("tcp", partcsvCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + partcsvRPC, err = newRPCClient(partcsvCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } diff --git a/cdrc/xml_it_test.go b/cdrc/xml_it_test.go index 993ec6e96..4c22535be 100644 --- a/cdrc/xml_it_test.go +++ b/cdrc/xml_it_test.go @@ -22,12 +22,12 @@ package cdrc import ( "io/ioutil" "net/rpc" - "net/rpc/jsonrpc" "os" "path" "testing" "time" + v1 "github.com/cgrates/cgrates/apier/v1" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" @@ -93,7 +93,7 @@ func TestXmlITStartEngine(t *testing.T) { // Connect rpc client to rater func TestXmlITRpcConn(t *testing.T) { var err error - cdrcXmlRPC, err = jsonrpc.Dial("tcp", xmlCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + cdrcXmlRPC, err = newRPCClient(xmlCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } @@ -188,7 +188,7 @@ func TestXmlIT2StartEngine(t *testing.T) { // Connect rpc client to rater func TestXmlIT2RpcConn(t *testing.T) { var err error - cdrcXmlRPC, err = jsonrpc.Dial("tcp", xmlCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + cdrcXmlRPC, err = newRPCClient(xmlCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } @@ -277,7 +277,7 @@ func TestXmlIT3StartEngine(t *testing.T) { // Connect rpc client to rater func TestXmlIT3RpcConn(t *testing.T) { var err error - cdrcXmlRPC, err = jsonrpc.Dial("tcp", xmlCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + cdrcXmlRPC, err = newRPCClient(xmlCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } @@ -366,7 +366,7 @@ func TestXmlIT4StartEngine(t *testing.T) { // Connect rpc client to rater func TestXmlIT4RpcConn(t *testing.T) { var err error - cdrcXmlRPC, err = jsonrpc.Dial("tcp", xmlCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + cdrcXmlRPC, err = newRPCClient(xmlCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } @@ -455,26 +455,28 @@ func TestXmlIT5StartEngine(t *testing.T) { // Connect rpc client to rater func TestXmlIT5RpcConn(t *testing.T) { var err error - cdrcXmlRPC, err = jsonrpc.Dial("tcp", xmlCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + cdrcXmlRPC, err = newRPCClient(xmlCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } } func TestXmlIT5AddFilters(t *testing.T) { - filter := &engine.Filter{ - Tenant: "cgrates.org", - ID: "FLTR_XML", - Rules: []*engine.FilterRule{ - { - Type: "*string", - FieldName: "~*req.broadWorksCDR.cdrData.basicModule.userNumber", - Values: []string{"1002"}, - }, - { - Type: "*string", - FieldName: "~*req.broadWorksCDR.cdrData.headerModule.type", - Values: []string{"Normal"}, + filter := v1.FilterWithCache{ + Filter: &engine.Filter{ + Tenant: "cgrates.org", + ID: "FLTR_XML", + Rules: []*engine.FilterRule{ + { + Type: "*string", + FieldName: "~*req.broadWorksCDR.cdrData.basicModule.userNumber", + Values: []string{"1002"}, + }, + { + Type: "*string", + FieldName: "~*req.broadWorksCDR.cdrData.headerModule.type", + Values: []string{"Normal"}, + }, }, }, } @@ -569,7 +571,7 @@ func TestXmlIT6StartEngine(t *testing.T) { // Connect rpc client to rater func TestXmlIT6RpcConn(t *testing.T) { var err error - cdrcXmlRPC, err = jsonrpc.Dial("tcp", xmlCfg.ListenCfg().RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed + cdrcXmlRPC, err = newRPCClient(xmlCfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } diff --git a/gob_integration_test.sh b/gob_integration_test.sh index e6043e12d..ec063b7b2 100755 --- a/gob_integration_test.sh +++ b/gob_integration_test.sh @@ -11,9 +11,9 @@ ap2=$? echo 'go test github.com/cgrates/cgrates/engine -tags=integration -rpc=*gob' go test github.com/cgrates/cgrates/engine -tags=integration -rpc=*gob en=$? -# echo 'go test github.com/cgrates/cgrates/cdrc -tags=integration' -# go test github.com/cgrates/cgrates/cdrc -tags=integration -# cdrc=$? +echo 'go test github.com/cgrates/cgrates/cdrc -tags=integration -rpc=*gob' +go test github.com/cgrates/cgrates/cdrc -tags=integration -rpc=*gob +cdrc=$? # echo 'go test github.com/cgrates/cgrates/ers -tags=integration' # go test github.com/cgrates/cgrates/ers -tags=integration # ers=$? @@ -48,4 +48,4 @@ en=$? # go test github.com/cgrates/cgrates/apier/v1 -tags=offline # offline=$? -exit $gen && $ap1 && $ap2 && $en #&& $cdrc && $cfg && $utl && $gnr && $agts && $smg && $mgr && $dis && $lds && $ers && $srv && $offline +exit $gen && $ap1 && $ap2 && $en && $cdrc #&& $cfg && $utl && $gnr && $agts && $smg && $mgr && $dis && $lds && $ers && $srv && $offline