diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 96a466917adf0e6904f2b2ac5d79215b3bdca21a..d5d527eadb7dd930ee6214d154355843b43ac2c9 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -417,6 +417,9 @@ module OneM2M_Functions { function f_cse_preamble_subscriptionVerification(out AeSimu p_ae2,in integer p_aeIndex, inout integer p_ae2Index, inout template RequestPrimitive p_createRequestPrimitive,in ResourceType p_resourceType, in ResponseStatusCode p_responseStatusCode := int2001) runs on AeSimu { if(p_resourceType == int23){ p_ae2 := AeSimu.create("AE2") alive; + map(p_ae2:mcaPort, system:mcaPort); + map(p_ae2:mcaPortIn, system:mcaPortIn); + //TODO shall be unmapped? p_ae2.start(f_cse_createResource(int2, m_createAe(PX_APP_ID, -, PX_AE2_ID_STEM, "MyAe2", {f_getAnnouncementTargetPoA("HTTP", PX_AE2_ADDRESS, "")}), -1)); // AE2 is registred p_ae2.done; p_ae2Index := f_getResource(p_ae2); @@ -546,6 +549,43 @@ module OneM2M_Functions { } + /** + @desc + */ + function f_getRequestPrimitive(in AeSimu p_ae) runs on Tester return RequestPrimitive { + var RequestPrimitive v_request; + + f_connectInfoPort(p_ae); + + p_ae.start(f_sendRequestPrimitive()); + alt { + []infoPort.receive(mw_requestPrimitiveforInfoPort) -> value v_request { + } + } + + f_disconnectInfoPort(p_ae); + + return v_request; + + } + + function f_getRemoteCseRequestPrimitive(in CseSimu p_cse) runs on Tester return RequestPrimitive { + var RequestPrimitive v_request; + + f_connectInfoPort(p_cse); + + p_cse.start(f_sendRemoteCseRequestPrimitive()); + alt { + []infoPort.receive(mw_requestPrimitiveforInfoPort) -> value v_request { + } + } + + f_disconnectInfoPort(p_cse); + + return v_request; + + } + /** @desc @@ -619,6 +659,18 @@ module OneM2M_Functions { } + function f_sendRequestPrimitive() runs on AeSimu { + + infoPort.send(vc_request.primitive.requestPrimitive); + + } + + function f_sendRemoteCseRequestPrimitive() runs on CseSimu { + + infoPort.send(vc_request.primitive.requestPrimitive); + + } + function f_sendPrimitiveContentRetrievedResource() runs on AeSimu { infoPort.send(vc_primitiveContentRetrievedResource); @@ -1476,11 +1528,9 @@ module OneM2M_Functions { */ function f_cse_receiveCreateRequest(in template RequestPrimitive p_requestPrimitive := ?) runs on CseSimu { - var MsgIn v_request; - tc_ac.start; alt { - [] mccPort.receive(mw_request(p_requestPrimitive)) -> value v_request { + [] mccPort.receive(mw_request(p_requestPrimitive)) -> value vc_request { tc_ac.stop; setverdict(pass, __SCOPE__&":INFO: CREATE Request received successfuly"); } diff --git a/LibOneM2M/OneM2M_Pixits.ttcn b/LibOneM2M/OneM2M_Pixits.ttcn index f64c639c63a1c3e5a99cdbd2f116752736f8b5d8..60d918179eda0041668c216beadf66096bd8e3b6 100644 --- a/LibOneM2M/OneM2M_Pixits.ttcn +++ b/LibOneM2M/OneM2M_Pixits.ttcn @@ -125,6 +125,7 @@ module OneM2M_Pixits { //NOTE: Apply to Device-based location request, and this requires Test System (TS) to activate ASN-AE mode to test IUT modulepar boolean PX_IUT_IS_ASN_CSE := false; //default //set it to true when running Device-based location testcases modulepar boolean PX_IUT_IS_MN_CSE := false; //default //set it to true when running Share-based location testcases + modulepar boolean PX_IUT_IS_IN_CSE := false; //default //set it to true when running Share-based location testcases //constant parameters for LOC modulepar XSD.Token PX_LOCATION_TARGET_ID := "{LOCATION-TARGET-ID}"; //SUPPOSE TO BE RECEIVED FROM LOCATION SERVER diff --git a/LibOneM2M/OneM2M_Ports.ttcn b/LibOneM2M/OneM2M_Ports.ttcn index d873a76598ab052ccb34703f796a5405ef1c480c..bc714dc4054ea6037393149b7e26ba7688e124e3 100644 --- a/LibOneM2M/OneM2M_Ports.ttcn +++ b/LibOneM2M/OneM2M_Ports.ttcn @@ -47,9 +47,9 @@ module OneM2M_Ports { */ type port InfoPort message { in - ResponsePrimitive, PrimitiveContent, MyResource; + RequestPrimitive, ResponsePrimitive, PrimitiveContent, MyResource; out - ResponsePrimitive, PrimitiveContent, MyResource; + RequestPrimitive, ResponsePrimitive, PrimitiveContent, MyResource; } }//end module diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index 6380ddf59b1dcd1ebc5883c02a62b5ff0f3331b7..c3bbbeb29a338030a72a78e29deccd8a4a21c274 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -3309,6 +3309,8 @@ module OneM2M_Templates { template ResponsePrimitive mw_responsePrimitiveforInfoPort := ?; + template RequestPrimitive mw_requestPrimitiveforInfoPort := ?; + template ResponsePrimitive mw_responsePrimitive(in template (present) ResponseStatusCode p_statusCode, in template PrimitiveContent p_content := *) := { responseStatusCode := p_statusCode, requestIdentifier := ?, diff --git a/OneM2M_TestControl.ttcn b/OneM2M_TestControl.ttcn index 2f8ab112dccbccffb711982c552671b5198a4fe1..4596e1f6fb3804b8278cfa8bb62351f361205ca1 100644 --- a/OneM2M_TestControl.ttcn +++ b/OneM2M_TestControl.ttcn @@ -45,6 +45,7 @@ module OneM2M_TestControl { execute(TC_CSE_REG_CRE_023()); execute(TC_CSE_REG_CRE_025()); execute(TC_CSE_REG_CRE_028()); + execute(TC_CSE_REG_CRE_029()); 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 72225b0d262f0948917acb264fed867b72c9cf7b..3e9a91b999fe9441a09ee2b056bde0ce8457ac3d 100644 --- a/OneM2M_Testcases.ttcn +++ b/OneM2M_Testcases.ttcn @@ -967,7 +967,7 @@ module OneM2M_Testcases { //Preambule //vc_remoteCseIndex := f_cse_registrationRemoteCse(mw_createRemoteCSEBase); //TODO: create serviceSubscribedProfile, Node, and serviceSubscribedAppRule - v_cseBaseIndex := f_cse_preamble_createServiceSubscribedProfile({"C*"}); //c_CRUDNDi); + //v_cseBaseIndex := f_cse_preamble_createServiceSubscribedProfile({"C*"}); //c_CRUDNDi); //Test Body //v_request := valueof(m_createAe(PX_APP_ID, omit, "C-AE-ID-STEM")); @@ -1173,11 +1173,12 @@ module OneM2M_Testcases { //Preambule vc_cseSimu.start(f_cse_registrationRemoteCse(mw_createRemoteCSEBase)); + vc_cseSimu.done; v_aeIndex := f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, "S-AE-ID-STEM")); vc_cseSimu.start(f_cse_resourceAnnouncementHandler()); - + vc_cseSimu.done; //TODO Deregister //f_cse_deleteResource(v_aeIndex); @@ -1540,7 +1541,7 @@ module OneM2M_Testcases { * @desc Check that the IUT rejects the create request of <CSEBase> resource. * */ - testcase TC_CSE_REG_CRE_027() runs on InCseSimu system CseSystem { + testcase TC_CSE_REG_CRE_027() runs on AeSimu system CseSystem { // Local variables var RequestPrimitive v_request; @@ -1550,23 +1551,23 @@ module OneM2M_Testcases { // Test control // Test component configuration - f_cf01UpCseSimuMaster(); + f_cf02Up(); // Test adapter configuration // Preamble - vc_remoteCseIndex := f_cse_registrationRemoteCse(mw_createRemoteCSEBase); + vc_cseSimu.start(f_cse_registrationRemoteCse(mw_createRemoteCSEBase)); // Test Body - vc_aeSimu.start(f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, omit))); + f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, omit)); tc_ac.start; alt { - [] mccPort.receive(mw_response(mw_responsePrimitive(int2001))) { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) { tc_ac.stop; setverdict(pass, __SCOPE__ & ": AE creation successful."); } - [] mccPort.receive { + [] mcaPort.receive { tc_ac.stop; setverdict(fail, __SCOPE__ & ": Error while creating AE"); } @@ -1576,10 +1577,10 @@ module OneM2M_Testcases { } // Postamble - f_cse_postamble_deleteResourcesCSE(); + f_cse_postamble_deleteResources(); // Tear down - f_cf01DownCseSimuMaster(); + f_cf02Down(); }//end TC_CSE_REG_CRE_027 @@ -1633,6 +1634,47 @@ module OneM2M_Testcases { } + testcase TC_CSE_REG_CRE_029() runs on CseSimu system CseSystem { + + var MsgIn v_response; + + var RequestPrimitive v_request; + var RequestPrimitive v_createRequestPrimitive := valueof(m_createRemoteCSEBase); + var ResourceType v_resourceType := int16; + + // Test control + + // Test component configuration + f_cf04Up(); + + // Test adapter configuration + + // Preamble + v_request := f_getCreateRequestPrimitive(v_resourceType, v_createRequestPrimitive, -1); + + tc_ac.start; + alt { + [] mccPort.receive(mw_request(mw_createRemoteCSEBase(PX_CSE_ID,f_getResourceAddress(-1)))) -> value v_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Resource type remoteCSE created successfully"); + } + [] mccPort.receive { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while creating resource type remoteCSE"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating resource type remoteCSE"); + } + } + + // Postamble + f_cse_postamble_deleteResourcesCSE(); + + // Tear down + f_cf04Down(); + + } + } //end group Create @@ -4639,7 +4681,8 @@ module OneM2M_Testcases { var RequestPrimitive v_requestPrimitive; var XSD.NonNegativeInteger maxByteSize := 512; //Correct value? Shall be indicated in TP? - v_createRequest.primitiveContent.container.announceTo := {f_getAnnouncementTargetPoA()}; + //v_createRequest.primitiveContent.container.announceTo := {f_getAnnouncementTargetPoA()}; + v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID}; v_createRequest.primitiveContent.container.maxByteSize := maxByteSize; v_createRequest.primitiveContent.container.announcedAttribute := {"maxByteSize"}; //Correct value? Shall be indicated in TP? @@ -4648,6 +4691,7 @@ module OneM2M_Testcases { if(getverdict == pass){ //Check if maxByteSize attribute has been announced + v_requestPrimitive := f_getRequestPrimitive(v_ae1); if (ispresent(v_requestPrimitive.primitiveContent.containerAnnc.maxByteSize)){ if(v_requestPrimitive.primitiveContent.containerAnnc.maxByteSize != maxByteSize){ setverdict(fail, __SCOPE__ & ": Error: Value of maxByteSize has not been announced successfully"); @@ -4667,7 +4711,8 @@ module OneM2M_Testcases { var RequestPrimitive v_requestPrimitive; var XSD.NonNegativeInteger v_contentSize := 512; //Correct value? Shall be indicated in TP? - v_createRequest.primitiveContent.contentInstance.announceTo := {f_getAnnouncementTargetPoA()}; + //v_createRequest.primitiveContent.contentInstance.announceTo := {f_getAnnouncementTargetPoA()}; + v_createRequest.primitiveContent.contentInstance.announceTo := {PX_CSE1_ID}; v_createRequest.primitiveContent.contentInstance.contentSize := v_contentSize; v_createRequest.primitiveContent.contentInstance.announcedAttribute := {"contentSize"}; //Correct value? Shall be indicated in TP? @@ -4676,6 +4721,7 @@ module OneM2M_Testcases { if(getverdict == pass){ //Check if contentSize attribute has been announced + v_requestPrimitive := f_getRequestPrimitive(v_ae1); if (ispresent(v_requestPrimitive.primitiveContent.contentInstanceAnnc.contentSize)){ if(v_requestPrimitive.primitiveContent.contentInstanceAnnc.contentSize != v_contentSize){ setverdict(fail, __SCOPE__ & ": Error: Value of contentSize has not been announced successfully"); @@ -4704,6 +4750,7 @@ module OneM2M_Testcases { if(getverdict == pass){ //Check if maxNrOfMembers attribute has been announced + v_requestPrimitive := f_getRequestPrimitive(v_ae1); if (ispresent(v_requestPrimitive.primitiveContent.groupAnnc.maxNrOfMembers)){ if(v_requestPrimitive.primitiveContent.groupAnnc.maxNrOfMembers != maxNrOfMembers){ setverdict(fail, __SCOPE__ & ": Error: Value of maxNrOfMembers has not been announced successfully"); @@ -4732,6 +4779,7 @@ module OneM2M_Testcases { if(getverdict == pass){ //Check if locationSource attribute has been announced + v_requestPrimitive := f_getRequestPrimitive(v_ae1); if (ispresent(v_requestPrimitive.primitiveContent.locationPolicyAnnc.locationSource)){ if(v_requestPrimitive.primitiveContent.locationPolicyAnnc.locationSource != locationSource){ setverdict(fail, __SCOPE__ & ": Error: Value of locationSource has not been announced successfully"); @@ -4760,6 +4808,7 @@ module OneM2M_Testcases { if(getverdict == pass){ //Check if description attribute has been announced + v_requestPrimitive := f_getRequestPrimitive(v_ae1); if (ispresent(v_requestPrimitive.primitiveContent.announcedMgmtResource.description)){ if(v_requestPrimitive.primitiveContent.announcedMgmtResource.description != description){ setverdict(fail, __SCOPE__ & ": Error: Value of description has not been announced successfully"); @@ -4802,6 +4851,7 @@ module OneM2M_Testcases { if(getverdict == pass){ //Check if scheduleElement attribute has been announced + v_requestPrimitive := f_getRequestPrimitive(v_ae1); if (ispresent(v_requestPrimitive.primitiveContent.scheduleAnnc.scheduleElement)){ if(v_requestPrimitive.primitiveContent.scheduleAnnc.scheduleElement != scheduleElement){ setverdict(fail, __SCOPE__ & ": Error: Value of scheduleElement has not been announced successfully"); @@ -4814,13 +4864,16 @@ module OneM2M_Testcases { } } - function f_CSE_DMR_CRE_017(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive, template (present) RequestPrimitive p_requestAnnc) runs on AeSimu return RequestPrimitive{ + function f_CSE_DMR_CRE_017(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive, template (present) RequestPrimitive p_requestAnnc) runs on AeSimu{ // Local variables var MsgIn v_anncRequest; var RequestPrimitive v_request; var integer v_parentIndex := -1; var integer v_containerIndex := -1; + var integer v_remoteCseIndex; + var integer v_aeAnncIndex; + var integer v_resourceIndex; // Test control @@ -4830,7 +4883,17 @@ module OneM2M_Testcases { // Test adapter configuration // Preamble - v_parentIndex := f_cse_preamble_registerAe();//c_CRUDNDi); + + if (PX_IUT_IS_MN_CSE == true) { + vc_cseSimu.start(f_cse_registrationRemoteCse(m_createRemoteCSEBase)); + }else if (PX_IUT_IS_IN_CSE == true) { + vc_cseSimu.start(f_cse_registerRemoteCse(m_createRemoteCSEBase)); + } + vc_cseSimu.done; + + vc_cseSimu.start(f_cse_resourceAnnouncementHandler()); + v_resourceIndex := f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, omit)); + vc_cseSimu.done; if(p_resourceType == int4) { v_containerIndex := f_cse_createResource(int3, m_createContainerBase, v_parentIndex); @@ -4839,17 +4902,20 @@ module OneM2M_Testcases { // Test Body v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestPrimitive, v_parentIndex); - - vc_cseSimu.start(f_cse_receiveCreateRequest(p_requestAnnc)); - vc_cseSimu.done; - + + vc_cseSimu.start(f_cse_receiveCreateRequest(p_requestAnnc)); + mcaPort.send(m_request(v_request)); + vc_cseSimu.done; + + vc_request.primitive.requestPrimitive := f_getRemoteCseRequestPrimitive(vc_cseSimu); + // Postamble f_cse_postamble_deleteResources(); - + // Tear down f_cf02Down(); - return v_anncRequest.primitive.requestPrimitive; + //return v_anncRequest.primitive.requestPrimitive; }//end f_CSE_DMR_CRE_017