mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Refactory resourcesv1_it_test.go with subtests
This commit is contained in:
@@ -36,29 +36,88 @@ var (
|
||||
rlsV1CfgPath string
|
||||
rlsV1Cfg *config.CGRConfig
|
||||
rlsV1Rpc *rpc.Client
|
||||
rlsV1ConfDIR string //run tests for specific configuration
|
||||
rlsConfig *engine.ResourceCfg
|
||||
delay int
|
||||
)
|
||||
|
||||
func TestRLsV1LoadConfig(t *testing.T) {
|
||||
var err error
|
||||
rlsV1CfgPath = path.Join(*dataDir, "conf", "samples", "reslimiter")
|
||||
if rlsV1Cfg, err = config.NewCGRConfigFromFolder(rlsV1CfgPath); err != nil {
|
||||
t.Error(err)
|
||||
var sTestsRLSV1 = []func(t *testing.T){
|
||||
testV1RLSLoadConfig,
|
||||
testV1RLSInitDataDb,
|
||||
testV1RLSResetStorDb,
|
||||
testV1RLSStartEngine,
|
||||
testV1RLSRpcConn,
|
||||
testV1RLSFromFolder,
|
||||
testV1RLSGetResourcesFromEvent,
|
||||
testV1RLSAllocateResource,
|
||||
testV1RLSAllowUsage,
|
||||
testV1RLSReleaseResource,
|
||||
testV1RLSGetResourceConfigBeforeSet,
|
||||
testV1RLSSetResourceConfig,
|
||||
testV1RLSGetResourceConfigAfterSet,
|
||||
testV1RLSUpdateResourceConfig,
|
||||
testV1RLSGetResourceConfigAfterUpdate,
|
||||
testV1RLSRemResourceCOnfig,
|
||||
testV1RLSGetResourceConfigAfterDelete,
|
||||
testV1RLSStopEngine,
|
||||
}
|
||||
|
||||
//Test start here
|
||||
func TestRLSV1ITMySQL(t *testing.T) {
|
||||
rlsV1ConfDIR = "tutmysql"
|
||||
for _, stest := range sTestsRLSV1 {
|
||||
t.Run(rlsV1ConfDIR, stest)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRLsV1InitDataDb(t *testing.T) {
|
||||
func TestRLSV1ITpg(t *testing.T) {
|
||||
rlsV1ConfDIR = "tutpostgres"
|
||||
for _, stest := range sTestsRLSV1 {
|
||||
t.Run(rlsV1ConfDIR, stest)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRLSV1ITMongo(t *testing.T) {
|
||||
rlsV1ConfDIR = "tutmongo"
|
||||
for _, stest := range sTestsRLSV1 {
|
||||
t.Run(rlsV1ConfDIR, stest)
|
||||
}
|
||||
}
|
||||
|
||||
func testV1RLSLoadConfig(t *testing.T) {
|
||||
var err error
|
||||
rlsV1CfgPath = path.Join(*dataDir, "conf", "samples", rlsV1ConfDIR)
|
||||
if rlsV1Cfg, err = config.NewCGRConfigFromFolder(rlsV1CfgPath); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
switch rlsV1ConfDIR {
|
||||
case "tutmongo": // Mongo needs more time to reset db, need to investigate
|
||||
delay = 4000
|
||||
default:
|
||||
delay = 1000
|
||||
}
|
||||
}
|
||||
|
||||
func testV1RLSInitDataDb(t *testing.T) {
|
||||
if err := engine.InitDataDb(rlsV1Cfg); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRLsV1StartEngine(t *testing.T) {
|
||||
if _, err := engine.StopStartEngine(rlsV1CfgPath, 1000); err != nil {
|
||||
// Wipe out the cdr database
|
||||
func testV1RLSResetStorDb(t *testing.T) {
|
||||
if err := engine.InitStorDb(rlsV1Cfg); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRLsV1RpcConn(t *testing.T) {
|
||||
func testV1RLSStartEngine(t *testing.T) {
|
||||
if _, err := engine.StopStartEngine(rlsV1CfgPath, delay); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func testV1RLSRpcConn(t *testing.T) {
|
||||
var err error
|
||||
rlsV1Rpc, err = jsonrpc.Dial("tcp", rlsV1Cfg.RPCJSONListen) // We connect over JSON so we can also troubleshoot if needed
|
||||
if err != nil {
|
||||
@@ -66,7 +125,7 @@ func TestRLsV1RpcConn(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRLsV1TPFromFolder(t *testing.T) {
|
||||
func testV1RLSFromFolder(t *testing.T) {
|
||||
var reply string
|
||||
time.Sleep(time.Duration(2000) * time.Millisecond)
|
||||
attrs := &utils.AttrLoadTpFromFolder{FolderPath: path.Join(*dataDir, "tariffplans", "tutorial")}
|
||||
@@ -76,7 +135,7 @@ func TestRLsV1TPFromFolder(t *testing.T) {
|
||||
time.Sleep(time.Duration(1000) * time.Millisecond)
|
||||
}
|
||||
|
||||
func TestRLsV1GetResourcesForEvent(t *testing.T) {
|
||||
func testV1RLSGetResourcesFromEvent(t *testing.T) {
|
||||
var reply *[]*engine.ResourceCfg
|
||||
ev := map[string]interface{}{"Unknown": "unknown"}
|
||||
if err := rlsV1Rpc.Call("ResourceSV1.GetResourcesForEvent", ev, &reply); err == nil || err.Error() != utils.ErrNotFound.Error() {
|
||||
@@ -118,7 +177,7 @@ func TestRLsV1GetResourcesForEvent(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRLsV1AllocateResource(t *testing.T) {
|
||||
func testV1RLSAllocateResource(t *testing.T) {
|
||||
var reply string
|
||||
|
||||
attrRU := utils.AttrRLsResourceUsage{
|
||||
@@ -163,7 +222,7 @@ func TestRLsV1AllocateResource(t *testing.T) {
|
||||
|
||||
}
|
||||
|
||||
func TestRLsV1AllowUsage(t *testing.T) {
|
||||
func testV1RLSAllowUsage(t *testing.T) {
|
||||
var reply bool
|
||||
attrRU := utils.AttrRLsResourceUsage{
|
||||
UsageID: "651a8db2-4f67-4cf8-b622-169e8a482e51",
|
||||
@@ -186,7 +245,7 @@ func TestRLsV1AllowUsage(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRLsV1ReleaseResource(t *testing.T) {
|
||||
func testV1RLSReleaseResource(t *testing.T) {
|
||||
var reply interface{}
|
||||
|
||||
attrRU := utils.AttrRLsResourceUsage{
|
||||
@@ -212,56 +271,55 @@ func TestRLsV1ReleaseResource(t *testing.T) {
|
||||
|
||||
}
|
||||
|
||||
var resConfig = &engine.ResourceCfg{
|
||||
ID: "RCFG1",
|
||||
Filters: []*engine.RequestFilter{
|
||||
&engine.RequestFilter{
|
||||
Type: "type",
|
||||
FieldName: "Name",
|
||||
Values: []string{"FilterValue1", "FilterValue2"},
|
||||
},
|
||||
},
|
||||
ActivationInterval: &utils.ActivationInterval{
|
||||
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
|
||||
ExpiryTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
|
||||
},
|
||||
UsageTTL: time.Duration(10) * time.Microsecond,
|
||||
Limit: 10,
|
||||
AllocationMessage: "MessageAllocation",
|
||||
Blocker: true,
|
||||
Stored: true,
|
||||
Weight: 20,
|
||||
Thresholds: []string{"Val1", "Val2"},
|
||||
}
|
||||
|
||||
func TestRLsV1GetResourceConfigBeforeSet(t *testing.T) {
|
||||
func testV1RLSGetResourceConfigBeforeSet(t *testing.T) {
|
||||
var reply *string
|
||||
if err := rlsV1Rpc.Call("ApierV1.GetResourceConfig", &AttrGetResCfg{ID: "RCFG1"}, &reply); err == nil || err.Error() != utils.ErrNotFound.Error() {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRLsV1SetResourceConfig(t *testing.T) {
|
||||
func testV1RLSSetResourceConfig(t *testing.T) {
|
||||
rlsConfig = &engine.ResourceCfg{
|
||||
ID: "RCFG1",
|
||||
Filters: []*engine.RequestFilter{
|
||||
&engine.RequestFilter{
|
||||
Type: "type",
|
||||
FieldName: "Name",
|
||||
Values: []string{"FilterValue1", "FilterValue2"},
|
||||
},
|
||||
},
|
||||
ActivationInterval: &utils.ActivationInterval{
|
||||
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC).Local(),
|
||||
ExpiryTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC).Local(),
|
||||
},
|
||||
UsageTTL: time.Duration(10) * time.Microsecond,
|
||||
Limit: 10,
|
||||
AllocationMessage: "MessageAllocation",
|
||||
Blocker: true,
|
||||
Stored: true,
|
||||
Weight: 20,
|
||||
Thresholds: []string{"Val1", "Val2"},
|
||||
}
|
||||
var result string
|
||||
if err := rlsV1Rpc.Call("ApierV1.SetResourceConfig", resConfig, &result); err != nil {
|
||||
if err := rlsV1Rpc.Call("ApierV1.SetResourceConfig", rlsConfig, &result); err != nil {
|
||||
t.Error(err)
|
||||
} else if result != utils.OK {
|
||||
t.Error("Unexpected reply returned", result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRLsV1GetResourceConfigAfterSet(t *testing.T) {
|
||||
func testV1RLSGetResourceConfigAfterSet(t *testing.T) {
|
||||
var reply *engine.ResourceCfg
|
||||
if err := rlsV1Rpc.Call("ApierV1.GetResourceConfig", &AttrGetResCfg{ID: "RCFG1"}, &reply); err != nil {
|
||||
if err := rlsV1Rpc.Call("ApierV1.GetResourceConfig", &AttrGetResCfg{ID: rlsConfig.ID}, &reply); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(reply, resConfig) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", resConfig, reply)
|
||||
} else if !reflect.DeepEqual(reply, rlsConfig) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", rlsConfig, reply)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRLsV1UpdateResourceConfig(t *testing.T) {
|
||||
func testV1RLSUpdateResourceConfig(t *testing.T) {
|
||||
var result string
|
||||
resConfig.Filters = []*engine.RequestFilter{
|
||||
rlsConfig.Filters = []*engine.RequestFilter{
|
||||
&engine.RequestFilter{
|
||||
Type: "type",
|
||||
FieldName: "Name",
|
||||
@@ -272,45 +330,40 @@ func TestRLsV1UpdateResourceConfig(t *testing.T) {
|
||||
FieldName: "Accout",
|
||||
Values: []string{"1001", "1002"},
|
||||
},
|
||||
&engine.RequestFilter{
|
||||
Type: "*string_prefix",
|
||||
FieldName: "Destination",
|
||||
Values: []string{"10", "20"},
|
||||
},
|
||||
}
|
||||
if err := rlsV1Rpc.Call("ApierV1.SetResourceConfig", resConfig, &result); err != nil {
|
||||
if err := rlsV1Rpc.Call("ApierV1.SetResourceConfig", rlsConfig, &result); err != nil {
|
||||
t.Error(err)
|
||||
} else if result != utils.OK {
|
||||
t.Error("Unexpected reply returned", result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRLsV1GetResourceConfigAfterUpdate(t *testing.T) {
|
||||
func testV1RLSGetResourceConfigAfterUpdate(t *testing.T) {
|
||||
var reply *engine.ResourceCfg
|
||||
if err := rlsV1Rpc.Call("ApierV1.GetResourceConfig", &AttrGetResCfg{ID: "RCFG1"}, &reply); err != nil {
|
||||
if err := rlsV1Rpc.Call("ApierV1.GetResourceConfig", &AttrGetResCfg{ID: rlsConfig.ID}, &reply); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(reply, resConfig) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", resConfig, reply)
|
||||
} else if !reflect.DeepEqual(reply, rlsConfig) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", rlsConfig, reply)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRLsV1RemResourceCOnfig(t *testing.T) {
|
||||
func testV1RLSRemResourceCOnfig(t *testing.T) {
|
||||
var resp string
|
||||
if err := rlsV1Rpc.Call("ApierV1.RemResourceConfig", &AttrGetResCfg{ID: resConfig.ID}, &resp); err != nil {
|
||||
if err := rlsV1Rpc.Call("ApierV1.RemResourceConfig", &AttrGetResCfg{ID: rlsConfig.ID}, &resp); err != nil {
|
||||
t.Error(err)
|
||||
} else if resp != utils.OK {
|
||||
t.Error("Unexpected reply returned", resp)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRLsV1GetResourceConfigAfterDelete(t *testing.T) {
|
||||
func testV1RLSGetResourceConfigAfterDelete(t *testing.T) {
|
||||
var reply *string
|
||||
if err := rlsV1Rpc.Call("ApierV1.GetResourceConfig", &AttrGetResCfg{ID: resConfig.ID}, &reply); err == nil || err.Error() != utils.ErrNotFound.Error() {
|
||||
if err := rlsV1Rpc.Call("ApierV1.GetResourceConfig", &AttrGetResCfg{ID: "RCFG1"}, &reply); err == nil || err.Error() != utils.ErrNotFound.Error() {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRLsV1StopEngine(t *testing.T) {
|
||||
func testV1RLSStopEngine(t *testing.T) {
|
||||
if err := engine.KillEngine(100); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -69,6 +69,15 @@
|
||||
"enabled": true,
|
||||
},
|
||||
|
||||
"resources": {
|
||||
"enabled": true,
|
||||
"stats_conns": [
|
||||
//{"address": "*internal"}
|
||||
],
|
||||
"cache_dump_interval": "0s",
|
||||
"usage_ttl": "3h",
|
||||
},
|
||||
|
||||
"sm_generic": {
|
||||
"enabled": true,
|
||||
},
|
||||
|
||||
@@ -109,6 +109,15 @@
|
||||
"usage_ttl": "3h", // expire usage records if older than this duration <""|*never|dur>
|
||||
},
|
||||
|
||||
"resources": {
|
||||
"enabled": true,
|
||||
"stats_conns": [
|
||||
//{"address": "*internal"}
|
||||
],
|
||||
"cache_dump_interval": "0s",
|
||||
"usage_ttl": "3h",
|
||||
},
|
||||
|
||||
"historys": {
|
||||
"enabled": true,
|
||||
},
|
||||
|
||||
@@ -61,6 +61,15 @@
|
||||
"enabled": true, // starts Aliases service: <true|false>.
|
||||
},
|
||||
|
||||
"resources": {
|
||||
"enabled": true,
|
||||
"stats_conns": [
|
||||
//{"address": "*internal"}
|
||||
],
|
||||
"cache_dump_interval": "0s",
|
||||
"usage_ttl": "3h",
|
||||
},
|
||||
|
||||
"sm_generic": {
|
||||
"enabled": true,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user