Refactory resourcesv1_it_test.go with subtests

This commit is contained in:
TeoV
2017-08-30 10:50:05 -04:00
parent d0be12cc0a
commit 916a78f21b
4 changed files with 140 additions and 60 deletions

View File

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

View File

@@ -69,6 +69,15 @@
"enabled": true,
},
"resources": {
"enabled": true,
"stats_conns": [
//{"address": "*internal"}
],
"cache_dump_interval": "0s",
"usage_ttl": "3h",
},
"sm_generic": {
"enabled": true,
},

View File

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

View File

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