Updated engine integration tests for gob RPC

This commit is contained in:
Trial97
2019-11-29 17:06:04 +02:00
parent 37b7833761
commit 47152ca5c7
6 changed files with 92 additions and 70 deletions

View File

@@ -20,6 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
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"},
},
},
},
}

View File

@@ -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())
}

View File

@@ -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"},
},
},
},
}

View File

@@ -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())
}

View File

@@ -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())
}

View File

@@ -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