Skip to content
Snippets Groups Projects
Commit 57c8683b authored by Pramod Kulkarni's avatar Pramod Kulkarni
Browse files

TTCN changes to check the TP requirements for creation/non-creation of Resource.

parent 3f9aef86
No related branches found
No related tags found
2 merge requests!25Ae fixes,!20Stf531 check tpreq ttcn
This commit is part of merge request !20. Comments created here will be created in the context of that merge request.
...@@ -624,6 +624,63 @@ module OneM2M_Functions { ...@@ -624,6 +624,63 @@ module OneM2M_Functions {
}// end f_cse_deleteResource }// end f_cse_deleteResource
function f_isResourceCreated (integer p_resourceIndex) runs on CseTester return boolean {
var ResponseStatusCode v_responseStatusCode;
//Check to see if the resource has been created or not
mcaPort.send(m_request(m_retrieveResource(f_getResourceAddress(p_resourceIndex), f_getOriginator(p_resourceIndex))));
tc_ac.start;
alt {
[] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) {
tc_ac.stop;
setverdict(pass, testcasename() & ": Resource created: " & f_getResourceAddress(p_resourceIndex));
return true;
}
[] mcaPort.receive(mw_response(mw_responsePrimitive(?))) {
tc_ac.stop;
setverdict(fail, testcasename() & ": Wrong response status code in the response");
return false;
}
[] tc_ac.timeout {
setverdict(fail, testcasename() & ": No answer while creating resource");
return false;
}
}
}
function f_isResourceNotCreated (integer p_parentIndex, XSD.String p_resourceName) runs on CseTester return boolean {
var ResponseStatusCode v_responseStatusCode;
log(testcasename() & "Hierarchical method is required to check the non creation of the resource");
vc_addressingMethod := e_hierarchical;
//Check to see if the resource has NOT been created
mcaPort.send(m_request(m_retrieveResource(f_getResourceAddress(p_parentIndex) & "/" & p_resourceName, f_getOriginator(p_parentIndex))));
tc_ac.start;
alt {
[] mcaPort.receive(mw_response(mw_responsePrimitive(int4004))) {
tc_ac.stop;
setverdict(pass, testcasename() & ": Resource not created");
vc_addressingMethod := PX_ADDRESSING_METHOD;
return true;
}
[] mcaPort.receive(mw_response(mw_responsePrimitive(?))) {
tc_ac.stop;
setverdict(fail, testcasename() & ": Wrong response status code in the response");
vc_addressingMethod := PX_ADDRESSING_METHOD;
return false;
}
[] tc_ac.timeout {
setverdict(fail, testcasename() & ": No answer while creating resource");
vc_addressingMethod := PX_ADDRESSING_METHOD;
return false;
}
}
}
/** /**
* @desc Update of the auxiliar ACP resource * @desc Update of the auxiliar ACP resource
* @param p_allowedOperations New allowed operations * @param p_allowedOperations New allowed operations
......
...@@ -3143,7 +3143,7 @@ module OneM2M_Templates { ...@@ -3143,7 +3143,7 @@ module OneM2M_Templates {
primitiveContent := p_content primitiveContent := p_content
} }
template ResponsePrimitive mw_responsePrimitive(ResponseStatusCode p_statusCode) := { template ResponsePrimitive mw_responsePrimitive(template ResponseStatusCode p_statusCode) := {
responseStatusCode := p_statusCode, responseStatusCode := p_statusCode,
requestIdentifier := ?, requestIdentifier := ?,
primitiveContent := *, primitiveContent := *,
......
...@@ -2896,7 +2896,7 @@ module OneM2M_Testcases { ...@@ -2896,7 +2896,7 @@ module OneM2M_Testcases {
tc_ac.stop; tc_ac.stop;
setverdict(pass, testcasename() & ": Resource type " & int2str(enum2int(p_resourceType)) & " created successfully"); setverdict(pass, testcasename() & ": Resource type " & int2str(enum2int(p_resourceType)) & " created successfully");
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_parentIndex); v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_parentIndex);
vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_resourceIndex}; vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_resourceIndex};
} }
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
tc_ac.stop; tc_ac.stop;
...@@ -2908,6 +2908,12 @@ module OneM2M_Testcases { ...@@ -2908,6 +2908,12 @@ module OneM2M_Testcases {
} }
f_checkCseTesterStatus(); f_checkCseTesterStatus();
//Check to see if the resource has been created
if (f_isResourceCreated(v_resourceIndex)){
setverdict(pass, testcasename() & "Resource created");
} else {
setverdict(fail, testcasename() & "Resource not created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -3036,6 +3042,7 @@ module OneM2M_Testcases { ...@@ -3036,6 +3042,7 @@ module OneM2M_Testcases {
var integer v_aeIndex := -1; var integer v_aeIndex := -1;
var CseTester v_notifyHandler; var CseTester v_notifyHandler;
var integer v_ae2Index := -1; var integer v_ae2Index := -1;
var integer v_resourceIndex := -1;
// Test control // Test control
...@@ -3058,6 +3065,7 @@ module OneM2M_Testcases { ...@@ -3058,6 +3065,7 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(pass, testcasename() & ": Resource type " & int2str(enum2int(p_resourceType)) & " created successfully"); setverdict(pass, testcasename() & ": Resource type " & int2str(enum2int(p_resourceType)) & " created successfully");
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_aeIndex);
} }
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
tc_ac.stop; tc_ac.stop;
...@@ -3067,7 +3075,13 @@ module OneM2M_Testcases { ...@@ -3067,7 +3075,13 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": No answer while creating resource type " & int2str(enum2int(p_resourceType))); setverdict(inconc, testcasename() & ": No answer while creating resource type " & int2str(enum2int(p_resourceType)));
} }
} }
//Check to see if the resource has been created
if(f_isResourceCreated(v_resourceIndex)){
setverdict(pass, testcasename() & "Resource created");
} else {
setverdict(fail, testcasename() & "Resource not created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -3266,7 +3280,14 @@ module OneM2M_Testcases { ...@@ -3266,7 +3280,14 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": No answer while creating resource"); setverdict(inconc, testcasename() & ": No answer while creating resource");
} }
} }
//Check to see if the resource has NOT been created
if(f_isResourceNotCreated(v_aeIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & "Resource not created");
} else {
setverdict(fail, testcasename() & "Resource created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -3353,7 +3374,14 @@ module OneM2M_Testcases { ...@@ -3353,7 +3374,14 @@ module OneM2M_Testcases {
setverdict(fail, testcasename() & ": No answer while creating resource type " & int2str(enum2int(p_resourceType))); setverdict(fail, testcasename() & ": No answer while creating resource type " & int2str(enum2int(p_resourceType)));
} }
} }
//Check to see if the resource has NOT been created
if(f_isResourceNotCreated(v_aeIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & "Resource not created");
} else {
setverdict(fail, testcasename() & "Resource created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -3415,6 +3443,7 @@ module OneM2M_Testcases { ...@@ -3415,6 +3443,7 @@ module OneM2M_Testcases {
var MsgIn v_response; var MsgIn v_response;
var RequestPrimitive v_request; var RequestPrimitive v_request;
var integer v_aeIndex := -1; var integer v_aeIndex := -1;
var integer v_resourceIndex := -1;
// Test control // Test control
...@@ -3435,6 +3464,7 @@ module OneM2M_Testcases { ...@@ -3435,6 +3464,7 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(pass, testcasename() & ": Accepted creation rejected for resource type " & int2str(enum2int(p_resourceType))); setverdict(pass, testcasename() & ": Accepted creation rejected for resource type " & int2str(enum2int(p_resourceType)));
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_aeIndex);
} }
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
tc_ac.stop; tc_ac.stop;
...@@ -3444,6 +3474,13 @@ module OneM2M_Testcases { ...@@ -3444,6 +3474,13 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": No answer while creating resource type " & int2str(enum2int(p_resourceType))); setverdict(inconc, testcasename() & ": No answer while creating resource type " & int2str(enum2int(p_resourceType)));
} }
} }
//Check to see if the resource has been created
if(f_isResourceCreated(v_resourceIndex)){
setverdict(pass, testcasename() & "Resource created");
} else {
setverdict(fail, testcasename() & "Resource not created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -3498,11 +3535,19 @@ module OneM2M_Testcases { ...@@ -3498,11 +3535,19 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(fail, testcasename() & ": Accepted creation of contentInstance exceding maximum number of instances"); setverdict(fail, testcasename() & ": Accepted creation of contentInstance exceding maximum number of instances");
} }
[] tc_ac.timeout { [] tc_ac.timeout {
setverdict(inconc, testcasename() & ": No answer while creating resource type 4"); setverdict(inconc, testcasename() & ": No answer while creating resource type 4");
} }
} }
//Check to see if the resource has NOT been created
if(f_isResourceNotCreated(v_containerIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & "Resource not created");
} else {
setverdict(fail, testcasename() & "Resource created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -3523,7 +3568,8 @@ module OneM2M_Testcases { ...@@ -3523,7 +3568,8 @@ module OneM2M_Testcases {
var RequestPrimitive v_request; var RequestPrimitive v_request;
var integer v_aeIndex := -1; var integer v_aeIndex := -1;
var integer v_containerIndex := -1; var integer v_containerIndex := -1;
const integer c_maxByteSize := 0; const integer c_maxByteSize := 0;
var integer v_resourceIndex := -1;
// Test control // Test control
// Test component configuration // Test component configuration
...@@ -3547,6 +3593,7 @@ module OneM2M_Testcases { ...@@ -3547,6 +3593,7 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitive(int5207))) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitive(int5207))) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(pass, testcasename() & ": Maximun byte size exceeded"); setverdict(pass, testcasename() & ": Maximun byte size exceeded");
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_containerIndex);
} }
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
tc_ac.stop; tc_ac.stop;
...@@ -3556,11 +3603,19 @@ module OneM2M_Testcases { ...@@ -3556,11 +3603,19 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(fail, testcasename() & ": Accepted creation of contentInstance exceding maximum byte size"); setverdict(fail, testcasename() & ": Accepted creation of contentInstance exceding maximum byte size");
} }
[] tc_ac.timeout { [] tc_ac.timeout {
setverdict(inconc, testcasename() & ": No answer while creating resource type 4"); setverdict(inconc, testcasename() & ": No answer while creating resource type 4");
} }
} }
//Check to see if the resource has been created or not
if(f_isResourceCreated(v_resourceIndex)){
setverdict(pass, testcasename() & "Resource created");
} else {
setverdict(fail, testcasename() & "Resource not created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -3670,6 +3725,7 @@ module OneM2M_Testcases { ...@@ -3670,6 +3725,7 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitive(int4005))) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitive(int4005))) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(pass, testcasename() & ": Not allowed to create a contentInstance resource named 'la'"); setverdict(pass, testcasename() & ": Not allowed to create a contentInstance resource named 'la'");
} }
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
tc_ac.stop; tc_ac.stop;
...@@ -3678,11 +3734,19 @@ module OneM2M_Testcases { ...@@ -3678,11 +3734,19 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(fail, testcasename() & ": Accepted creation of contentInstance named 'la'"); setverdict(fail, testcasename() & ": Accepted creation of contentInstance named 'la'");
} }
[] tc_ac.timeout { [] tc_ac.timeout {
setverdict(fail, testcasename() & ": No answer while creating resource type 4"); setverdict(fail, testcasename() & ": No answer while creating resource type 4");
} }
} }
//Check to see if the resource has NOT been created
if(f_isResourceNotCreated(v_containerIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & "Resource not created");
} else {
setverdict(fail, testcasename() & "Resource created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -3703,6 +3767,7 @@ module OneM2M_Testcases { ...@@ -3703,6 +3767,7 @@ module OneM2M_Testcases {
var RequestPrimitive v_request; var RequestPrimitive v_request;
var integer v_aeIndex := -1; var integer v_aeIndex := -1;
var integer v_containerIndex := -1; var integer v_containerIndex := -1;
var boolean v_resourceCreated := false;
// Test control // Test control
...@@ -3727,6 +3792,7 @@ module OneM2M_Testcases { ...@@ -3727,6 +3792,7 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitive(int4005))) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitive(int4005))) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(pass, testcasename() & ": Not allowed to create a contentInstance resource named 'ol'"); setverdict(pass, testcasename() & ": Not allowed to create a contentInstance resource named 'ol'");
} }
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
tc_ac.stop; tc_ac.stop;
...@@ -3735,11 +3801,19 @@ module OneM2M_Testcases { ...@@ -3735,11 +3801,19 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(fail, testcasename() & ": Accepted creation of contentInstance named 'ol'"); setverdict(fail, testcasename() & ": Accepted creation of contentInstance named 'ol'");
} }
[] tc_ac.timeout { [] tc_ac.timeout {
setverdict(inconc, testcasename() & ": No answer while creating resource type 4"); setverdict(inconc, testcasename() & ": No answer while creating resource type 4");
} }
} }
//Check to see if the resource has NOT been created
if(f_isResourceNotCreated(v_containerIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & "Resource not created");
} else {
setverdict(fail, testcasename() & "Resource created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -4404,6 +4478,7 @@ module OneM2M_Testcases { ...@@ -4404,6 +4478,7 @@ module OneM2M_Testcases {
var CseTester v_notifyHandler; var CseTester v_notifyHandler;
var integer v_ae2Index := -1; var integer v_ae2Index := -1;
const XSD.NCName c_accessControlPolicyIDs := "accessControlPolicyIDs"; const XSD.NCName c_accessControlPolicyIDs := "accessControlPolicyIDs";
var integer v_resourceIndex := -1;
// Test control // Test control
if(match(c_accessControlPolicyIDs,p_optionalAttribute.name)) { if(match(c_accessControlPolicyIDs,p_optionalAttribute.name)) {
...@@ -4442,6 +4517,7 @@ module OneM2M_Testcases { ...@@ -4442,6 +4517,7 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(f_getTemplateFromPrimitiveContent(v_request.primitiveContent)))) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK(f_getTemplateFromPrimitiveContent(v_request.primitiveContent)))) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(pass, testcasename() & ": Accepted creation for resource type " & int2str(enum2int(p_resourceType)) & " containing attribute " & p_optionalAttribute.name); setverdict(pass, testcasename() & ": Accepted creation for resource type " & int2str(enum2int(p_resourceType)) & " containing attribute " & p_optionalAttribute.name);
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_parentIndex);
} }
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK())) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK())) -> value v_response {
tc_ac.stop; tc_ac.stop;
...@@ -4455,6 +4531,13 @@ module OneM2M_Testcases { ...@@ -4455,6 +4531,13 @@ module OneM2M_Testcases {
setverdict(fail, testcasename() & ": No answer while creating resource type " & int2str(enum2int(p_resourceType))); setverdict(fail, testcasename() & ": No answer while creating resource type " & int2str(enum2int(p_resourceType)));
} }
} }
//Check to see if the resource has been created or not
if(f_isResourceCreated(v_resourceIndex)) {
setverdict(pass, testcasename() & "Resource created");
} else {
setverdict(fail, testcasename() & "Resource not created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -9340,6 +9423,13 @@ module OneM2M_Testcases { ...@@ -9340,6 +9423,13 @@ module OneM2M_Testcases {
} }
} }
//Check to see if the resource has NOT been created
if(f_isResourceNotCreated(v_aeAuxIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & "Resource <locationPolicy> not created");
} else {
setverdict(fail, testcasename() & "Resource <locationPolicy> created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -9360,6 +9450,7 @@ module OneM2M_Testcases { ...@@ -9360,6 +9450,7 @@ module OneM2M_Testcases {
var XSD.AnyURI locationServerAddress := PX_LOCATION_SERVER_ADDRESS; var XSD.AnyURI locationServerAddress := PX_LOCATION_SERVER_ADDRESS;
var RequestPrimitive v_request; var RequestPrimitive v_request;
var MsgIn v_response; var MsgIn v_response;
var integer v_resourceIndex := -1;
//Test component configuration //Test component configuration
f_cf01Up(); f_cf01Up();
...@@ -9377,6 +9468,7 @@ module OneM2M_Testcases { ...@@ -9377,6 +9468,7 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(pass, testcasename() & ": Resource locationPolicy is created successfully with response status code: " & int2str(enum2int(v_response.primitive.responsePrimitive.responseStatusCode))&"!"); setverdict(pass, testcasename() & ": Resource locationPolicy is created successfully with response status code: " & int2str(enum2int(v_response.primitive.responsePrimitive.responseStatusCode))&"!");
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_aeAuxIndex);
} }
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
tc_ac.stop; tc_ac.stop;
...@@ -9386,6 +9478,12 @@ module OneM2M_Testcases { ...@@ -9386,6 +9478,12 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!"); setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!");
} }
} }
if(f_isResourceCreated(v_resourceIndex)){
setverdict(pass, testcasename() & "Resource locationPolicy created");
} else {
setverdict(fail, testcasename() & "Resource locationPolicy not created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -9444,6 +9542,12 @@ module OneM2M_Testcases { ...@@ -9444,6 +9542,12 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!"); setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!");
} }
} }
if(f_isResourceNotCreated(v_aeAuxIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & "Resource not created");
} else {
setverdict(fail, testcasename() & "Resource created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -9492,7 +9596,13 @@ module OneM2M_Testcases { ...@@ -9492,7 +9596,13 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!"); setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!");
} }
} }
//Check to see if the resource has NOT been created
if(f_isResourceNotCreated(v_aeAuxIndex, f_getResourceName(v_request.primitiveContent))) {
setverdict(pass, testcasename() & "Resource not created");
} else {
setverdict(fail, testcasename() & "Resource created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -9518,6 +9628,7 @@ module OneM2M_Testcases { ...@@ -9518,6 +9628,7 @@ module OneM2M_Testcases {
var RequestPrimitive v_request; var RequestPrimitive v_request;
var RequestPrimitive v_locpolicy_request_preamble; var RequestPrimitive v_locpolicy_request_preamble;
var MsgIn v_response; var MsgIn v_response;
var integer v_resourceIndex := -1;
//Test component configuration //Test component configuration
f_cf01Up(); f_cf01Up();
...@@ -9538,6 +9649,7 @@ module OneM2M_Testcases { ...@@ -9538,6 +9649,7 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitive(int4000))) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitive(int4000))) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(pass, testcasename() & ": Update locationPolicy resource is rejected!!"); setverdict(pass, testcasename() & ": Update locationPolicy resource is rejected!!");
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_locPolicyResourceIndex);
} }
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
tc_ac.stop; tc_ac.stop;
...@@ -9547,7 +9659,13 @@ module OneM2M_Testcases { ...@@ -9547,7 +9659,13 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!"); setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!");
} }
} }
if(f_isResourceCreated(v_resourceIndex)){
setverdict(pass, testcasename() & "Resource created");
} else {
setverdict(fail, testcasename() & "Resource not created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -9572,7 +9690,8 @@ module OneM2M_Testcases { ...@@ -9572,7 +9690,8 @@ module OneM2M_Testcases {
var RequestPrimitive v_loc_request_preamble; var RequestPrimitive v_loc_request_preamble;
var RequestPrimitive v_container_request_preamble; var RequestPrimitive v_container_request_preamble;
var MsgIn v_response; var MsgIn v_response;
var LocationSource v_locationSource := int1;//Network-based var LocationSource v_locationSource := int1;//Network-based
var integer v_resourceIndex := -1;
//Test component configuration //Test component configuration
f_cf01Up(); f_cf01Up();
...@@ -9594,7 +9713,8 @@ module OneM2M_Testcases { ...@@ -9594,7 +9713,8 @@ module OneM2M_Testcases {
if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.container.locationID)){ if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.container.locationID)){
setverdict(fail, testcasename() & "No locationID is included in the response!"); setverdict(fail, testcasename() & "No locationID is included in the response!");
}else{ }else{
setverdict(pass, testcasename() & "Container resource associated with locationPolicy resource is successfully retrieved with locationID included in the response!"); setverdict(pass, testcasename() & "Container resource associated with locationPolicy resource is successfully retrieved with locationID included in the response!");
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_locContainerResourceIndex);
} }
} }
...@@ -9611,6 +9731,13 @@ module OneM2M_Testcases { ...@@ -9611,6 +9731,13 @@ module OneM2M_Testcases {
} }
} }
if(f_isResourceCreated(v_resourceIndex)){
setverdict(pass, testcasename() & "Resource created");
} else {
setverdict(fail, testcasename() & "Resource not created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -9631,6 +9758,7 @@ module OneM2M_Testcases { ...@@ -9631,6 +9758,7 @@ module OneM2M_Testcases {
var RequestPrimitive v_request; var RequestPrimitive v_request;
var MsgIn v_response; var MsgIn v_response;
var LocationSource v_locationSource := int2;//Device-based var LocationSource v_locationSource := int2;//Device-based
var integer v_resourceIndex := -1;
//Test component configuration //Test component configuration
f_cf01Up(); f_cf01Up();
...@@ -9649,6 +9777,7 @@ module OneM2M_Testcases { ...@@ -9649,6 +9777,7 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(pass, testcasename() & ": Resource locationPolicy is created successfully with response status code: " & int2str(enum2int(v_response.primitive.responsePrimitive.responseStatusCode))&"!"); setverdict(pass, testcasename() & ": Resource locationPolicy is created successfully with response status code: " & int2str(enum2int(v_response.primitive.responsePrimitive.responseStatusCode))&"!");
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_aeAuxIndex);
} }
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
tc_ac.stop; tc_ac.stop;
...@@ -9657,7 +9786,13 @@ module OneM2M_Testcases { ...@@ -9657,7 +9786,13 @@ module OneM2M_Testcases {
[] tc_ac.timeout { [] tc_ac.timeout {
setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!"); setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!");
} }
} }
if(f_isResourceCreated(v_resourceIndex)){
setverdict(pass, testcasename() & "Resource created");
} else {
setverdict(fail, testcasename() & "Resource not created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -9679,6 +9814,7 @@ module OneM2M_Testcases { ...@@ -9679,6 +9814,7 @@ module OneM2M_Testcases {
var LocationSource v_locationSource := int3;//Share-based var LocationSource v_locationSource := int3;//Share-based
var RequestPrimitive v_request; var RequestPrimitive v_request;
var MsgIn v_response; var MsgIn v_response;
var integer v_resourceIndex := -1;
//Test component configuration //Test component configuration
f_cf01Up(); f_cf01Up();
...@@ -9698,6 +9834,7 @@ module OneM2M_Testcases { ...@@ -9698,6 +9834,7 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(pass, testcasename() & ": Resource locationPolicy is created successfully with response status code: " & int2str(enum2int(v_response.primitive.responsePrimitive.responseStatusCode))&"!"); setverdict(pass, testcasename() & ": Resource locationPolicy is created successfully with response status code: " & int2str(enum2int(v_response.primitive.responsePrimitive.responseStatusCode))&"!");
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_aeAuxIndex);
} }
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
tc_ac.stop; tc_ac.stop;
...@@ -9706,7 +9843,13 @@ module OneM2M_Testcases { ...@@ -9706,7 +9843,13 @@ module OneM2M_Testcases {
[] tc_ac.timeout { [] tc_ac.timeout {
setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!"); setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!");
} }
} }
if(f_isResourceCreated(v_resourceIndex)) {
setverdict(pass, testcasename() & "Resource created");
} else {
setverdict(fail, testcasename() & "Resource not created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -10063,6 +10206,7 @@ module OneM2M_Testcases { ...@@ -10063,6 +10206,7 @@ module OneM2M_Testcases {
var ListOfURIs v_memberIDs; var ListOfURIs v_memberIDs;
var template RequestPrimitive v_createRequest; var template RequestPrimitive v_createRequest;
var ResponsePrimitive v_responsePrimitive; var ResponsePrimitive v_responsePrimitive;
var boolean v_resourceCreated := false;
// Test control // Test control
...@@ -10104,6 +10248,14 @@ module OneM2M_Testcases { ...@@ -10104,6 +10248,14 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": No answer while creating resource"); setverdict(inconc, testcasename() & ": No answer while creating resource");
} }
} }
//Check to see if the resource has NOT been created
if (f_isResourceNotCreated(v_aeIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & ": Resource not created");
} else {
setverdict(fail, testcasename() & ": Resource created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -10174,7 +10326,13 @@ module OneM2M_Testcases { ...@@ -10174,7 +10326,13 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": No answer while retrieving resource"); setverdict(inconc, testcasename() & ": No answer while retrieving resource");
} }
} }
//Check to see if the resource has NOT been created
if (f_isResourceNotCreated(v_aeIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & ": Resource not created");
} else {
setverdict(fail, testcasename() & ": Resource created");
}
// Postamble // Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -12382,7 +12540,14 @@ module OneM2M_Testcases { ...@@ -12382,7 +12540,14 @@ module OneM2M_Testcases {
[] tc_ac.timeout { [] tc_ac.timeout {
setverdict(inconc, testcasename() & ": No answer while creating resource"); setverdict(inconc, testcasename() & ": No answer while creating resource");
} }
} }
//Check to see if the resource has been created or not
if(f_isResourceNotCreated(v_resourceIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & "Resource not created");
} else {
setverdict(fail, testcasename() & "Resource created");
}
//Postamble //Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -12438,6 +12603,13 @@ module OneM2M_Testcases { ...@@ -12438,6 +12603,13 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": No answer while creating resource"); setverdict(inconc, testcasename() & ": No answer while creating resource");
} }
} }
//Check to see if the resource has been created or not
if(f_isResourceNotCreated(v_contentInstanceResourceIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & "Resource not created");
} else {
setverdict(fail, testcasename() & "Resource created");
}
//Postamble //Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -12501,6 +12673,13 @@ module OneM2M_Testcases { ...@@ -12501,6 +12673,13 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": No answer while creating resource"); setverdict(inconc, testcasename() & ": No answer while creating resource");
} }
} }
//Check to see if the resource has been created or not
if(f_isResourceNotCreated(v_aeIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & "Resource not created");
} else {
setverdict(fail, testcasename() & "Resource created");
}
//Postamble //Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -12558,6 +12737,13 @@ module OneM2M_Testcases { ...@@ -12558,6 +12737,13 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": No answer while creating resource"); setverdict(inconc, testcasename() & ": No answer while creating resource");
} }
} }
//Check to see if the resource has been created or not
if(f_isResourceNotCreated(v_aeIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & "Resource not created");
} else {
setverdict(fail, testcasename() & "Resource created");
}
//Postamble //Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -12580,7 +12766,7 @@ module OneM2M_Testcases { ...@@ -12580,7 +12766,7 @@ module OneM2M_Testcases {
var MsgIn v_response; var MsgIn v_response;
var integer v_aeIndex := -1; var integer v_aeIndex := -1;
var template RequestPrimitive v_createRequest := m_createSubscriptionBase; var template RequestPrimitive v_createRequest := m_createSubscriptionBase;
var template RequestPrimitive v_request; var RequestPrimitive v_request;
var CseTester v_notifyHandler; var CseTester v_notifyHandler;
var integer v_ae2Index := -1; var integer v_ae2Index := -1;
...@@ -12599,7 +12785,7 @@ module OneM2M_Testcases { ...@@ -12599,7 +12785,7 @@ module OneM2M_Testcases {
// Test Body // Test Body
v_request := f_getCreateRequestPrimitive(int23, v_createRequest, v_aeIndex);//Subscription v_request := f_getCreateRequestPrimitive(int23, v_createRequest, v_aeIndex);//Subscription
mcaPort.send(m_request(valueof(v_request))); mcaPort.send(m_request(v_request));
tc_ac.start; tc_ac.start;
alt { alt {
...@@ -12619,6 +12805,13 @@ module OneM2M_Testcases { ...@@ -12619,6 +12805,13 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": No answer while creating resource"); setverdict(inconc, testcasename() & ": No answer while creating resource");
} }
} }
//Check to see if the resource has been created or not
if(f_isResourceNotCreated(v_aeIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & "Resource not created");
} else {
setverdict(fail, testcasename() & "Resource created");
}
//Postamble //Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -12641,7 +12834,7 @@ module OneM2M_Testcases { ...@@ -12641,7 +12834,7 @@ module OneM2M_Testcases {
var MsgIn v_response; var MsgIn v_response;
var integer v_aeIndex := -1; var integer v_aeIndex := -1;
var template RequestPrimitive v_createRequest := m_createSubscriptionBase; var template RequestPrimitive v_createRequest := m_createSubscriptionBase;
var template RequestPrimitive v_request; var RequestPrimitive v_request;
var CseTester v_notifyHandler; var CseTester v_notifyHandler;
var integer v_ae2Index := -1; var integer v_ae2Index := -1;
...@@ -12660,7 +12853,7 @@ module OneM2M_Testcases { ...@@ -12660,7 +12853,7 @@ module OneM2M_Testcases {
// Test Body // Test Body
v_request := f_getCreateRequestPrimitive(int23, v_createRequest, v_aeIndex);//Subscription v_request := f_getCreateRequestPrimitive(int23, v_createRequest, v_aeIndex);//Subscription
mcaPort.send(m_request(valueof(v_request))); mcaPort.send(m_request(v_request));
tc_ac.start; tc_ac.start;
alt { alt {
...@@ -12680,6 +12873,13 @@ module OneM2M_Testcases { ...@@ -12680,6 +12873,13 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": No answer while creating resource"); setverdict(inconc, testcasename() & ": No answer while creating resource");
} }
} }
//Check to see if the resource has been created or not
if(f_isResourceNotCreated(v_aeIndex, f_getResourceName(v_request.primitiveContent))){
setverdict(pass, testcasename() & "Resource not created");
} else {
setverdict(fail, testcasename() & "Resource created");
}
//Postamble //Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -13918,6 +14118,7 @@ module OneM2M_Testcases { ...@@ -13918,6 +14118,7 @@ module OneM2M_Testcases {
var RequestPrimitive v_createRequest := valueof(m_createAcpBase); var RequestPrimitive v_createRequest := valueof(m_createAcpBase);
var AccessControlRule v_accessControlRule_1 := valueof(m_createAcr({PX_SUPER_USER}, int63)); var AccessControlRule v_accessControlRule_1 := valueof(m_createAcr({PX_SUPER_USER}, int63));
var AccessControlRule v_accessControlRule_2 := valueof(m_createAcr({"wait"}, int55)); var AccessControlRule v_accessControlRule_2 := valueof(m_createAcr({"wait"}, int55));
var integer v_resourceIndex := -1;
// Test control // Test control
// Test component configuration // Test component configuration
...@@ -13945,6 +14146,7 @@ module OneM2M_Testcases { ...@@ -13945,6 +14146,7 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(pass, testcasename() & ": Response OK for retrieving"); setverdict(pass, testcasename() & ": Response OK for retrieving");
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_acpIndex);
} }
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
tc_ac.stop; tc_ac.stop;
...@@ -13958,6 +14160,12 @@ module OneM2M_Testcases { ...@@ -13958,6 +14160,12 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": No answer while retrieving resource"); setverdict(inconc, testcasename() & ": No answer while retrieving resource");
} }
} }
if(f_isResourceCreated(v_resourceIndex)){
setverdict(pass, testcasename() & "Resource created");
} else {
setverdict(fail, testcasename() & "Resource not created");
}
//Postamble //Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -13983,6 +14191,7 @@ module OneM2M_Testcases { ...@@ -13983,6 +14191,7 @@ module OneM2M_Testcases {
var RequestPrimitive v_createRequest := valueof(m_createAcpBase); var RequestPrimitive v_createRequest := valueof(m_createAcpBase);
var AccessControlRule v_accessControlRule_1 := valueof(m_createAcr({PX_SUPER_USER}, int63)); var AccessControlRule v_accessControlRule_1 := valueof(m_createAcr({PX_SUPER_USER}, int63));
var AccessControlRule v_accessControlRule_2 := valueof(m_createAcr({"wait"}, int55)); var AccessControlRule v_accessControlRule_2 := valueof(m_createAcr({"wait"}, int55));
var integer v_resourceIndex := -1;
// Test control // Test control
// Test component configuration // Test component configuration
...@@ -14010,6 +14219,7 @@ module OneM2M_Testcases { ...@@ -14010,6 +14219,7 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(pass, testcasename() & ": Response OK for retrieving"); setverdict(pass, testcasename() & ": Response OK for retrieving");
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_acpIndex);
} }
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
tc_ac.stop; tc_ac.stop;
...@@ -14023,6 +14233,12 @@ module OneM2M_Testcases { ...@@ -14023,6 +14233,12 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": No answer while retrieving resource"); setverdict(inconc, testcasename() & ": No answer while retrieving resource");
} }
} }
if(f_isResourceCreated(v_resourceIndex)){
setverdict(pass, testcasename() & "Resource created");
} else {
setverdict(fail, testcasename() & "Resource not created");
}
//Postamble //Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
...@@ -14068,6 +14284,7 @@ module OneM2M_Testcases { ...@@ -14068,6 +14284,7 @@ module OneM2M_Testcases {
var AccessControlRule v_accessControlRule_1; var AccessControlRule v_accessControlRule_1;
var RequestPrimitive v_updateRequest; var RequestPrimitive v_updateRequest;
var SetOfAcrs v_setOfArcs; var SetOfAcrs v_setOfArcs;
var integer v_resourceIndex := -1;
// Test control // Test control
...@@ -14092,6 +14309,7 @@ module OneM2M_Testcases { ...@@ -14092,6 +14309,7 @@ module OneM2M_Testcases {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
tc_ac.stop; tc_ac.stop;
setverdict(pass, testcasename() & ": Successful operation on resource type int2 (Ae)"); setverdict(pass, testcasename() & ": Successful operation on resource type int2 (Ae)");
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_acpIndex);
} }
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
tc_ac.stop; tc_ac.stop;
...@@ -14128,6 +14346,12 @@ module OneM2M_Testcases { ...@@ -14128,6 +14346,12 @@ module OneM2M_Testcases {
} }
} }
if(f_isResourceCreated(v_resourceIndex)){
setverdict(pass, testcasename() & "Resource created");
} else {
setverdict(fail, testcasename() & "Resource not created");
}
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
//Tear down //Tear down
...@@ -14205,6 +14429,12 @@ module OneM2M_Testcases { ...@@ -14205,6 +14429,12 @@ module OneM2M_Testcases {
setverdict(inconc, testcasename() & ": No answer while executing operation on resource type int2 (Ae)"); setverdict(inconc, testcasename() & ": No answer while executing operation on resource type int2 (Ae)");
} }
} }
if(f_isResourceNotCreated(v_acpIndex, f_getResourceName(v_createRequest.primitiveContent))){
setverdict(pass, testcasename() & "Resource not created");
} else {
setverdict(fail, testcasename() & "Resource created");
}
//Postamble //Postamble
f_cse_postamble_deleteResources(); f_cse_postamble_deleteResources();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment