mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-12 18:46:24 +05:00
573 lines
17 KiB
Go
573 lines
17 KiB
Go
//go:build integration
|
|
// +build integration
|
|
|
|
/*
|
|
Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
|
|
Copyright (C) ITsysCOM GmbH
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>
|
|
*/
|
|
package general_tests
|
|
|
|
// import (
|
|
// "net/rpc"
|
|
// "os"
|
|
// "path"
|
|
// "reflect"
|
|
// "sort"
|
|
// "testing"
|
|
// "time"
|
|
|
|
// "github.com/cgrates/cgrates/config"
|
|
// "github.com/cgrates/cgrates/engine"
|
|
// "github.com/cgrates/cgrates/utils"
|
|
// )
|
|
|
|
// var (
|
|
// expCfgDir string
|
|
// expCfgPath string
|
|
// expCfg *config.CGRConfig
|
|
// expRpc *rpc.Client
|
|
|
|
// sTestsExp = []func(t *testing.T){
|
|
// testExpLoadConfig,
|
|
// testExpResetDataDB,
|
|
// testExpResetStorDb,
|
|
// testExpStartEngine,
|
|
// testExpRPCConn,
|
|
// testExpLoadTPFromFolder,
|
|
// testExpExportToFolder,
|
|
// testExpStopCgrEngine, // restart the engine and reset the database
|
|
// testExpResetDataDB,
|
|
// testExpResetStorDb,
|
|
// testExpStartEngine,
|
|
// testExpRPCConn,
|
|
// testExpLoadTPFromExported,
|
|
// testExpVerifyAttributes,
|
|
// testExpVerifyFilters,
|
|
// testExpVerifyThresholds,
|
|
// testExpVerifyResources,
|
|
// testExpVerifyStats,
|
|
// testExpVerifyRoutes,
|
|
// testExpVerifyRateProfiles,
|
|
// testExpVerifyActionProfiles,
|
|
// testExpVerifyAccounts,
|
|
// testExpCleanFiles,
|
|
// testExpStopCgrEngine,
|
|
// }
|
|
// )
|
|
|
|
// func TestExport(t *testing.T) {
|
|
// switch *dbType {
|
|
// case utils.MetaInternal:
|
|
// expCfgDir = "tutinternal"
|
|
// case utils.MetaMySQL:
|
|
// expCfgDir = "tutmysql"
|
|
// case utils.MetaMongo:
|
|
// expCfgDir = "tutmongo"
|
|
// case utils.MetaPostgres:
|
|
// t.SkipNow()
|
|
// default:
|
|
// t.Fatal("Unknown Database type")
|
|
// }
|
|
|
|
// for _, stest := range sTestsExp {
|
|
// t.Run(expCfgDir, stest)
|
|
// }
|
|
// }
|
|
|
|
// func testExpLoadConfig(t *testing.T) {
|
|
// expCfgPath = path.Join(*dataDir, "conf", "samples", expCfgDir)
|
|
// if expCfg, err = config.NewCGRConfigFromPath(expCfgPath); err != nil {
|
|
// t.Error(err)
|
|
// }
|
|
// }
|
|
|
|
// func testExpResetDataDB(t *testing.T) {
|
|
// if err := engine.InitDataDB(expCfg); err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// }
|
|
|
|
// func testExpResetStorDb(t *testing.T) {
|
|
// if err := engine.InitStorDB(expCfg); err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// }
|
|
|
|
// func testExpStartEngine(t *testing.T) {
|
|
// if _, err := engine.StopStartEngine(expCfgPath, *waitRater); err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// }
|
|
|
|
// func testExpRPCConn(t *testing.T) {
|
|
// var err error
|
|
// expRpc, err = newRPCClient(expCfg.ListenCfg())
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// }
|
|
|
|
// func testExpLoadTPFromFolder(t *testing.T) {
|
|
// var reply string
|
|
// attrs := &utils.AttrLoadTpFromFolder{FolderPath: path.Join(*dataDir, "tariffplans", "testit")}
|
|
// if err := expRpc.Call(utils.APIerSv1LoadTariffPlanFromFolder, attrs, &reply); err != nil {
|
|
// t.Error(err)
|
|
// } else if reply != utils.OK {
|
|
// t.Error(reply)
|
|
// }
|
|
// }
|
|
|
|
// func testExpExportToFolder(t *testing.T) {
|
|
// var reply string
|
|
// arg := &utils.ArgExportToFolder{
|
|
// Path: "/tmp/tp/",
|
|
// }
|
|
// if err := expRpc.Call(utils.APIerSv1ExportToFolder, arg, &reply); err != nil {
|
|
// t.Error(err)
|
|
// } else if reply != utils.OK {
|
|
// t.Error(reply)
|
|
// }
|
|
// }
|
|
|
|
// func testExpLoadTPFromExported(t *testing.T) {
|
|
// var reply string
|
|
// attrs := &utils.AttrLoadTpFromFolder{FolderPath: "/tmp/tp/"}
|
|
// if err := expRpc.Call(utils.APIerSv1LoadTariffPlanFromFolder, attrs, &reply); err != nil {
|
|
// t.Error(err)
|
|
// } else if reply != utils.OK {
|
|
// t.Error(reply)
|
|
// }
|
|
// }
|
|
|
|
// func testExpVerifyAttributes(t *testing.T) {
|
|
// exp := &engine.AttributeProfile{
|
|
// Tenant: "cgrates.org",
|
|
// ID: "ATTR_ACNT_1001",
|
|
// FilterIDs: []string{"FLTR_ACCOUNT_1001", "*string:~*opts.*context:*sessions"},
|
|
// Attributes: []*engine.Attribute{
|
|
// {
|
|
// Path: utils.MetaReq + utils.NestingSep + "OfficeGroup",
|
|
// FilterIDs: []string{},
|
|
// Type: utils.MetaConstant,
|
|
// Value: config.NewRSRParsersMustCompile("Marketing", utils.InfieldSep),
|
|
// },
|
|
// },
|
|
// Blocker: false,
|
|
// Weight: 10.0,
|
|
// }
|
|
// var reply *engine.AttributeProfile
|
|
// if err := expRpc.Call(utils.APIerSv1GetAttributeProfile,
|
|
// utils.TenantIDWithAPIOpts{
|
|
// TenantID: &utils.TenantID{Tenant: "cgrates.org", ID: "ATTR_ACNT_1001"}}, &reply); err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// reply.Compile()
|
|
// if *encoding == utils.MetaGOB {
|
|
// for _, v := range exp.Attributes {
|
|
// v.FilterIDs = nil
|
|
// }
|
|
// }
|
|
// if !reflect.DeepEqual(exp, reply) {
|
|
// t.Errorf("Expecting : %+v, \n received: %+v", utils.ToJSON(exp), utils.ToJSON(reply))
|
|
// }
|
|
// }
|
|
|
|
// func testExpVerifyFilters(t *testing.T) {
|
|
// exp := &engine.Filter{
|
|
// Tenant: "cgrates.org",
|
|
// ID: "FLTR_ACCOUNT_1001",
|
|
// Rules: []*engine.FilterRule{
|
|
// {
|
|
// Element: utils.MetaDynReq + utils.NestingSep + "Account",
|
|
// Type: utils.MetaString,
|
|
// Values: []string{"1001"},
|
|
// },
|
|
// },
|
|
// }
|
|
// var reply *engine.Filter
|
|
// if err := expRpc.Call(utils.APIerSv1GetFilter,
|
|
// &utils.TenantID{Tenant: "cgrates.org", ID: "FLTR_ACCOUNT_1001"}, &reply); err != nil {
|
|
// t.Error(err)
|
|
// } else if !reflect.DeepEqual(exp, reply) {
|
|
// t.Errorf("Expecting : %+v,\n received: %+v", utils.ToJSON(exp), utils.ToJSON(reply))
|
|
// }
|
|
|
|
// }
|
|
|
|
// func testExpVerifyThresholds(t *testing.T) {
|
|
// tPrfl := &engine.ThresholdProfileWithAPIOpts{
|
|
// ThresholdProfile: &engine.ThresholdProfile{
|
|
// Tenant: "cgrates.org",
|
|
// ID: "THD_ACNT_1001",
|
|
// FilterIDs: []string{"FLTR_ACCOUNT_1001", "*ai:~*req.AnswerTime:2014-07-29T15:00:00Z"},
|
|
// MaxHits: -1,
|
|
// MinHits: 0,
|
|
// MinSleep: 0,
|
|
// Blocker: false,
|
|
// Weight: 10.0,
|
|
// ActionProfileIDs: []string{"TOPUP_MONETARY_10"},
|
|
// Async: false,
|
|
// },
|
|
// }
|
|
// var reply *engine.ThresholdProfile
|
|
// if err := expRpc.Call(utils.APIerSv1GetThresholdProfile,
|
|
// &utils.TenantID{Tenant: "cgrates.org", ID: "THD_ACNT_1001"}, &reply); err != nil {
|
|
// t.Error(err)
|
|
// } else if !reflect.DeepEqual(tPrfl.ThresholdProfile, reply) {
|
|
// t.Errorf("Expecting: %+v, \n received: %+v", utils.ToJSON(tPrfl.ThresholdProfile), utils.ToJSON(reply))
|
|
// }
|
|
// }
|
|
|
|
// func testExpVerifyResources(t *testing.T) {
|
|
// rPrf := &engine.ResourceProfile{
|
|
// Tenant: "cgrates.org",
|
|
// ID: "RES_ACNT_1001",
|
|
// FilterIDs: []string{"FLTR_ACCOUNT_1001"},
|
|
// UsageTTL: time.Hour,
|
|
// Limit: 1,
|
|
// Blocker: false,
|
|
// Stored: false,
|
|
// Weight: 10,
|
|
// ThresholdIDs: []string{},
|
|
// }
|
|
// if *encoding == utils.MetaGOB {
|
|
// rPrf.ThresholdIDs = nil
|
|
// }
|
|
// var reply *engine.ResourceProfile
|
|
// if err := expRpc.Call(utils.APIerSv1GetResourceProfile,
|
|
// &utils.TenantID{Tenant: "cgrates.org", ID: "RES_ACNT_1001"}, &reply); err != nil {
|
|
// t.Error(err)
|
|
// } else if !reflect.DeepEqual(reply, rPrf) {
|
|
// t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(rPrf), utils.ToJSON(reply))
|
|
// }
|
|
// }
|
|
|
|
// func testExpVerifyStats(t *testing.T) {
|
|
// sPrf := &engine.StatQueueProfile{
|
|
// Tenant: "cgrates.org",
|
|
// ID: "Stat_1",
|
|
// FilterIDs: []string{"FLTR_STAT_1", "*ai:~*req.AnswerTime:2014-07-29T15:00:00Z"},
|
|
// QueueLength: 100,
|
|
// TTL: 10 * time.Second,
|
|
// Metrics: []*engine.MetricWithFilters{
|
|
// {
|
|
// MetricID: utils.MetaACD,
|
|
// },
|
|
// {
|
|
// MetricID: utils.MetaASR,
|
|
// },
|
|
// {
|
|
// MetricID: utils.MetaTCD,
|
|
// },
|
|
// },
|
|
// Blocker: true,
|
|
// Stored: false,
|
|
// Weight: 30,
|
|
// MinItems: 0,
|
|
// ThresholdIDs: []string{utils.MetaNone},
|
|
// }
|
|
// var reply *engine.StatQueueProfile
|
|
// if err := expRpc.Call(utils.AdminSv1GetStatQueueProfile,
|
|
// &utils.TenantID{Tenant: "cgrates.org", ID: "Stat_1"}, &reply); err != nil {
|
|
// t.Error(err)
|
|
// }
|
|
// sort.Slice(reply.Metrics, func(i, j int) bool {
|
|
// return reply.Metrics[i].MetricID < reply.Metrics[j].MetricID
|
|
// })
|
|
// if !reflect.DeepEqual(sPrf, reply) {
|
|
// t.Errorf("Expecting: %+v \n ,\n received: %+v",
|
|
// utils.ToJSON(sPrf), utils.ToJSON(reply))
|
|
// }
|
|
// }
|
|
|
|
// func testExpVerifyRoutes(t *testing.T) {
|
|
// var reply *engine.RouteProfile
|
|
// splPrf := &engine.RouteProfile{
|
|
// Tenant: "cgrates.org",
|
|
// ID: "ROUTE_ACNT_1001",
|
|
// FilterIDs: []string{"FLTR_ACCOUNT_1001"},
|
|
// Sorting: utils.MetaWeight,
|
|
// SortingParameters: []string{},
|
|
// Routes: []*engine.Route{
|
|
// {
|
|
// ID: "route1",
|
|
// Weights: 20,
|
|
// Blocker: false,
|
|
// RouteParameters: utils.EmptyString,
|
|
// },
|
|
// {
|
|
// ID: "route2",
|
|
// Weights: 10,
|
|
// Blocker: false,
|
|
// RouteParameters: utils.EmptyString,
|
|
// },
|
|
// },
|
|
// Weights: 10,
|
|
// }
|
|
|
|
// splPrf2 := &engine.RouteProfile{
|
|
// Tenant: "cgrates.org",
|
|
// ID: "ROUTE_ACNT_1001",
|
|
// FilterIDs: []string{"FLTR_ACCOUNT_1001"},
|
|
// Sorting: utils.MetaWeight,
|
|
// SortingParameters: []string{},
|
|
// Routes: []*engine.Route{
|
|
// {
|
|
// ID: "route2",
|
|
|
|
// Weights: 10,
|
|
// Blocker: false,
|
|
// RouteParameters: utils.EmptyString,
|
|
// },
|
|
// {
|
|
// ID: "route1",
|
|
// Weights: 20,
|
|
// Blocker: false,
|
|
// RouteParameters: utils.EmptyString,
|
|
// },
|
|
// },
|
|
// Weights: 10,
|
|
// }
|
|
// if err := expRpc.Call(utils.APIerSv1GetRouteProfile,
|
|
// &utils.TenantID{Tenant: "cgrates.org", ID: "ROUTE_ACNT_1001"}, &reply); err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// if *encoding == utils.MetaGOB {
|
|
// splPrf.SortingParameters = nil
|
|
// splPrf2.SortingParameters = nil
|
|
// }
|
|
// if !reflect.DeepEqual(splPrf, reply) && !reflect.DeepEqual(splPrf2, reply) {
|
|
// t.Errorf("Expecting: %+v \n or %+v \n,\n received: %+v",
|
|
// utils.ToJSON(splPrf), utils.ToJSON(splPrf2), utils.ToJSON(reply))
|
|
// }
|
|
// }
|
|
|
|
// func testExpVerifyRateProfiles(t *testing.T) {
|
|
// var reply *utils.RateProfile
|
|
// minDecimal, err := utils.NewDecimalFromUsage("1m")
|
|
// if err != nil {
|
|
// t.Error(err)
|
|
// }
|
|
// secDecimal, err := utils.NewDecimalFromUsage("1s")
|
|
// if err != nil {
|
|
// t.Error(err)
|
|
// }
|
|
|
|
// splPrf := &utils.RateProfile{
|
|
// Tenant: "cgrates.org",
|
|
// ID: "RT_SPECIAL_1002",
|
|
// FilterIDs: []string{"*string:~*req.Account:1002"},
|
|
// Weights: utils.DynamicWeights{
|
|
// {
|
|
// Weight: 10,
|
|
// },
|
|
// },
|
|
// MinCost: utils.NewDecimal(0, 0),
|
|
// MaxCost: utils.NewDecimal(0, 0),
|
|
// MaxCostStrategy: utils.MetaMaxCostFree,
|
|
// Rates: map[string]*utils.Rate{
|
|
// "RT_ALWAYS": {
|
|
// ID: "RT_ALWAYS",
|
|
// FilterIDs: nil,
|
|
// ActivationTimes: "* * * * *",
|
|
// Weights: utils.DynamicWeights{
|
|
// {
|
|
// Weight: 0,
|
|
// },
|
|
// },
|
|
// Blocker: false,
|
|
// IntervalRates: []*utils.IntervalRate{
|
|
// {
|
|
// IntervalStart: utils.NewDecimal(int64(0*time.Second), 0),
|
|
// RecurrentFee: utils.NewDecimal(1, 2),
|
|
// Unit: minDecimal,
|
|
// Increment: secDecimal,
|
|
// FixedFee: utils.NewDecimal(0, 0),
|
|
// },
|
|
// },
|
|
// },
|
|
// },
|
|
// }
|
|
|
|
// if *encoding == utils.MetaGOB {
|
|
// splPrf.FilterIDs = nil
|
|
// }
|
|
// if err := expRpc.Call(utils.APIerSv1GetRateProfile, &utils.TenantIDWithAPIOpts{
|
|
// TenantID: &utils.TenantID{Tenant: "cgrates.org", ID: "RT_SPECIAL_1002"}}, &reply); err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// if !reflect.DeepEqual(splPrf, reply) {
|
|
// t.Errorf("Expecting: %+v,\n received: %+v",
|
|
// utils.ToJSON(splPrf), utils.ToJSON(reply))
|
|
// }
|
|
// }
|
|
|
|
// func testExpVerifyActionProfiles(t *testing.T) {
|
|
// var reply *engine.ActionProfile
|
|
// actPrf := &engine.ActionProfile{
|
|
// Tenant: "cgrates.org",
|
|
// ID: "ONE_TIME_ACT",
|
|
// FilterIDs: []string{},
|
|
// Weight: 10,
|
|
// Schedule: utils.MetaASAP,
|
|
// Targets: map[string]utils.StringSet{
|
|
// utils.MetaAccounts: {"1001": {}, "1002": {}},
|
|
// },
|
|
// Actions: []*engine.APAction{
|
|
// {
|
|
// ID: "TOPUP",
|
|
// Type: utils.MetaAddBalance,
|
|
// Diktats: []*engine.APDiktat{{
|
|
// Path: utils.MetaBalance + utils.NestingSep + "TestBalance" + utils.NestingSep + utils.Units,
|
|
// Value: "10",
|
|
// }},
|
|
// },
|
|
|
|
// {
|
|
// ID: "SET_BALANCE_TEST_DATA",
|
|
// Type: utils.MetaSetBalance,
|
|
// Diktats: []*engine.APDiktat{{
|
|
// Path: utils.MetaBalance + utils.NestingSep + "TestDataBalance" + utils.NestingSep + utils.Type,
|
|
// Value: utils.MetaData,
|
|
// }},
|
|
// },
|
|
// {
|
|
// ID: "TOPUP_TEST_DATA",
|
|
// Type: utils.MetaAddBalance,
|
|
// Diktats: []*engine.APDiktat{{
|
|
// Path: utils.MetaBalance + utils.NestingSep + "TestDataBalance" + utils.NestingSep + utils.Units,
|
|
// Value: "1024",
|
|
// }},
|
|
// },
|
|
// {
|
|
// ID: "SET_BALANCE_TEST_VOICE",
|
|
// Type: utils.MetaSetBalance,
|
|
// Diktats: []*engine.APDiktat{{
|
|
// Path: utils.MetaBalance + utils.NestingSep + "TestVoiceBalance" + utils.NestingSep + utils.Type,
|
|
// Value: utils.MetaVoice,
|
|
// }},
|
|
// },
|
|
// {
|
|
// ID: "TOPUP_TEST_VOICE",
|
|
// Type: utils.MetaAddBalance,
|
|
// Diktats: []*engine.APDiktat{{
|
|
// Path: utils.MetaBalance + utils.NestingSep + "TestVoiceBalance" + utils.NestingSep + utils.Units,
|
|
// Value: "15m15s",
|
|
// }},
|
|
// },
|
|
// {
|
|
// ID: "SET_BALANCE_TEST_FILTERS",
|
|
// Type: utils.MetaSetBalance,
|
|
// Diktats: []*engine.APDiktat{{
|
|
// Path: utils.MetaBalance + utils.NestingSep + "TestVoiceBalance" + utils.NestingSep + utils.Filters,
|
|
// Value: "*string:~*req.CustomField:500",
|
|
// }},
|
|
// },
|
|
// {
|
|
// ID: "TOPUP_REM_VOICE",
|
|
// Type: utils.MetaRemBalance,
|
|
// Diktats: []*engine.APDiktat{{
|
|
// Path: "TestVoiceBalance2",
|
|
// }},
|
|
// },
|
|
// },
|
|
// }
|
|
// if *encoding == utils.MetaGOB {
|
|
// actPrf.FilterIDs = nil
|
|
// for _, act := range actPrf.Actions {
|
|
// act.FilterIDs = nil
|
|
// }
|
|
// }
|
|
// if err := expRpc.Call(utils.APIerSv1GetActionProfile, &utils.TenantIDWithAPIOpts{
|
|
// TenantID: &utils.TenantID{Tenant: "cgrates.org", ID: "ONE_TIME_ACT"}}, &reply); err != nil {
|
|
// t.Fatal(err)
|
|
// } else if !reflect.DeepEqual(actPrf, reply) {
|
|
// t.Errorf("Expecting : %+v \n received: %+v", utils.ToJSON(actPrf), utils.ToJSON(reply))
|
|
// }
|
|
// }
|
|
|
|
// func testExpVerifyAccounts(t *testing.T) {
|
|
// var reply *utils.Account
|
|
// acctPrf := &utils.Account{
|
|
// Tenant: "cgrates.org",
|
|
// ID: "ACC_PRF_1",
|
|
// FilterIDs: []string{},
|
|
// Weights: utils.DynamicWeights{
|
|
// {
|
|
// Weight: 20,
|
|
// },
|
|
// },
|
|
// Balances: map[string]*utils.Balance{
|
|
// "MonetaryBalance": {
|
|
// ID: "MonetaryBalance",
|
|
// Weights: utils.DynamicWeights{
|
|
// {
|
|
// Weight: 10,
|
|
// },
|
|
// },
|
|
// Type: "*monetary",
|
|
// CostIncrements: []*utils.CostIncrement{
|
|
// {
|
|
// FilterIDs: []string{"fltr1", "fltr2"},
|
|
// Increment: utils.NewDecimal(13, 1),
|
|
// FixedFee: utils.NewDecimal(23, 1),
|
|
// RecurrentFee: utils.NewDecimal(33, 1),
|
|
// },
|
|
// },
|
|
// AttributeIDs: []string{"attr1", "attr2"},
|
|
// UnitFactors: []*utils.UnitFactor{
|
|
// {
|
|
// FilterIDs: []string{"fltr1", "fltr2"},
|
|
// Factor: utils.NewDecimal(100, 0),
|
|
// },
|
|
// {
|
|
// FilterIDs: []string{"fltr3"},
|
|
// Factor: utils.NewDecimal(200, 0),
|
|
// },
|
|
// },
|
|
// Units: utils.NewDecimal(14, 0),
|
|
// },
|
|
// },
|
|
// ThresholdIDs: []string{"*none"},
|
|
// }
|
|
// sort.Strings(acctPrf.Balances["MonetaryBalance"].CostIncrements[0].FilterIDs)
|
|
// sort.Strings(acctPrf.Balances["MonetaryBalance"].UnitFactors[0].FilterIDs)
|
|
// sort.Strings(acctPrf.Balances["MonetaryBalance"].AttributeIDs)
|
|
// if err := expRpc.Call(utils.APIerSv1GetAccount, &utils.TenantIDWithAPIOpts{
|
|
// TenantID: &utils.TenantID{Tenant: "cgrates.org", ID: "ACC_PRF_1"}}, &reply); err != nil {
|
|
// t.Fatal(err)
|
|
// } else {
|
|
// sort.Strings(acctPrf.Balances["MonetaryBalance"].CostIncrements[0].FilterIDs)
|
|
// sort.Strings(acctPrf.Balances["MonetaryBalance"].UnitFactors[0].FilterIDs)
|
|
// sort.Strings(acctPrf.Balances["MonetaryBalance"].AttributeIDs)
|
|
// if !reflect.DeepEqual(acctPrf, reply) {
|
|
// t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(acctPrf), utils.ToJSON(reply))
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// func testExpCleanFiles(t *testing.T) {
|
|
// if err := os.RemoveAll("/tmp/tp/"); err != nil {
|
|
// t.Error(err)
|
|
// }
|
|
// }
|
|
|
|
// func testExpStopCgrEngine(t *testing.T) {
|
|
// if err := engine.KillEngine(100); err != nil {
|
|
// t.Error(err)
|
|
// }
|
|
// }
|