From c6934093f3f34025a466d1451d9de297086067a5 Mon Sep 17 00:00:00 2001 From: reinaortega <miguelangel.reinaortega@etsi.org> Date: Fri, 9 Feb 2018 11:39:02 +0100 Subject: [PATCH] Adding activation of defaults when behaviours used in PTCs Signed-off-by: reinaortega <miguelangel.reinaortega@etsi.org> --- LibOneM2M/OneM2M_Functions.ttcn | 301 ++++++++++++++++++------------- OneM2M_PermutationFunctions.ttcn | 6 +- 2 files changed, 183 insertions(+), 124 deletions(-) diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 5d40d92..2918d70 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -65,10 +65,6 @@ module OneM2M_Functions { map(self:mcaPort, system:mcaPort); map(self:mcaPortIn, system:mcaPortIn); map(self:acPort, system:acPort); - - activate(a_default()); - activate(a_cse_cf01()); - activate(a_cse_cf01_ae2()); //For mcaPortIn //Initialze the IUT @@ -115,10 +111,7 @@ module OneM2M_Functions { map(self:mccPort, system:mccPort); map(self:mccPortIn, system:mccPortIn); map(self:acPort, system:acPort); - - activate(a_default()); - activate(a_cse_cf02_cse1()); - + v_cSEBaseResource := f_cse_generateLocalResource(-, -1, int5); vc_cSEBaseIndex := f_setLocalResource(v_cSEBaseResource, int5, -1); @@ -169,9 +162,6 @@ module OneM2M_Functions { map(self:mcaPortIn, system:mcaPortIn); map(self:acPort, system:acPort); - activate(a_default()); - activate(a_cse_cf02_ae1()); - //Initialze the IUT } // end f_cf02UpAe1 @@ -526,7 +516,10 @@ module OneM2M_Functions { var RequestPrimitive v_request; var MsgIn v_response; - + + //Activate defaults when running on a PTC + f_cse_activateDefaults_ae(); + v_request := valueof(m_createAeAux(p_accessControlPolicyIDs, p_poaList)); v_request := f_getCreateRequestPrimitive(int2, v_request, -1); @@ -582,6 +575,9 @@ module OneM2M_Functions { var RequestPrimitive v_request; + //Activate defaults when running on a PTC + f_cse_activateDefaults_ae(); + if(PICS_ACP_SUPPORT){ vc_acpAuxIndex := f_cse_createAccessControlPolicyAux(p_allowedOperations := p_allowedOperations); } @@ -828,7 +824,10 @@ module OneM2M_Functions { var RequestPrimitive v_request; var integer v_resourceIndex := -1; - + + //Activate defaults when running on a PTC + f_cse_activateDefaults_ae(); + v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestPrimitive, p_parentIndex); mcaPort.send(m_request(v_request)); @@ -1168,87 +1167,7 @@ module OneM2M_Functions { f_checkAeSimuStatus(); } - /** - * @desc Handling of announcement of resources - * @param p_from Expected originator of the request primitive - * @param p_to Expected receiver of the request primitive - * @verdict - */ - //TODO To finalize this function - function f_cse_resourceAnnouncementHandler(template RequestPrimitive p_requestprimitive := ?) runs on CseSimu { - // Local variables - var MsgIn v_request; - var integer v_parentIndex := vc_localRemoteCseIndex; - var integer v_announcedResourceIndex; - var ResponsePrimitive v_responsePrimitive; - var PrimitiveContent v_announcedResource; - - tc_ac.start; - alt { - [] mccPortIn.receive(mw_request(p_requestprimitive)) -> value v_request { - tc_ac.stop; - setverdict(pass, __SCOPE__ & ":INFO: Announcement received"); - //TODO Save resource and generate required attributes - v_announcedResource:= f_cse_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, v_parentIndex,v_request.primitive.requestPrimitive.resourceType); - v_announcedResourceIndex := f_setLocalResource(v_announcedResource, v_request.primitive.requestPrimitive.resourceType, v_parentIndex); - - v_responsePrimitive := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier)); - v_responsePrimitive.from_ := PX_CSE1_ID; - v_responsePrimitive.to_ := v_request.primitive.requestPrimitive.from_; - v_responsePrimitive.primitiveContent := vc_localResourcesList[vc_localRemoteCseIndex].resource; - mccPortIn.send(m_response(v_responsePrimitive)); - } - [] tc_ac.timeout { - setverdict(fail, __SCOPE__ & ":ERROR: No announcement received"); - } - } - - f_checkCseSimuStatus(); - - } //end f_cse_resourceAnnouncementHandler - - /** - * @desc Message exchange for the announcement of resources - * @param p_resourceType ResourceType of the resource to be announced - * @param p_requestPrimitive CREATE request to be used for the announcement - * @verdict - */ - //TODO To finalize this function - function f_cse_announceResource(in ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive := m_create) runs on CseSimu return integer { - // Local variables - var RequestPrimitive v_request; - var ResponsePrimitive v_responsePrimitive; - var integer v_resourceIndex := -1; - - v_request := f_getCreateRequestPrimitive(f_getAnnouncedResourceType(p_resourceType), p_requestPrimitive, vc_remoteCseIndex); - - mccPort.send(m_request(v_request)); - tc_ac.start; - alt { - [] mccPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response { - tc_ac.stop; - setverdict(pass, __SCOPE__&":INFO: Resource type " & int2str(enum2int(p_resourceType)) & " created successfuly"); - f_checkAttributesToBeSaved(p_resourceType, v_request, vc_response.primitive.responsePrimitive); - v_resourceIndex := f_setResource(vc_response.primitive.responsePrimitive.primitiveContent, f_getAnnouncedResourceType(p_resourceType), vc_remoteCseIndex); - } - [] mccPort.receive(mw_response(mw_responsePrimitiveKO)) { - tc_ac.stop; - setverdict(inconc, __SCOPE__&":INFO: Error while creating resource type " & int2str(enum2int(p_resourceType))); - } - [] mccPort.receive { - tc_ac.stop; - setverdict(inconc, __SCOPE__&":INFO: Unexpected message received"); - } - [] tc_ac.timeout { - setverdict(inconc, __SCOPE__&":INFO: No answer while creating resource type " & int2str(enum2int(p_resourceType))); - } - } - - f_checkCseSimuStatus(); - - return v_resourceIndex; - - } //end f_cse_announceResource + /** * @desc Checking of returned important attributed (in response) in order to save properly internally @@ -1384,7 +1303,10 @@ module OneM2M_Functions { // Local variables var ResponsePrimitive v_responsePrimitive; var template Notification v_notificationRequest := mw_contentNotificationVerification; - + + //Activate defaults when running on a PTC + f_cse_activateDefaults_ae(); + //Preparation of expected Notification verification //TODO To add checks for creator and subscription reference //v_notificationRequest.creator := p_creator; TODO To check what address format is to be expected @@ -1436,6 +1358,9 @@ module OneM2M_Functions { // Local variables var ResponsePrimitive v_responsePrimitive; + //Activate defaults when running on a PTC + f_cse_activateDefaults_ae(); + tc_ac.start; alt { [] mcaPortIn.receive(mw_request(mw_notifyNotification(mw_contentNotification(?)))) -> value vc_request { @@ -1471,7 +1396,10 @@ module OneM2M_Functions { // Local variables var ResponsePrimitive v_responsePrimitive; var integer v_notificationsReceived := 0; - + + //Activate defaults when running on a PTC + f_cse_activateDefaults_ae(); + tc_ac.start; alt { [] mcaPortIn.receive(mw_request(mw_notifyAggregatedNotification)) -> value vc_request { @@ -1528,6 +1456,10 @@ module OneM2M_Functions { */ function f_cse_notifyProcedure_subscriptionDeletionHandler( template Notification p_notification) runs on AeSimu { var ResponsePrimitive v_responsePrimitive; + + //Activate defaults when running on a PTC + f_cse_activateDefaults_ae(); + tc_ac.start; alt { [] mcaPortIn.receive(mw_request(mw_notifyNotification(p_notification))) -> value vc_request { @@ -1556,7 +1488,10 @@ module OneM2M_Functions { */ function f_cse_notifyProcedure_noNotificationHandler() runs on AeSimu { // Local variables - + + //Activate defaults when running on a PTC + f_cse_activateDefaults_ae(); + tc_ac.start(10.0); alt { [] mcaPortIn.receive(mw_request(mw_notifyNotification(mw_contentNotification(?)))) -> value vc_request { @@ -1626,16 +1561,108 @@ module OneM2M_Functions { } //end f_check_notificationContent + }// end of group NotificationFunctions + + group AnnouncementFunctions { + + /** + * @desc Handling of announcement of resources + * @param p_from Expected originator of the request primitive + * @param p_to Expected receiver of the request primitive + * @verdict + */ + //TODO To finalize this function + function f_cse_announcementProcedure_createHandler(template RequestPrimitive p_requestprimitive := ?) runs on CseSimu { + // Local variables + var MsgIn v_request; + var integer v_parentIndex := vc_localRemoteCseIndex; + var integer v_announcedResourceIndex; + var ResponsePrimitive v_responsePrimitive; + var PrimitiveContent v_announcedResource; + + //Activate defaults when running on a PTC + f_cse_activateDefaults_cse1(); + + tc_ac.start; + alt { + [] mccPortIn.receive(mw_request(p_requestprimitive)) -> value v_request { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ":INFO: Announcement received"); + //TODO Save resource and generate required attributes + v_announcedResource:= f_cse_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, v_parentIndex,v_request.primitive.requestPrimitive.resourceType); + v_announcedResourceIndex := f_setLocalResource(v_announcedResource, v_request.primitive.requestPrimitive.resourceType, v_parentIndex); + + v_responsePrimitive := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier)); + v_responsePrimitive.from_ := PX_CSE1_ID; + v_responsePrimitive.to_ := v_request.primitive.requestPrimitive.from_; + v_responsePrimitive.primitiveContent := vc_localResourcesList[v_announcedResourceIndex].resource; + mccPortIn.send(m_response(v_responsePrimitive)); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ":ERROR: No announcement received"); + } + } + + f_checkCseSimuStatus(); + + } //end f_cse_resourceAnnouncementHandler + + /** + * @desc Message exchange for the announcement of resources + * @param p_resourceType ResourceType of the resource to be announced + * @param p_requestPrimitive CREATE request to be used for the announcement + * @verdict + */ + //TODO To finalize this function + function f_cse_announcementProcedure_announceResource(in ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive := m_create) runs on CseSimu return integer { + // Local variables + var RequestPrimitive v_request; + var ResponsePrimitive v_responsePrimitive; + var integer v_resourceIndex := -1; + + v_request := f_getCreateRequestPrimitive(f_getAnnouncedResourceType(p_resourceType), p_requestPrimitive, vc_remoteCseIndex); + + mccPort.send(m_request(v_request)); + tc_ac.start; + alt { + [] mccPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response { + tc_ac.stop; + setverdict(pass, __SCOPE__&":INFO: Resource type " & int2str(enum2int(p_resourceType)) & " created successfuly"); + f_checkAttributesToBeSaved(p_resourceType, v_request, vc_response.primitive.responsePrimitive); + v_resourceIndex := f_setResource(vc_response.primitive.responsePrimitive.primitiveContent, f_getAnnouncedResourceType(p_resourceType), vc_remoteCseIndex); + } + [] mccPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(inconc, __SCOPE__&":INFO: Error while creating resource type " & int2str(enum2int(p_resourceType))); + } + [] mccPort.receive { + tc_ac.stop; + setverdict(inconc, __SCOPE__&":INFO: Unexpected message received"); + } + [] tc_ac.timeout { + setverdict(inconc, __SCOPE__&":INFO: No answer while creating resource type " & int2str(enum2int(p_resourceType))); + } + } + + f_checkCseSimuStatus(); + + return v_resourceIndex; + + } //end f_cse_announceResource + /** * @desc Handling message exchange for the AE Annc update * @verdict */ //TODO TO BE FINALIZED - function f_cse_notifyProcedure_updateHandler() runs on CseSimu { + function f_cse_announcementProcedure_updateHandler() runs on CseSimu { // Local variables var ResponsePrimitive v_responsePrimitive; var template Notification v_notificationRequest := mw_contentNotification_any; + //Activate defaults when running on a PTC + f_cse_activateDefaults_cse1(); + //Preparation of Notification response to be sent v_responsePrimitive := valueof(m_responseNotification(int2004, omit)); @@ -1666,7 +1693,7 @@ module OneM2M_Functions { } //end f_cse_notifyProcedure_updateHandler - }// end of group NotificationFunctions + }//end of group AnnouncementFunctions /** * @desc Check that a resource is present in the IUT (resourceId is known) @@ -1745,6 +1772,9 @@ module OneM2M_Functions { var MsgIn v_response; var RequestPrimitive v_request; var PrimitiveContent v_remoteCSEResource; + + //Activate defaults when running on a PTC + f_cse_activateDefaults_cse1(); v_request := f_getCreateRequestPrimitive(int16, p_requestPrimitive, -1); @@ -1797,7 +1827,8 @@ module OneM2M_Functions { var boolean v_remoteCSERegistered:=false; var integer v_ResourceIndex := -1; - + //Activate defaults when running on a PTC + f_cse_activateDefaults_cse1(); //send triggering primitive to SUT f_sendUtPrimitive(v_utRequest,v_action); @@ -1823,15 +1854,12 @@ module OneM2M_Functions { } [] tc_ac.timeout { if(not (v_remoteCSERegistered)){ - setverdict(inconc, __SCOPE__&":INFO: No request received for creating resource type remoteCSE"); - } + setverdict(inconc, __SCOPE__&":INFO: No request received for creating resource type remoteCSE"); + } } } f_checkCseSimuStatus(); - - //In order for the IUT to perform some actions - f_sleep(10.0); return v_resourceIndex; @@ -1842,8 +1870,11 @@ module OneM2M_Functions { * @param p_requestPrimitive Expected CREATE request primitive */ function f_cse_receiveCreateRequest(in template RequestPrimitive p_requestPrimitive := ?) runs on CseSimu { - var ResponsePrimitive v_responsePrimitive; + + //Activate defaults when running on a PTC + f_cse_activateDefaults_cse1(); + tc_ac.start; alt { [] mccPortIn.receive(mw_request(p_requestPrimitive)) -> value vc_request { @@ -2014,21 +2045,13 @@ module OneM2M_Functions { * @desc Cse altstep for config 01 */ altstep a_cse_cf01() runs on AeSimu { - + var MsgIn v_request; + var ResponsePrimitive v_responsePrimitive; + [] mcaPort.receive { log(__SCOPE__&": WARNING: Unexpected message received"); repeat; } - } - - /** - * @desc Cse altstep for config 01 for AE2 - */ - altstep a_cse_cf01_ae2() runs on AeSimu { - - var MsgIn v_request; - var ResponsePrimitive v_responsePrimitive; - [] mcaPortIn.receive(mw_request(mw_notifyNotification(mw_contentNotification(?)))) -> value v_request { //Send response v_responsePrimitive := valueof(m_responseNotification(int2001, omit)); @@ -2140,7 +2163,33 @@ module OneM2M_Functions { } } - }//end group altstepFunctions + }//end group altstepFunctions + + function f_cse_activateDefaults_cse1() runs on CseSimu { + if(not(self == mtc)) { + activate(a_default()); + if(vc_config == e_cf02) { + activate(a_cse_cf02_cse1()); + log(__SCOPE__&": INFO: Default cf02_cse1 activated"); + } else if(vc_config == e_cf04) { + activate(a_cse_cf04()); + log(__SCOPE__&": INFO: Default cf04 activated"); + } + } + } + + function f_cse_activateDefaults_ae() runs on AeSimu { + if(not(self == mtc)) { + activate(a_default()); + if(vc_config == e_cf01) { + activate(a_cse_cf01()); + log(__SCOPE__&": INFO: Default cf01 and cf01_ae2 activated"); + } else if(vc_config == e_cf02CseSimuMaster) { + activate(a_cse_cf02_ae1()); + log(__SCOPE__&": INFO: Default cf02_ae1 activated"); + } + } + } }//end cseFunctions @@ -2347,16 +2396,16 @@ module OneM2M_Functions { var integer v_resourceIndex, v_parentIndex; var RequestPrimitive v_rp; - [] mcaPort.receive(mw_request(mw_create)) -> value v_request { + [] mcaPortIn.receive(mw_request(mw_create)) -> value v_request { v_rp := v_request.primitive.requestPrimitive; v_parentIndex := f_getResourceIndex(v_rp.to_); v_modifiedResource := f_ae_generateLocalResource(v_rp.primitiveContent, v_parentIndex, v_rp.resourceType); v_resourceIndex := f_setLocalResource(v_modifiedResource, v_rp.resourceType, v_parentIndex); if(v_resourceIndex != -1) { - mcaPort.send(m_response(m_responsePrimitive_content(int2001, v_rp.requestIdentifier, v_modifiedResource))); + mcaPortIn.send(m_response(m_responsePrimitive_content(int2001, v_rp.requestIdentifier, v_modifiedResource))); } else { - mcaPort.send(m_response(m_responsePrimitive(int5000, v_request.primitive.requestPrimitive.requestIdentifier))); + mcaPortIn.send(m_response(m_responsePrimitive(int5000, v_request.primitive.requestPrimitive.requestIdentifier))); } repeat; } @@ -2366,6 +2415,16 @@ module OneM2M_Functions { }//end group altstepFunctions + function f_ae_activateDefaults() runs on CseSimu { + if(not(self == mtc)) { + activate(a_default()); + if(vc_config == e_cf03) { + activate(a_ae_cf03()); + log(__SCOPE__&": INFO: Default cf03 activated"); + } + } + } + }//end of aeFunctions diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index 34af5d1..52d5201 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -2672,7 +2672,7 @@ module OneM2M_PermutationFunctions { } vc_cse1.done; - vc_cse1.start(f_cse_resourceAnnouncementHandler()); + vc_cse1.start(f_cse_announcementProcedure_createHandler()); v_resourceIndex := f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, omit)); vc_cse1.done; @@ -6394,7 +6394,7 @@ module OneM2M_PermutationFunctions { vc_cse1.done; //Preamble - vc_cse1.start(f_cse_resourceAnnouncementHandler(mw_createAEAnnc(-, -, -))); + vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -))); v_aeIndex := f_cse_createResource(int2,v_create); vc_cse1.done; @@ -6407,7 +6407,7 @@ module OneM2M_PermutationFunctions { v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_parentIndex); v_responsePrimitive.responseStatusCode := int2001; } - vc_cse1.start(f_cse_resourceAnnouncementHandler(p_createRequestAnnc)); + vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc)); mcaPort.send(m_request(v_request)); tc_ac.start; -- GitLab