diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 33e89d09052afbb674f314244fbfc9bdeaec2f77..4f2285a4220449936daa7af54e3ecac93551b59a 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -68,6 +68,29 @@ module OneM2M_Functions { } // end f_cf02Up + /** + * @desc Ports mapping and default behaviour activation for Config 01 + */ + + function f_cf01UpCseSimuMaster() runs on CseSimu { + + // Variables + vc_config := e_cf01; + vc_aeSimu := AeSimu.create("AE1") alive; + + // Map + map(self:mccPort, system:mcaPort); + map(vc_aeSimu:mcaPort, system:mcaPort); + map(self:acPort, system:acPort); + activate(a_default()); + activate(a_cse_cseSimu()); + + // Connect + f_connectInfoPort(vc_aeSimu); + //Initialze the IUT + + } // end f_cf01UpCseSimuMaster + /** * @desc Ports mapping and default behaviour activation for Config 02 */ @@ -78,7 +101,7 @@ module OneM2M_Functions { vc_aeSimu := AeSimu.create("AE1") alive; // Map - map(self:mccPort, system:mcaPort); + map(self:mccPort, system:mccPort); map(vc_aeSimu:mcaPort, system:mcaPort); map(self:acPort, system:acPort); activate(a_default()); @@ -160,7 +183,19 @@ module OneM2M_Functions { unmap(self:mcaPort, system:mcaPort); unmap(self:acPort, system:acPort); - } + } + + /** + * @desc Ports unmapping + * @verdict + */ + function f_cf01DownCseSimuMaster() runs on CseSimu { + unmap(self:mccPort, system:mccPort); + unmap(vc_aeSimu:mcaPort, system:mcaPort); + unmap(self:acPort, system:acPort); + unmap(vc_aeSimu:acPort, system:acPort); + } + /** * @desc Ports unmapping * @verdict @@ -923,7 +958,9 @@ module OneM2M_Functions { setverdict(pass, __SCOPE__ & ":INFO: Announcement received"); //TODO Save resource and generate required attributes v_responsePrimitive := f_getCreateResponsePrimitive(v_request.primitive.requestPrimitive.resourceType, v_request.primitive.requestPrimitive); - mccPort.send(m_response(v_responsePrimitive)); + mccPort.send(m_response(v_responsePrimitive)); + f_checkAttributesToBeSaved(v_request.primitive.requestPrimitive.resourceType, v_request.primitive.requestPrimitive, vc_response.primitive.responsePrimitive); + f_setResource(vc_response.primitive.responsePrimitive.primitiveContent, v_request.primitive.requestPrimitive.resourceType, vc_remoteCseIndex); } [] mccPort.receive{ tc_ac.stop; @@ -1330,7 +1367,7 @@ module OneM2M_Functions { v_request := f_getCreateRequestPrimitive(int16, p_requestPrimitive, -1); - mcaPort.send(m_request(v_request)); + mccPort.send(m_request(v_request)); tc_ac.start; alt { [] mccPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { @@ -1363,7 +1400,7 @@ module OneM2M_Functions { * @param p_requestPrimitive Template request primitive * @return Internal resource index of the created resource */ - function f_cse_registrationRemoteCse(in template RequestPrimitive p_requestPrimitive) runs on InCseSimu return integer { + function f_cse_registrationRemoteCse(in template RequestPrimitive p_requestPrimitive := ?) runs on InCseSimu return integer { var MsgIn v_request; var ResponsePrimitive v_response; @@ -1372,15 +1409,11 @@ module OneM2M_Functions { tc_ac.start; alt { - [] mccPort.receive(mw_request(?)) -> value v_request { + [] mccPort.receive(mw_request(p_requestPrimitive)) -> value v_request { tc_ac.stop; setverdict(pass, __SCOPE__&":INFO: Resource type RemoteCSE created successfuly"); v_resourceIndex := f_cse_createLocalResource(v_request.primitive.requestPrimitive.primitiveContent, 1, int16, v_remoteCSEResource);//TODO Get index from v_request.primitive.requestPrimitive.to_ } - [] mccPort.receive(mw_response(mw_responsePrimitiveKO)) { - tc_ac.stop; - setverdict(inconc, __SCOPE__&":INFO: Error while creating resource type RemoteCSE"); - } [] mccPort.receive { tc_ac.stop; setverdict(inconc, __SCOPE__&":INFO: Unexpected message received"); @@ -2378,10 +2411,11 @@ module OneM2M_Functions { f_cse_postamble_deleteResourcesCSE(); if(vc_config == e_cf03) { f_cf03Down(); + stop; } else if (vc_config ==e_cf04) { f_cf04Down(); + stop; } - stop; } } diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index 2c55486dbde48bb0584db89f1185c58555f9f66e..0a3bec5d73b2214780463a2d91b856c2a4e16a94 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -417,7 +417,7 @@ module OneM2M_Templates { template (value) RequestPrimitive m_updateAEAnnc(template (omit) AcpType p_accessControlPolicyIds := omit, template (omit) XSD.ID p_to := omit, template (omit) XSD.ID p_from := omit, XSD.ID p_appId, XSD.ID p_stemId := "") modifies m_update:= { requestIdentifier := testcasename() & "-m_updateAEAnnc" & f_rnd(1, 1000000), resourceType := int10002, - primitiveContent := {aEAnnc := m_contentUpdateAEAnnc} + primitiveContent := {aEAnnc := m_contentUpdateAEAnnc(p_appId,p_stemId)} }; }//end group Update @@ -588,6 +588,14 @@ module OneM2M_Templates { primitiveContent := {remoteCSE := m_contentCreateRemoteCSE(p_resourceName, p_accessControlPolicyIds,p_cSEBase, p_cSE_ID)} }; + /** + * @desc CREATE request primitive for remoteCSE resource + */ + template RequestPrimitive mw_createRemoteCSEBase(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_create := { + resourceType := int16, + primitiveContent := ?//{remoteCSE := m_contentCreateRemoteCSE(p_resourceName, p_accessControlPolicyIds,p_cSEBase, p_cSE_ID)} + }; + /** * @desc CREATE request primitive for Container resource wiht no resourceName provided */ @@ -2132,7 +2140,7 @@ module OneM2M_Templates { choice := omit } - template (value) AEAnnc_optional m_contentUpdateAEAnnc := { + template (value) AEAnnc_optional m_contentUpdateAEAnnc (template XSD.ID p_appId := omit, template XSD.ID p_stemId := omit) := { resourceName := omit, resourceType := omit, resourceID := omit, @@ -2144,7 +2152,7 @@ module OneM2M_Templates { expirationTime := omit, link := omit, appName := omit, - app_ID := omit, + app_ID := p_appId, aE_ID := omit, pointOfAccess := omit, ontologyRef := omit, diff --git a/OneM2M_TestControl.ttcn b/OneM2M_TestControl.ttcn index 18722af085bbfcb7c25733aad900cdf65676385d..2f8ab112dccbccffb711982c552671b5198a4fe1 100644 --- a/OneM2M_TestControl.ttcn +++ b/OneM2M_TestControl.ttcn @@ -40,11 +40,11 @@ module OneM2M_TestControl { execute(TC_CSE_REG_CRE_016_CST()); execute(TC_CSE_REG_CRE_016_POA()); execute(TC_CSE_REG_CRE_016_NL()); - execute(TC_CSE_REG_CRE_018()); + execute(TC_CSE_REG_CRE_019()); execute(TC_CSE_REG_CRE_022()); execute(TC_CSE_REG_CRE_023()); execute(TC_CSE_REG_CRE_025()); - execute(TC_CSE_REG_CRE_026()); + execute(TC_CSE_REG_CRE_028()); execute(TC_CSE_REG_RET_001()); execute(TC_CSE_REG_RET_005()); execute(TC_CSE_REG_RET_008()); diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn index 0b5c17186b27391f01888912e455eb2471d44e16..ac0224c82c178dc927fa617818b954043ae98ce7 100644 --- a/OneM2M_Testcases.ttcn +++ b/OneM2M_Testcases.ttcn @@ -873,7 +873,7 @@ module OneM2M_Testcases { f_cf01Up(); //Preamble - v_cseBaseIndex := f_cse_preamble_createServiceSubscribedAppRule({"C-AE-ID-STEM"});//c_CRUDNDi); + v_cseBaseIndex := f_cse_preamble_createServiceSubscribedAppRule({"S-AE-ID-STEM"}); //c_CRUDNDi); //Test Body v_request := valueof(m_createAe(PX_APP_ID, omit, omit)); @@ -955,7 +955,7 @@ module OneM2M_Testcases { * @desc Check that the IUT rejects an AE registration (allowed App-ID, not allowed C-AE-ID-STEM provided by AE) * */ - testcase TC_CSE_REG_CRE_004() runs on AeSimu system CseSystem { + testcase TC_CSE_REG_CRE_004() runs on InCseSimu system CseSystem { var MsgIn v_response; var RequestPrimitive v_request; @@ -963,37 +963,37 @@ module OneM2M_Testcases { var ResourceType v_resourceType := int2; // Test component configuration - f_cf01Up(); + f_cf01UpCseSimuMaster(); //Preambule - v_cseBaseIndex := f_cse_preamble_createServiceSubscribedAppRule(-);//c_CRUDNDi); + //v_cseBaseIndex := f_cse_preamble_createServiceSubscribedAppRule(-);//c_CRUDNDi); + vc_remoteCseIndex := f_cse_registrationRemoteCse(mw_createRemoteCSEBase); //Test Body - v_request := valueof(m_createAe(PX_APP_ID, omit, "C-AE-ID-STEM")); - - v_request := f_getCreateRequestPrimitive(v_resourceType, v_request, v_cseBaseIndex); + //v_request := valueof(m_createAe(PX_APP_ID, omit, "C-AE-ID-STEM")); + + vc_aeSimu.start(f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, "C-AE-ID-STEM"))); - mcaPort.send(m_request(v_request)); tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int4005))) { + [] mccPort.receive(mw_response(mw_responsePrimitive(int4005))) { tc_ac.stop; setverdict(pass, __SCOPE__ & ": AE creation rejected."); } - [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4005))) -> value v_response{ + [] mccPort.receive(mw_response(mw_responsePrimitiveInverse(int4005))) -> value v_response{ tc_ac.stop; setverdict(fail, __SCOPE__ & ": Error while creating AE with status code " & int2str(enum2int(v_response.primitive.responsePrimitive.responseStatusCode))); } [] tc_ac.timeout { setverdict(fail, __SCOPE__ & ": No answer while creating AE"); } - } + } // Postamble - f_cse_postamble_deleteResources(); + f_cse_postamble_deleteResourcesCSE(); // Tear down - f_cf01Down(); + f_cf01DownCseSimuMaster(); } @@ -1001,33 +1001,48 @@ module OneM2M_Testcases { * @desc Check that the IUT accepts an AE registration (allowed App-ID, S-AE-ID-STEM not provided by AE) * */ - testcase TC_CSE_REG_CRE_005() runs on AeSimu system CseSystem { + testcase TC_CSE_REG_CRE_005() runs on InCseSimu system CseSystem { var RequestPrimitive v_request; var integer v_cseBaseIndex := -1; var ResourceType v_resourceType := int2; // Test component configuration - f_cf02Up(); + f_cf02UpCseSimuMaster(); //Preambule - v_cseBaseIndex := f_cse_preamble_createServiceSubscribedAppRule({"S"});//c_CRUDNDi); + //v_cseBaseIndex := f_cse_preamble_createServiceSubscribedAppRule({"S"});//c_CRUDNDi); + vc_remoteCseIndex := f_cse_registrationRemoteCse(mw_createRemoteCSEBase); //Test Body - v_request := valueof(m_createAe(PX_APP_ID, omit, "C-AE-ID-STEM")); + vc_aeSimu.start(f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, omit))); - v_request := f_getCreateRequestPrimitive(v_resourceType, v_request, v_cseBaseIndex); + //v_request := f_getCreateRequestPrimitive(v_resourceType, v_request, v_cseBaseIndex); - mcaPort.send(m_request(v_request)); + //mcaPort.send(m_request(v_request)); + tc_ac.start; + alt{ + []mccPort.receive(mw_request(mw_createAEAnnc("/S", "CSE_ID", -))){ + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": AE creation redirected."); + } + [] mccPort.receive { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while creating AE"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating AE"); + } + } - vc_cseSimu.start(f_cse_receiveCreateRequest(mw_createAEAnnc(-, -, -))); - vc_cseSimu.done; + /*vc_cseSimu.start(f_cse_receiveCreateRequest(mw_createAEAnnc(-, -, -))); + vc_cseSimu.done;*/ // Postamble - f_cse_postamble_deleteResources(); + f_cse_postamble_deleteResourcesCSE(); // Tear down - f_cf01Down(); + f_cf02DownCseSimuMaster(); } @@ -1035,7 +1050,7 @@ module OneM2M_Testcases { * @desc Check that the IUT accepts an AE re-registration (allowed M2M-SP-assigned AE-ID, S-AE-ID-STEM provided by AE), transfer request to the IN-CSE * */ - testcase TC_CSE_REG_CRE_008() runs on CseSimu system CseSystem { + testcase TC_CSE_REG_CRE_008() runs on InCseSimu system CseSystem { var RequestPrimitive v_request; var integer v_cseBaseIndex := -1; @@ -1045,15 +1060,19 @@ module OneM2M_Testcases { f_cf02UpCseSimuMaster(); //Preambule - vc_remoteCseIndex := f_cse_registerRemoteCse(m_createRemoteCSEBase); + vc_remoteCseIndex := f_cse_registrationRemoteCse(mw_createRemoteCSEBase); //Test Body - vc_aeSimu.start(f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, "S-AE-ID-STEM"))); + vc_aeSimu.start(f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, "S"))); tc_ac.start; alt { - [] mccPort.receive(mw_request(mw_createAEAnnc("/S", "CSE_ID", -))) { + [] mccPort.receive(mw_request(mw_createAEAnnc(f_getResourceAddress(-1,e_hierarchical, e_spRelative) & "/S", "CSE_ID", -))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": AE creation redirected."); + } + [] mccPort.receive(mw_request(mw_createAEAnnc(f_getResourceAddress(-1,e_hierarchical, e_absolute) & "/S", "CSE_ID", -))) { tc_ac.stop; setverdict(pass, __SCOPE__ & ": AE creation redirected."); } @@ -1078,7 +1097,7 @@ module OneM2M_Testcases { * @desc Check that the IUT accepts an AE re-registration (allowed M2M-SP-assigned AE-ID, S-AE-ID-STEM provided by AE), communication between MN-CSE and IN-CSE * */ - testcase TC_CSE_REG_CRE_009() runs on CseSimu system CseSystem { + testcase TC_CSE_REG_CRE_009() runs on MnCseSimu system CseSystem { var MsgIn v_response; var RequestPrimitive v_request; @@ -1095,9 +1114,12 @@ module OneM2M_Testcases { v_aeAnncIndex := f_cse_announceResource(int2, m_createAEAnnc(-, -, -, PX_APP_ID, -)); //Test Body - v_request := valueof(m_updateAEAnnc(-, -, -, "APP-ID", -)); //TODO to double check all parameters + v_request := valueof(m_updateAEAnnc(-, -, -, PX_APP_ID, -)); //TODO to double check all parameters v_request := f_getUpdateRequestPrimitive(f_getAnnouncedResourceType(int2),v_aeAnncIndex, v_request);//TODO + v_request.from_ := f_getResourceAddress(-1,e_hierarchical, e_absolute) & "/S"; + v_request.primitiveContent.aEAnnc.app_ID := PX_APP_ID; + v_request.primitiveContent.aEAnnc.labels := {"Credential-ID:None"}; mccPort.send(m_request(v_request)); tc_ac.start; @@ -1146,7 +1168,9 @@ module OneM2M_Testcases { vc_cseSimu.start(f_cse_resourceAnnouncementHandler()); //TODO Deregister - + //f_cse_deleteResource(v_aeIndex); + v_request := valueof(m_delete(f_getResourceAddress(v_aeIndex), f_getOriginator(v_aeIndex))); + mcaPort.send(m_request(v_request)); //Test Body f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, f_getResourceId(vc_resourcesList[v_aeIndex].resource))); @@ -1159,8 +1183,16 @@ module OneM2M_Testcases { alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value v_response { tc_ac.stop; - setverdict(pass, __SCOPE__ & ": AE creation success."); //continue to test the content + if (ischosen(v_response.primitive.responsePrimitive.primitiveContent.aE)){ + if (v_response.primitive.responsePrimitive.primitiveContent.aE.app_ID == PX_APP_ID){ + setverdict(pass, __SCOPE__ & ": AE creation success."); + }else{ + setverdict(fail, __SCOPE__ & ": Error in AE content."); + } + }else{ + setverdict(fail, __SCOPE__ & ": primitiveContent doesn't exist"); + } } [] mcaPort.receive { tc_ac.stop; @@ -1219,6 +1251,7 @@ module OneM2M_Testcases { v_createRequest.primitiveContent.remoteCSE.pointOfAccess := {"http://" & PX_CSE1_ADDRESS & "/"}; v_cse1.start(f_CSE_REG_CRE_016(v_createRequest, c_optionalAttribute)); + v_cse1.done; } @@ -1260,14 +1293,17 @@ module OneM2M_Testcases { [] mccPort.receive(mw_response(mw_responsePrimitive(int2001, f_getTemplateFromPrimitiveContent(v_request.primitiveContent)))) -> value v_response { tc_ac.stop; setverdict(pass, __SCOPE__ & ": Accepted creation for resource type remoteCSE containing attribute " & p_optionalAttribute.name); + f_setResource(v_request.primitiveContent,int16); } [] mccPort.receive(mw_response(mw_responsePrimitiveOK(f_getTemplateFromPrimitiveContent(v_request.primitiveContent)))) -> value v_response { tc_ac.stop; setverdict(fail, __SCOPE__ & ": Wrong response status code in the response"); + f_setResource(v_request.primitiveContent,int16); } [] mccPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { tc_ac.stop; setverdict(fail, __SCOPE__ & ": Accepted creation for resource type remoteCSE without containing attribute " & p_optionalAttribute.name); + f_setResource(v_request.primitiveContent,int16); } [] mccPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { tc_ac.stop; @@ -1292,7 +1328,7 @@ module OneM2M_Testcases { * @desc Check that the IUT rejects an AE registration (not allowed App-ID) * */ - testcase TC_CSE_REG_CRE_018() runs on AeSimu system CseSystem { + testcase TC_CSE_REG_CRE_019() runs on AeSimu system CseSystem { var MsgIn v_response; var RequestPrimitive v_request; @@ -1492,7 +1528,7 @@ module OneM2M_Testcases { * @desc Check that the IUT rejects registration of already registered AE (C-AE-ID-STEM provided by AE) * */ - testcase TC_CSE_REG_CRE_026() runs on AeSimu system CseSystem { + testcase TC_CSE_REG_CRE_028() runs on AeSimu system CseSystem { var MsgIn v_response; var RequestPrimitive v_request;