From d6e0e7dc691dc72cea1ced903d3557fac9fec316 Mon Sep 17 00:00:00 2001 From: acverdugo <acverdugo@at4wireless.com> Date: Tue, 6 Mar 2018 16:49:28 +0100 Subject: [PATCH] New function: f_cse_announcementProcedure_deleteHandler() Created a new parameter for setting the role (cseType) of the simulated CSE In annunciation test cases, now the tester takes the role of an MN during CSE registration Some fixes in f_CSE_ANNC_CRE_001 Some fixes in f_CSE_ANNC_CRE_004_CseSimu Some fixes in f_CSE_ANNC_CRE_006_CseSimu New Test Cases: TC_CSE_ANNC_DEL_001_ACP, TC_CSE_ANNC_DEL_001_CNT, TC_CSE_ANNC_DEL_001_GRP, TC_CSE_ANNC_DEL_002_ACP, TC_CSE_ANNC_DEL_002_CNT, TC_CSE_ANNC_DEL_002_GRP Signed-off-by: acverdugo <acverdugo@at4wireless.com> --- LibOneM2M/OneM2M_Functions.ttcn | 79 +++++++++++---- LibOneM2M/OneM2M_TestSystem.ttcn | 7 +- OneM2M_PermutationFunctions.ttcn | 149 +++++++++++++++++++++++++--- OneM2M_Testcases_CSE_Release_2.ttcn | 85 +++++++++++++++- 4 files changed, 288 insertions(+), 32 deletions(-) diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index cd614ec..9193114 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -74,7 +74,7 @@ module OneM2M_Functions { /** * @desc Ports mapping and default behaviour activation for Config 02 */ - function f_cf02Up() runs on AeSimu { + function f_cf02Up(in CseTypeID p_cseType := int2) runs on AeSimu { // Variables vc_config := e_cf02; @@ -101,12 +101,13 @@ module OneM2M_Functions { /** @desc Ports mapping and default behaviour activation for Config 2 on the CSE1 */ - function f_cf02UpCse1() runs on CseSimu { + function f_cf02UpCse1(in CseTypeID p_cseType := int2) runs on CseSimu { // Variables var PrimitiveContent v_cSEBaseResource; vc_config := e_cf02; vc_testSystemRole := e_cse; + vc_cseType := p_cseType; // Map map(self:mccPort, system:mccPort); @@ -123,12 +124,13 @@ module OneM2M_Functions { /** * @desc Ports mapping and default behaviour activation for Config 02 */ - function f_cf02UpCseSimuMaster() runs on CseSimu { + function f_cf02UpCseSimuMaster(in CseTypeID p_cseType := int2) runs on CseSimu { // Variables var PrimitiveContent v_cSEBaseResource; vc_config := e_cf02CseSimuMaster; - vc_testSystemRole := e_cse; + vc_testSystemRole := e_cse; + vc_cseType := p_cseType; vc_ae1 := AeSimu.create("AE1") alive; // Map @@ -152,11 +154,11 @@ module OneM2M_Functions { /** @desc Ports mapping and default behaviour activation for Config 2 on the AE1 */ - function f_cf02UpAe1() runs on AeSimu { + function f_cf02UpAe1(in CseTypeID p_cseType := int2) runs on AeSimu { // Variables vc_config := e_cf02CseSimuMaster; - vc_testSystemRole := e_ae; + vc_testSystemRole := e_ae; // Map map(self:mcaPort, system:mcaPort); @@ -170,12 +172,13 @@ module OneM2M_Functions { /** * @desc Ports mapping and default behaviour activation for Config 03 */ - function f_cf03Up() runs on CseSimu { + function f_cf03Up(in CseTypeID p_cseType := int2) runs on CseSimu { // Variables var PrimitiveContent v_cSEBaseResource; vc_config := e_cf03; - vc_testSystemRole := e_cse; + vc_testSystemRole := e_cse; + vc_cseType := p_cseType; // Map map(self:mcaPortIn, system:mcaPortIn);//TODO To be consistent, we should use mcaPortIn for AE testing @@ -200,13 +203,13 @@ module OneM2M_Functions { /** * @desc Ports mapping and default behaviour activation for Config 04 */ - function f_cf04Up() runs on CseSimu { + function f_cf04Up(in CseTypeID p_cseType := int2) runs on CseSimu { // Variables var PrimitiveContent v_cSEBaseResource; vc_config := e_cf04; vc_testSystemRole := e_cse; - + vc_cseType := p_cseType; // Map map(self:mccPort, system:mccPort); @@ -1649,7 +1652,7 @@ module OneM2M_Functions { f_checkCseSimuStatus(); - } //end f_cse_resourceAnnouncementHandler + } //end f_cse_announcementProcedure_createHandler /** * @desc Message exchange for the announcement of resources @@ -1692,7 +1695,7 @@ module OneM2M_Functions { return v_resourceIndex; - } //end f_cse_announceResource + } //end f_cse_announcementProcedure_announceResource /** * @desc Handling message exchange for the AE Annc update @@ -1737,6 +1740,52 @@ module OneM2M_Functions { } //end f_cse_notifyProcedure_updateHandler + /** + * @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_deleteHandler() 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(int2002, omit)); + + tc_ac.start; + alt { + [] mccPortIn.receive(mw_request(mw_notifyNotification(v_notificationRequest))) -> value vc_request { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ":INFO: Notification received"); + //TODO Delete the resource of the local list + } + [] mccPortIn.receive{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ":ERROR: unexpected message received"); + stop; + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ":ERROR: No notification received"); + stop; + } + } + + v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier; + if(getverdict == pass) { + mccPortIn.send(m_httpResponse(v_responsePrimitive)); + } else { + v_responsePrimitive.responseStatusCode := int4000; + mccPortIn.send(m_httpResponse(v_responsePrimitive)); + } + + } //end f_cse_announcementProcedure_deleteHandler + }//end of group AnnouncementFunctions /** @@ -1969,11 +2018,7 @@ module OneM2M_Functions { v_myResource.cSEBase.cSE_ID := PX_CSE1_ID; v_myResource.cSEBase.supportedResourceType := PX_CSE1_SRT; v_myResource.cSEBase.pointOfAccess := {f_getAnnouncementTargetPoA(PX_PROTOCOL_BINDING, PX_CSE1_ADDRESS, "")}; - if (PX_MN_CSE){ - v_myResource.cSEBase.cseType := int1; //Tester is an IN-CSE - }else if (PX_IN_CSE){ - v_myResource.cSEBase.cseType := int2; //Tester is a MN-CSE - } + v_myResource.cSEBase.cseType := vc_cseType; }else if(p_resourceType == int16 and ispresent(p_resource)) { //RemoteCSE if(ischosen(p_resource.remoteCSE)){ diff --git a/LibOneM2M/OneM2M_TestSystem.ttcn b/LibOneM2M/OneM2M_TestSystem.ttcn index 223b9fd..c6018d3 100644 --- a/LibOneM2M/OneM2M_TestSystem.ttcn +++ b/LibOneM2M/OneM2M_TestSystem.ttcn @@ -65,11 +65,14 @@ module OneM2M_TestSystem { var integer vc_remoteCseIndex := -1; var integer vc_localRemoteCseIndex := -1; var integer vc_cSEBaseIndex := -1; //Index of the CSEBase resource of the Tester inside vc_localResourcesList + var CseTypeID vc_cseType; //cseType of the simulated CSE. IN = 1; MN = 2 }; - type component InCseSimu extends CseSimu {} + type component InCseSimu extends CseSimu { + } - type component MnCseSimu extends CseSimu {} + type component MnCseSimu extends CseSimu { + } type component CseSystem { port OneM2MPort mcaPort; diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index 51466f6..a2a9aa4 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -6345,7 +6345,7 @@ module OneM2M_PermutationFunctions { // Test adapter configuration //Register the CSE - vc_cse1.start(f_cse_registrationRemoteCse(mw_createRemoteCSE)); + vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase)); vc_cse1.done; //Preamble @@ -6395,19 +6395,18 @@ module OneM2M_PermutationFunctions { function f_CSE_ANNC_CRE_001(ResourceType p_resourceType,template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit) runs on AeSimu { //Local variables var MsgIn v_response; - var RequestPrimitive v_request; - var integer v_parentIndex := -1; var integer v_aeIndex := -1; var integer v_resourceIndex; var ResponsePrimitive v_responsePrimitive; var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit); + v_create.primitiveContent.aE.announceTo := {PX_CSE_ID}; //Test control //Test component configuration f_cf02Up(); //Register the CSE - vc_cse1.start(f_cse_registrationRemoteCse(mw_createRemoteCSE)); + vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase)); vc_cse1.done; //Preamble @@ -6415,10 +6414,9 @@ module OneM2M_PermutationFunctions { v_aeIndex := f_cse_createResource(int2,v_create); vc_cse1.done; - v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_parentIndex); - vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc)); - mcaPort.send(m_request(v_request)); + f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex); + vc_cse1.done; //Postamble f_cse_postamble_deleteResources(); @@ -6485,7 +6483,7 @@ module OneM2M_PermutationFunctions { // Test adapter configuration //Register the CSE - vc_cse1.start(f_cse_registrationRemoteCse(mw_createRemoteCSE)); + vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase)); vc_cse1.done; //Preamble @@ -6535,6 +6533,7 @@ module OneM2M_PermutationFunctions { var integer v_aEAnncIndex := -1; var ResponsePrimitive v_responsePrimitive; var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit); + v_create.primitiveContent.aE.announceTo := {PX_CSE_ID}; // Test control @@ -6543,7 +6542,7 @@ module OneM2M_PermutationFunctions { // Test adapter configuration // Register the CSE - f_cse_registrationRemoteCse(mw_createRemoteCSE); + f_cse_registerRemoteCse(m_createRemoteCSEBase); //Preamble f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -)); @@ -6591,6 +6590,7 @@ module OneM2M_PermutationFunctions { var integer v_remoteCSEAnncIndex := -1; var ResponsePrimitive v_responsePrimitive; var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit); + v_create.primitiveContent.aE.announceTo := {PX_CSE_ID}; // Test control @@ -6599,7 +6599,7 @@ module OneM2M_PermutationFunctions { // Test adapter configuration // Register the CSE - f_cse_registrationRemoteCse(mw_createRemoteCSE); + f_cse_registerRemoteCse(m_createRemoteCSEBase); //Preamble f_cse_announcementProcedure_createHandler(mw_createRemoteCSEAnnc(-, -, -)); @@ -6647,7 +6647,7 @@ module OneM2M_PermutationFunctions { var integer v_remoteCSEAnncIndex := -1; var ResponsePrimitive v_responsePrimitive; var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit); - + v_create.primitiveContent.aE.announceTo := {PX_CSE_ID}; // Test control // Test component configuration @@ -6655,7 +6655,7 @@ module OneM2M_PermutationFunctions { // Test adapter configuration // Register the CSE - f_cse_registrationRemoteCse(mw_createRemoteCSE); + f_cse_registerRemoteCse(m_createRemoteCSEBase); //Preamble f_cse_announcementProcedure_createHandler(mw_createRemoteCSEAnnc(-, -, -)); @@ -6694,6 +6694,131 @@ module OneM2M_PermutationFunctions { }//end f_CSE_ANNC_CRE_006 } //end group Create + + group Delete{ + + function f_CSE_ANNC_DEL_001(ResourceType p_resourceType,template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit) runs on AeSimu { + //Local variables + var RequestPrimitive v_request; + var integer v_aeIndex := -1; + var integer v_resourceIndex; + var ResponsePrimitive v_responsePrimitive; + var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit); + v_create.primitiveContent.aE.announceTo := {PX_CSE_ID}; + //Test control + + //Test component configuration + f_cf02Up(); + + //Register the CSE + vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase)); + vc_cse1.done; + + //Preamble + vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -))); + v_aeIndex := f_cse_createResource(int2,v_create); + vc_cse1.done; + + vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc)); + v_resourceIndex := f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex); + vc_cse1.done; + + vc_cse1.start(f_cse_announcementProcedure_deleteHandler()); + v_request := valueof(m_delete(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex))); + mcaPort.send(m_request(v_request)); + vc_cse1.done; + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2002))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Resource deleted successfully"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Wrong response status code in the response"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while deleting container resource using non-hierarchical addressing method"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while deleting resource"); + } + } + + //Check to see if the resource is present or not + if (f_isResourceNotPresent(v_aeIndex, f_getResourceName(vc_resourcesList[v_resourceIndex].resource))){ + setverdict(pass, __SCOPE__ & ":INFO: Resource deleted"); + }else { + setverdict(fail, __SCOPE__ & ":ERROR: Resource not deleted"); + } + + //Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf02Down(); + } //end f_CSE_ANNC_DEL_001 + + function f_CSE_ANNC_DEL_002(ResourceType p_resourceType, template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit) runs on CseSimu { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var MsgIn v_request; + var integer v_parentIndex := -1; + var integer v_aeIndex := -1; + var integer v_resourceIndex; + var integer v_aEAnncIndex := -1; + var ResponsePrimitive v_responsePrimitive; + var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit); + v_create.primitiveContent.aE.announceTo := {PX_CSE_ID}; + + // Test control + + // Test component configuration + f_cf02UpCseSimuMaster(); + + // Test adapter configuration + // Register the CSE + f_cse_registerRemoteCse(m_createRemoteCSEBase); + + //Preamble + v_ae1.start(f_cse_createResource(int2,v_create)); + v_ae1.done; + f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -)); + + v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, vc_aeAuxIndex)); + v_ae1.done; + f_cse_announcementProcedure_createHandler(p_createRequestAnnc); + + // Test Body + v_ae1.start(f_cse_deleteResource(lengthof(vc_resourcesList)-1)); + v_ae1.done; + + tc_ac.start; + alt { + [] mccPortIn.receive(mw_request(mw_delete(f_getResourceAddress(lengthof(vc_resourcesList)-1)))){ + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Delete Request received successfully"); + } + [] mccPortIn.receive { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error Delete request was not received"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while waiting to receive Delete request"); + } + } + + // Postamble + f_cse_postamble_deleteResourcesCSE(); + + // Tear down + f_cf02DownCseSimuMaster(); + + }//end f_CSE_ANNC_DEL_002 + + }//end group Delete }// end group Announcement diff --git a/OneM2M_Testcases_CSE_Release_2.ttcn b/OneM2M_Testcases_CSE_Release_2.ttcn index 28accb3..7dd1d4c 100644 --- a/OneM2M_Testcases_CSE_Release_2.ttcn +++ b/OneM2M_Testcases_CSE_Release_2.ttcn @@ -7102,7 +7102,90 @@ module OneM2M_Testcases_CSE_Release_2 { } } //end group g_CSE_ANNC_CRE_006 - } + }//end group Create + + group Delete{ + + group g_CSE_ANNC_DEL_001{ + + testcase TC_CSE_ANNC_DEL_001_ACP() runs on Tester system CseSystem { + // Local variables + var MnCseSimu v_cse1 := MnCseSimu.create("CSE1") alive; + var template RequestPrimitive v_createRequest := m_createAcpBase; + var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc; + + v_createRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID}; + + v_cse1.start(f_CSE_ANNC_DEL_001(int1, v_createRequestAnnc, v_createRequest));//AccessControlPolicy + v_cse1.done; + } + + testcase TC_CSE_ANNC_DEL_001_CNT() runs on Tester system CseSystem { + // Local variables + var CseSimu v_cse1 := CseSimu.create("CSE1") alive; + var template RequestPrimitive v_createRequest := m_createContainerBase; + var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase; + + v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID}; + + v_cse1.start(f_CSE_ANNC_DEL_001(int3, v_createRequestAnnc, v_createRequest));//Container + v_cse1.done; + } + + testcase TC_CSE_ANNC_DEL_001_GRP() runs on Tester system CseSystem { + // Local variables + var CseSimu v_cse1 := CseSimu.create("CSE1") alive; + var template RequestPrimitive v_createRequest := m_createGroupBase; + var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase; + + v_createRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID}; + + v_cse1.start(f_CSE_ANNC_DEL_001(int9, v_createRequestAnnc, v_createRequest));//Group + v_cse1.done; + } + + }// end group g_CSE_ANNC_DEL_001 + + group g_CSE_ANNC_DEL_002{ + + testcase TC_CSE_ANNC_DEL_002_ACP() runs on Tester system CseSystem { + // Local variables + var MnCseSimu v_cse1 := MnCseSimu.create("CSE1") alive; + var template RequestPrimitive v_createRequest := m_createAcpBase; + var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc; + + v_createRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID}; + + v_cse1.start(f_CSE_ANNC_DEL_002(int1, v_createRequestAnnc, v_createRequest));//AccessControlPolicy + v_cse1.done; + } + + testcase TC_CSE_ANNC_DEL_002_CNT() runs on Tester system CseSystem { + // Local variables + var CseSimu v_cse1 := CseSimu.create("CSE1") alive; + var template RequestPrimitive v_createRequest := m_createContainerBase; + var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase; + + v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID}; + + v_cse1.start(f_CSE_ANNC_DEL_002(int3, v_createRequestAnnc, v_createRequest));//Container + v_cse1.done; + } + + testcase TC_CSE_ANNC_DEL_002_GRP() runs on Tester system CseSystem { + // Local variables + var CseSimu v_cse1 := CseSimu.create("CSE1") alive; + var template RequestPrimitive v_createRequest := m_createGroupBase; + var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase; + + v_createRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID}; + + v_cse1.start(f_CSE_ANNC_DEL_002(int9, v_createRequestAnnc, v_createRequest));//Group + v_cse1.done; + } + + }// end group g_CSE_ANNC_DEL_002 + }//end group Delete }//end group Announcement }//end group CSE -- GitLab