mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Updated engine integration tests for gob RPC
This commit is contained in:
@@ -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"},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
|
||||
@@ -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"},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user