Skip to content
Snippets Groups Projects

Stf531 check tpreq ttcn

Merged Miguel Angel Reina Ortega requested to merge STF531-CHECK-TPREQ-TTCN into master
6 files
+ 4212
3913
Compare changes
  • Side-by-side
  • Inline
Files
6
@@ -7,7 +7,7 @@
*
* @author oneM2M
* @version $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Functions.ttcn $
* $Id: OneM2M_Functions.ttcn 319 2017-07-14 15:20:23Z reinaortega $
* $Id: OneM2M_Functions.ttcn 330 2017-07-26 10:02:53Z reinaortega $
* @desc Module containing functions for oneM2M
*
*/
@@ -212,8 +212,7 @@ module OneM2M_Functions {
f_checkAttributesToBeSaved(int2, v_request, v_response.primitive.responsePrimitive);
v_aeAuxIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent);
vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_aeAuxIndex};
v_aeAuxIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int2);
if(ispresent(vc_aeAux.aE_ID)){
f_sendAcPrimitive("AE-ID_changed", oct2char(unichar2oct(vc_aeAux.aE_ID)));
@@ -281,8 +280,7 @@ module OneM2M_Functions {
if(ischosen(v_response.primitive.responsePrimitive.primitiveContent.aE)) {
vc_aeAux := v_response.primitive.responsePrimitive.primitiveContent.aE;
v_aeAuxIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent);
vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_aeAuxIndex};
v_aeAuxIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int2);
if(ispresent(vc_aeAux.aE_ID)){
f_sendAcPrimitive("AE-ID_changed", oct2char(unichar2oct(vc_aeAux.aE_ID)));
@@ -357,11 +355,13 @@ module OneM2M_Functions {
//For deletion of AEs, priority is to use AE-ID in From parameter
//For other resources PX_SUPER_USER should be able to do DELETE operation
if(PX_FROM_IS_AE_ID){
if(ischosen(vc_resourcesList[vc_resourcesIndexToBeDeleted[i]].resource.aE)) {
v_request.from_ := vc_resourcesList[vc_resourcesIndexToBeDeleted[i]].resource.aE.aE_ID;
}
}
//TODO Replace below code by f_getOriginator
v_request.from_ := f_getOriginator(vc_resourcesIndexToBeDeleted[i]);
// if(PX_USE_RESOURCE_ID_AS_ORIGINATOR){
// if(ischosen(vc_resourcesList[vc_resourcesIndexToBeDeleted[i]].resource.aE)) {
// v_request.from_ := vc_resourcesList[vc_resourcesIndexToBeDeleted[i]].resource.aE.aE_ID;
// }
// }
mcaPort.send(m_request(v_request));
@@ -401,7 +401,7 @@ module OneM2M_Functions {
tc_ac.stop;
}
[] tc_ac.timeout {
setverdict(inconc, testcasename() & ": Notify verification not received");
setverdict(inconc, __SCOPE__ & "INFO: Notify verification not received");
}
}
} //end f_is_component_done
@@ -434,10 +434,7 @@ module OneM2M_Functions {
tc_ac.stop;
setverdict(pass, __SCOPE__&":INFO: Resource type " & int2str(enum2int(p_resourceType)) & " created successfuly");
f_checkAttributesToBeSaved(p_resourceType, v_request, v_response.primitive.responsePrimitive);
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, p_parentIndex);
if(match(int2, p_resourceType) or match(-1, p_parentIndex)) {//If created resource is an AE or created under CSEBase, it needs to be added to the resourceToBeDeleted list
vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_resourceIndex};
}
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, p_resourceType, p_parentIndex);
}
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
tc_ac.stop;
@@ -481,9 +478,8 @@ module OneM2M_Functions {
tc_ac.stop;
setverdict(pass, __SCOPE__&":INFO: Resource type " & int2str(1) & " created successfuly");
f_checkAttributesToBeSaved(int1, v_request, v_response.primitive.responsePrimitive);
v_acpAuxIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent);
v_acpAuxIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int1);
vc_acpAuxIndex := v_acpAuxIndex;
vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_acpAuxIndex};
}
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
tc_ac.stop;
@@ -546,11 +542,11 @@ module OneM2M_Functions {
}
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
tc_ac.stop;
setverdict(fail, __SCOPE__&":ERROR: Error while updating resource");
setverdict(inconc, __SCOPE__&":INFO: Error while updating resource");
}
[] mcaPort.receive{
tc_ac.stop;
setverdict(fail, __SCOPE__&":ERROR: Unexpected message received");
setverdict(inconc, __SCOPE__&":INFO: Unexpected message received");
}
[] tc_ac.timeout {
setverdict(inconc, __SCOPE__&":INFO: No answer while updating resource");
@@ -578,11 +574,11 @@ module OneM2M_Functions {
}
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
tc_ac.stop;
setverdict(fail, __SCOPE__&":ERROR: Error while retrieving resource");
setverdict(inconc, __SCOPE__&":INFO: Error while retrieving resource");
}
[] mcaPort.receive{
tc_ac.stop;
setverdict(fail, __SCOPE__&":ERROR: Unexpected message received");
setverdict(inconc, __SCOPE__&":INFO: Unexpected message received");
}
[] tc_ac.timeout {
setverdict(inconc, __SCOPE__&":INFO: No answer while retrieving resource");
@@ -609,14 +605,14 @@ module OneM2M_Functions {
alt {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) {
tc_ac.stop;
setverdict(pass, __SCOPE__&" INFO: Resource" & p_requestPrimitive.to_ & " deleted");
setverdict(pass, __SCOPE__&"INFO: Resource" & p_requestPrimitive.to_ & " deleted");
}
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
tc_ac.stop;
setverdict(inconc, __SCOPE__&" INFO: Error while deleting resource " & p_requestPrimitive.to_);
setverdict(inconc, __SCOPE__&"INFO: Error while deleting resource " & p_requestPrimitive.to_);
}
[] tc_ac.timeout {
setverdict(inconc, __SCOPE__&" INFO: No answer while deleting resource " & p_requestPrimitive.to_);
setverdict(inconc, __SCOPE__&"INFO: No answer while deleting resource " & p_requestPrimitive.to_);
}
}
@@ -712,7 +708,7 @@ module OneM2M_Functions {
}
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
tc_ac.stop;
setverdict(fail, __SCOPE__&":ERROR: Error while updating " & v_request.to_ & " resource");
setverdict(inconc, __SCOPE__&":INFO: Error while updating " & v_request.to_ & " resource");
}
[] tc_ac.timeout {
setverdict(inconc, __SCOPE__&":INFO: No answer while updating " & v_request.to_ & " resource" );
@@ -741,16 +737,16 @@ module OneM2M_Functions {
alt {
[] mcaPort.receive(mw_request(mw_create(p_from, p_to))) -> value v_request {
tc_ac.stop;
setverdict(pass, testcasename() & ": Announcement received");
setverdict(pass, __SCOPE__ & ":INFO: Announcement received");
v_responsePrimitive := f_getCreateResponsePrimitive(v_request.primitive.requestPrimitive.resourceType, v_request.primitive.requestPrimitive);
mcaPort.send(m_response(v_responsePrimitive));
}
[] mcaPort.receive{
tc_ac.stop;
setverdict(fail, testcasename() & ": Error, unexpected message received");
setverdict(fail, __SCOPE__ & ":ERROR: Unexpected message received");
}
[] tc_ac.timeout {
setverdict(inconc, testcasename() & ": No announcement received");
setverdict(fail, __SCOPE__ & ":ERROR: No announcement received");
}
}
@@ -781,30 +777,30 @@ module OneM2M_Functions {
alt {
[] mcaPort.receive(mw_request(mw_notify(v_notificationRequest))) -> value v_request {
tc_ac.stop;
setverdict(pass, testcasename() & ": Notification received");
setverdict(pass, __SCOPE__ & ":INFO: Notification received");
v_responsePrimitive.requestIdentifier := v_request.primitive.requestPrimitive.requestIdentifier;
// if(f_isHierarchical(v_request.primitive.requestPrimitive.primitiveContent.notification.creator)) {
// setverdict(fail, testcasename() & ": Creator cannot contain a hierarchical address");
// setverdict(fail, __SCOPE__ & ": Creator cannot contain a hierarchical address");
// v_responsePrimitive.responseStatusCode := int4000;
// }
// if(f_compareURIs(p_creatorIndex, v_request.primitive.requestPrimitive.primitiveContent.notification.creator)) {
// setverdict(pass, testcasename() & ": Creator set to originator of the subscription creation primitive");
// setverdict(pass, __SCOPE__ & ": Creator set to originator of the subscription creation primitive");
// } else {
// setverdict(fail, testcasename() & ": Creator not set to originator of the subscription creation primitive");
// setverdict(fail, __SCOPE__ & ": Creator not set to originator of the subscription creation primitive");
// v_responsePrimitive.responseStatusCode := int4000;
// }
mcaPort.send(m_httpResponse(v_responsePrimitive));
}
[] mcaPort.receive(mw_request(mw_notify(mw_contentNotification(?)))) -> value v_request {
tc_ac.stop;
setverdict(fail, testcasename() & ": Notification received but verificationRequest isn't set to TRUE");
setverdict(fail, __SCOPE__ & ":ERROR: Notification received but verificationRequest isn't set to TRUE");
}
[] mcaPort.receive{
tc_ac.stop;
setverdict(fail, testcasename() & ": Error, unexpected message received");
setverdict(fail, __SCOPE__ & ":ERROR: unexpected message received");
}
[] tc_ac.timeout {
setverdict(inconc, testcasename() & ": No notification received");
setverdict(fail, __SCOPE__ & ":ERROR: No notification received");
}
}
@@ -821,63 +817,63 @@ module OneM2M_Functions {
if(isvalue(p_response.primitiveContent.accessControlPolicy) and
not(ispresent(p_response.primitiveContent.accessControlPolicy.resourceName))) {
p_response.primitiveContent.accessControlPolicy.resourceName := p_request.primitiveContent.accessControlPolicy.resourceName;
log(__SCOPE__ & ": Info: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.accessControlPolicy.resourceName)
log(__SCOPE__ & ":INFO: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.accessControlPolicy.resourceName)
}
}
case (int2) {
if(isvalue(p_response.primitiveContent.aE) and
not(ispresent(p_response.primitiveContent.aE.resourceName))) {
p_response.primitiveContent.aE.resourceName := p_request.primitiveContent.aE.resourceName;
log(__SCOPE__ & ": Info: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.aE.resourceName)
log(__SCOPE__ & ":INFO: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.aE.resourceName)
}
}
case (int3) {
if(isvalue(p_response.primitiveContent.container) and
not(ispresent(p_response.primitiveContent.container.resourceName))) {
p_response.primitiveContent.container.resourceName := p_request.primitiveContent.container.resourceName;
log(__SCOPE__ & ": Info: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.container.resourceName)
log(__SCOPE__ & ":INFO: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.container.resourceName)
}
}
case (int4) {
if(isvalue(p_response.primitiveContent.contentInstance) and
not(ispresent(p_response.primitiveContent.contentInstance.resourceName))) {
p_response.primitiveContent.contentInstance.resourceName := p_request.primitiveContent.contentInstance.resourceName;
log(__SCOPE__ & ": Info: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.contentInstance.resourceName)
log(__SCOPE__ & ":INFO: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.contentInstance.resourceName)
}
}
case (int15) {
if (isvalue(p_response.primitiveContent.pollingChannel) and
not(ispresent(p_response.primitiveContent.pollingChannel.resourceName))) {
p_response.primitiveContent.pollingChannel.resourceName := p_request.primitiveContent.pollingChannel.resourceName;
log(__SCOPE__ & ": Info: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.pollingChannel.resourceName)
log(__SCOPE__ & ":INFO: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.pollingChannel.resourceName)
}
}
case (int16) {
if (isvalue(p_response.primitiveContent.remoteCSE) and
not(ispresent(p_response.primitiveContent.remoteCSE.resourceName))) {
p_response.primitiveContent.remoteCSE.resourceName := p_request.primitiveContent.remoteCSE.resourceName;
log(__SCOPE__ & ": Info: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.remoteCSE.resourceName)
log(__SCOPE__ & ":INFO: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.remoteCSE.resourceName)
}
}
case (int18) {
if (isvalue(p_response.primitiveContent.schedule) and
not(ispresent(p_response.primitiveContent.schedule.resourceName))) {
p_response.primitiveContent.schedule.resourceName := p_request.primitiveContent.schedule.resourceName;
log(__SCOPE__ & ": Info: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.schedule.resourceName)
log(__SCOPE__ & ":INFO: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.schedule.resourceName)
}
}
case (int23) {
if (isvalue(p_response.primitiveContent.subscription) and
not(ispresent(p_response.primitiveContent.subscription.resourceName))) {
p_response.primitiveContent.subscription.resourceName := p_request.primitiveContent.subscription.resourceName;
log(__SCOPE__ & ": Info: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.subscription.resourceName)
log(__SCOPE__ & ":INFO: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.subscription.resourceName)
}
}
case (int9) {
if (isvalue(p_response.primitiveContent.group_) and
not(ispresent(p_response.primitiveContent.group_.resourceName))) {
p_response.primitiveContent.group_.resourceName := p_request.primitiveContent.group_.resourceName;
log(__SCOPE__ & ": Info: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.group_.resourceName)
log(__SCOPE__ & ":INFO: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.group_.resourceName)
}
}
case else {
@@ -980,19 +976,19 @@ module OneM2M_Functions {
[] mcaPort.receive(mw_request(mw_notify(mw_contentNotification(?)))) -> value v_request {
tc_ac.stop;
if(f_check_notificationContent(v_request.primitive.requestPrimitive, p_primitiveContent)){
setverdict(pass, testcasename() & ": Notification received");
setverdict(pass, __SCOPE__ & ":INFO: Notification received");
mcaPort.send(m_response(valueof(m_responseNotification(int2001))));
}
else{
setverdict(fail, testcasename() & ": Notification received but the content doesn't match");
setverdict(fail, __SCOPE__ & ":ERROR: Notification received but the content doesn't match");
}
}
[] mcaPort.receive{
tc_ac.stop;
setverdict(fail, testcasename() & ": Error, unexpected message received");
setverdict(fail, __SCOPE__ & ":ERROR: unexpected message received");
}
[] tc_ac.timeout {
setverdict(inconc, testcasename() & ": No notification received");
setverdict(fail, __SCOPE__ & ":ERROR: No notification received");
}
}
@@ -1014,21 +1010,21 @@ module OneM2M_Functions {
tc_ac.stop;
mcaPort.send(m_response(valueof(m_responseNotification(int2001))));
if(not(match(v_response.primitive.requestPrimitive.primitiveContent.notification.subscriptionDeletion, true))) {
setverdict(fail, testcasename() & ": subscriptionDeletion attribute have to be set to TRUE");
setverdict(fail, __SCOPE__ & ":ERROR: subscriptionDeletion attribute have to be set to TRUE");
}
if(f_check_notificationContent(v_response.primitive.requestPrimitive, p_primitiveContent)){
setverdict(pass, testcasename() & ": Notification received");
setverdict(pass, __SCOPE__ & ":INFO: Notification received");
}
else{
setverdict(fail, testcasename() & ": Notification received but the content doesn't match");
setverdict(fail, __SCOPE__ & ":ERROR: Notification received but the content doesn't match");
}
}
[] mcaPort.receive{
tc_ac.stop;
setverdict(fail, testcasename() & ": Error, unexpected message received");
setverdict(fail, __SCOPE__ & ":ERROR: unexpected message received");
}
[] tc_ac.timeout {
setverdict(inconc, testcasename() & ": No notification received");
setverdict(fail, __SCOPE__ & ":ERROR: No notification received");
}
}
@@ -1149,8 +1145,7 @@ module OneM2M_Functions {
tc_ac.stop;
setverdict(pass, __SCOPE__&":INFO: Resource type RemoteCSE created successfuly");
f_checkAttributesToBeSaved(int16, v_request, v_response.primitive.responsePrimitive);
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, -1);
vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_resourceIndex};
v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int16, -1);
}
[] mccPort.receive(mw_response(mw_responsePrimitiveKO)) {
tc_ac.stop;
@@ -1303,7 +1298,7 @@ module OneM2M_Functions {
p_resource.aE := v_ae;
p_modifiedResource.aE := v_aeModified;
return f_setResource(p_resource, p_parentIndex);
return f_setResource(p_resource, p_resourceType, p_parentIndex);
}
@@ -1327,13 +1322,13 @@ module OneM2M_Functions {
var MsgIn v_request;
[] mcaPort.receive(mw_request(?)) -> value v_request {
log("a_default: WARNING: Unexpected request received");
log(__SCOPE__ & ":WARNING: Unexpected request received");
mcaPort.send(m_response(m_responsePrimitive(int5000, v_request.primitive.requestPrimitive.requestIdentifier)));
repeat;
}
[] mcaPort.receive {
log("a_ae_default: WARNING: Unexpected message received");
log(__SCOPE__ & ":WARNING: Unexpected message received");
repeat;
}
}
@@ -1396,7 +1391,7 @@ module OneM2M_Functions {
if (p_resourceType == int9) {//group
if(match(valueof(p_request.primitiveContent.group_.memberIDs), v_defaultListOfURIs )){
p_request.primitiveContent.group_.memberIDs := {f_getResourceAddress(p_parentIndex)};
p_request.primitiveContent.group_.memberIDs := {f_getResourceId(vc_resourcesList[p_parentIndex].resource)};
}
}
@@ -1565,7 +1560,7 @@ module OneM2M_Functions {
if(ischosen(p_contentResource.serviceSubscribedAppRule)) {
return f_resourceIdCleaner(p_contentResource.serviceSubscribedAppRule.resourceID);
}
log(""&__SCOPE__&":WARNING: Primitive Content Kind not implemented");
log(__SCOPE__&":WARNING: Primitive Content Kind not implemented");
return "resourceIDNotFound";
@@ -1624,11 +1619,16 @@ module OneM2M_Functions {
return PX_SUPER_USER;
}
if(PX_FROM_IS_AE_ID) {
if(ischosen(vc_resourcesList[p_targetResourceIndex].resource.aE)) {
return vc_resourcesList[p_targetResourceIndex].resource.aE.aE_ID;
if(PX_USE_RESOURCE_ID_AS_ORIGINATOR) {
if(vc_resourcesList[p_targetResourceIndex].parentIndex == -1) {
return f_getResourceId(vc_resourcesList[p_targetResourceIndex].resource);
} else {
return f_getOriginator(vc_resourcesList[p_targetResourceIndex].parentIndex);
// if(ischosen(vc_resourcesList[p_targetResourceIndex].resource.aE)) {
// return vc_resourcesList[p_targetResourceIndex].resource.aE.aE_ID;
// } else {
// return f_getOriginator(vc_resourcesList[p_targetResourceIndex].parentIndex);
// }
}
} else {
return PX_SUPER_USER;
@@ -1775,14 +1775,20 @@ module OneM2M_Functions {
* @return Internal resource index of the saved resource
* @verdict
*/
function f_setResource(PrimitiveContent p_resource, integer p_parentIndex := -1) runs on Tester return integer {
function f_setResource(PrimitiveContent p_resource, ResourceType p_resourceType, integer p_parentIndex := -1) runs on Tester return integer {
var integer v_newIndex := -1;
if(isbound(vc_resourcesList)) {
vc_resourcesList[lengthof(vc_resourcesList)] := {p_parentIndex, p_resource};
vc_resourcesList[lengthof(vc_resourcesList)] := {p_parentIndex, p_resourceType, p_resource};
} else {
vc_resourcesList[0] := {p_parentIndex, p_resource};
vc_resourcesList[0] := {p_parentIndex, p_resourceType, p_resource};
}
return lengthof(vc_resourcesList)-1;
v_newIndex := lengthof(vc_resourcesList)-1;
if(match(int2, p_resourceType) or match(-1, p_parentIndex)) {//If created resource is an AE or created under CSEBase, it needs to be added to the resourceToBeDeleted list
vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_newIndex};
}
return v_newIndex;
}
@@ -1827,7 +1833,7 @@ module OneM2M_Functions {
return vc_resourcesList[p_targetResourceIndex].resource.aE.aE_ID;
}
log("f_getAeId: WARNING: p_targetResourceIndex does not refer to AE resource");
log(__SCOPE__ & ":WARNING: p_targetResourceIndex does not refer to AE resource");
return "";
} // end f_getAeId
@@ -1892,10 +1898,10 @@ module OneM2M_Functions {
altstep a_default() runs on Tester {
[] tc_wait.timeout {
setverdict(inconc,"a_default: ERROR: Timeout while awaiting reaction of the IUT prior to Upper Tester action");
setverdict(inconc, __SCOPE__&":INFO: Timeout while awaiting reaction of the IUT prior to Upper Tester action");
}
[] tc_ac.timeout {
setverdict(inconc,"a_default: ERROR: Timeout while awaiting the reception of a message");
setverdict(inconc, __SCOPE__&":INFO: Timeout while awaiting the reception of a message");
}
}
@@ -2209,7 +2215,7 @@ module OneM2M_Functions {
v_response := p_responsePrimitiveContent;
v_primitiveContent := f_getTemplateFromPrimitiveContent(p_requestPrimitiveContent);
if(not(match(v_response, v_primitiveContent))){
setverdict(inconc, "Preamble: Error resource incomplete, some attribute missing ");
setverdict(inconc, __SCOPE__&":INFO: Resource incomplete, some attribute missing ");
}
}
Loading