diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index db8909d3f72a88926dcfdf3a790063d3a379e777..dbf69af274a65b00195a01b779ac8df386f54d2e 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -391,6 +391,28 @@ module OneM2M_Functions { return v_resourceIndex; } + + /** + * @desc Getting last local resourceIndex saved in the vc_localResourcesList + * @param p_tester Given component + */ + function f_getLatestLocalResourceIndex(in CseSimu p_component) runs on Tester return integer { + var integer v_resourceIndex; + + f_connectInfoPort(p_component); + + p_component.start(f_sendLatestLocalResourceIndex()); + alt { + []infoPort.receive(mw_resourceIndex) -> value v_resourceIndex{ + } + } + + p_component.done; + f_disconnectInfoPort(p_component); + + return v_resourceIndex; + + } /** * @desc Getting primitiveContent retrieved in an AeSimu component @@ -490,6 +512,15 @@ module OneM2M_Functions { } + /** + * @desc Sending of last local resourceIndex saved in the vc_localResourcesList + */ + function f_sendLatestLocalResourceIndex() runs on CseSimu { + + infoPort.send(lengthof(vc_localResourcesList)-1); + + } + /** * @desc Sending of last primitiveContent retrieved (vc_primitiveContentRetrievedResource) through InfoPort */ @@ -938,6 +969,54 @@ module OneM2M_Functions { } + /** + * @desc Message exchange for the creation of a resource + * @param p_resourceType Resource type of the resource to be created + * @param p_requestPrimitive UPDATE request primitive to be used + * @param p_resourceIndex Internal resource index which indicates the resource to be updated + * @verdict + */ + function f_cse_createResourceHandler(template RequestPrimitive p_request) runs on CseSimu return integer{ + + var integer v_localResourceIndex := -1; + var integer v_parentResourceIndex := -1; + var ResponsePrimitive v_response; + var PrimitiveContent v_localResource; + + //Activate defaults when running on a PTC + f_cse_activateDefaults_cse1(); + + tc_ac.start; + alt { + [] mccPortIn.receive(mw_request(p_request)) -> value vc_request { + tc_ac.stop; + v_parentResourceIndex := f_getResourceIndex(vc_request.primitive.requestPrimitive.to_); + if(v_parentResourceIndex == -1) { + log(__SCOPE__&": ERROR: Target resource not found"); + v_response := valueof(m_responsePrimitive(int4004,vc_request.primitive.requestPrimitive.requestIdentifier)); + + } else { + v_localResource := f_generateLocalResource(vc_request.primitive.requestPrimitive.primitiveContent, v_parentResourceIndex, vc_request.primitive.requestPrimitive.resourceType); + v_localResourceIndex := f_setLocalResource(v_localResource, vc_request.primitive.requestPrimitive.resourceType, v_parentResourceIndex); + + v_response := valueof(m_responsePrimitive(int2001,vc_request.primitive.requestPrimitive.requestIdentifier)); + v_response.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource; + } + v_response.from_ := PX_CSE1_ID; + v_response.to_ := vc_request.primitive.requestPrimitive.from_; + mccPortIn.send(f_getMsgOutPrimitive(m_response(v_response))); + } + [] tc_ac.timeout { + setverdict(inconc, __SCOPE__&":INFO: No creation for resource received"); + } + } + + f_checkCseSimuStatus(); + + return v_localResourceIndex; + + }// end f_cse_createResourceHandler + /** * @desc Creation of a local resource * @param p_resourceType Resource type of the resource to be created @@ -1967,7 +2046,7 @@ module OneM2M_Functions { if(valueof(p_expectedResourceIndex) == v_parentIndex){ setverdict(pass, __SCOPE__ & ":INFO: Announcement Parent Resource Address matched"); v_responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,v_request.primitive.requestPrimitive.requestIdentifier)); - v_responsePrimitive.primitiveContent := vc_localResourcesList[p_expectedResourceIndex].resource; + v_responsePrimitive.primitiveContent := vc_localResourcesList[v_announcedResourceIndex].resource; } else { setverdict(fail, __SCOPE__ & ":ERROR: Announcement Parent Resource Address not matched"); v_responsePrimitive := valueof(m_responsePrimitive(int4000,v_request.primitive.requestPrimitive.requestIdentifier)); @@ -1988,6 +2067,8 @@ module OneM2M_Functions { } [] mccPortIn.receive(mw_request(?)) -> value v_request { setverdict(fail, __SCOPE__ & ":ERROR: Request received with unexpected parameters"); + v_responsePrimitive := valueof(m_responsePrimitive(int4000,v_request.primitive.requestPrimitive.requestIdentifier)); + mccPortIn.send(f_getMsgOutPrimitive(m_response(v_responsePrimitive))); } [] tc_ac.timeout { setverdict(fail, __SCOPE__ & ":ERROR: No announcement received"); @@ -2230,7 +2311,7 @@ module OneM2M_Functions { setverdict(pass, __SCOPE__&":INFO: Resource type remoteCSE created successfuly"); f_checkAttributesToBeSaved(int16, v_request, v_response.primitive.responsePrimitive); vc_remoteCseIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int16, -1); - v_localRemoteCSEResource := f_generateLocalResource(m_primitiveContentRemoteCSE(m_contentCreateRemoteCSE(f_resourceIdCleaner(v_response.primitive.responsePrimitive.from_),omit,v_response.primitive.responsePrimitive.from_,v_response.primitive.responsePrimitive.from_)),vc_cSEBaseIndex, int16); + v_localRemoteCSEResource := f_generateLocalResource(m_primitiveContentRemoteCSE(m_contentCreateRemoteCSE(PX_CSE_NAME,omit,PX_CSE_ID,PX_CSE_ID)),vc_cSEBaseIndex, int16); vc_localRemoteCseIndex := f_setLocalResource(v_localRemoteCSEResource, int16, vc_cSEBaseIndex); } [] mccPort.receive(mw_response(mw_responsePrimitiveKO)) { @@ -2410,7 +2491,7 @@ module OneM2M_Functions { v_myResource.aEAnnc.resourceName := "aEAnnc" & int2str(v_resourceIndex); v_myResource.aEAnnc.resourceType := p_resourceType; - v_myResource.aEAnnc.resourceID := f_resourceIdCleaner(v_myResource.aEAnnc.aE_ID); + v_myResource.aEAnnc.resourceID := "ae" & int2str(v_resourceIndex); v_myResource.aEAnnc.parentID := f_getResourceId(vc_localResourcesList[p_parentIndex].resource); v_myResource.aEAnnc.creationTime := fx_generateTimestamp(); v_myResource.aEAnnc.lastModifiedTime := v_myResource.aEAnnc.creationTime; @@ -2421,7 +2502,7 @@ module OneM2M_Functions { v_myResource.accessControlPolicyAnnc.resourceName := "accessControlPolicyAnnc" & int2str(v_resourceIndex); v_myResource.accessControlPolicyAnnc.resourceType := p_resourceType; - v_myResource.accessControlPolicyAnnc.resourceID := f_resourceIdCleaner(v_myResource.accessControlPolicyAnnc.resourceID); + v_myResource.accessControlPolicyAnnc.resourceID := "acpA" & int2str(v_resourceIndex); v_myResource.accessControlPolicyAnnc.parentID := f_getResourceId(vc_localResourcesList[p_parentIndex].resource); v_myResource.accessControlPolicyAnnc.creationTime := fx_generateTimestamp(); v_myResource.accessControlPolicyAnnc.lastModifiedTime := v_myResource.accessControlPolicyAnnc.creationTime; @@ -2432,7 +2513,7 @@ module OneM2M_Functions { v_myResource.containerAnnc.resourceName := "containerAnnc" & int2str(v_resourceIndex); v_myResource.containerAnnc.resourceType := p_resourceType; - v_myResource.containerAnnc.resourceID := f_resourceIdCleaner(v_myResource.containerAnnc.resourceID); + v_myResource.containerAnnc.resourceID := "cntA" & int2str(v_resourceIndex); v_myResource.containerAnnc.parentID := f_getResourceId(vc_localResourcesList[p_parentIndex].resource); v_myResource.containerAnnc.creationTime := fx_generateTimestamp(); v_myResource.containerAnnc.lastModifiedTime := v_myResource.containerAnnc.creationTime; @@ -2443,18 +2524,18 @@ module OneM2M_Functions { v_myResource.groupAnnc.resourceName := "groupAnnc" & int2str(v_resourceIndex); v_myResource.groupAnnc.resourceType := p_resourceType; - v_myResource.groupAnnc.resourceID := f_resourceIdCleaner(v_myResource.groupAnnc.resourceID); + v_myResource.groupAnnc.resourceID := "grpA" & int2str(v_resourceIndex); v_myResource.groupAnnc.parentID := f_getResourceId(vc_localResourcesList[p_parentIndex].resource); v_myResource.groupAnnc.creationTime := fx_generateTimestamp(); v_myResource.groupAnnc.lastModifiedTime := v_myResource.groupAnnc.creationTime; } - } else if (p_resourceType == int10014 and ispresent (p_resource)) { //ContentInstance Annc + } else if (p_resourceType == int10004 and ispresent (p_resource)) { //ContentInstance Annc if(ischosen(p_resource.contentInstanceAnnc)) { v_myResource.contentInstanceAnnc := valueof(p_resource.contentInstanceAnnc); v_myResource.contentInstanceAnnc.resourceName := "contentInstanceAnnc" & int2str(v_resourceIndex); v_myResource.contentInstanceAnnc.resourceType := p_resourceType; - v_myResource.contentInstanceAnnc.resourceID := f_resourceIdCleaner(v_myResource.contentInstanceAnnc.resourceID); + v_myResource.contentInstanceAnnc.resourceID := "cinA" & int2str(v_resourceIndex); v_myResource.contentInstanceAnnc.parentID := f_getResourceId(vc_localResourcesList[p_parentIndex].resource); v_myResource.contentInstanceAnnc.creationTime := fx_generateTimestamp(); v_myResource.contentInstanceAnnc.lastModifiedTime := v_myResource.contentInstanceAnnc.creationTime; @@ -2793,6 +2874,27 @@ module OneM2M_Functions { tc_ac.start(10.0); repeat; } + [] mccPortIn.receive(mw_request(mw_delete())) -> value v_request { + tc_ac.stop; + log(__SCOPE__&": WARNING: Unexpected DELETE message received"); + + v_localResourceIndex := f_getResourceIndex(v_request.primitive.requestPrimitive.to_); + if(v_localResourceIndex == -1) + { + log(__SCOPE__&": ERROR: Resource Index not valid"); + v_response := valueof(m_responsePrimitive(int4004,v_request.primitive.requestPrimitive.requestIdentifier)); + v_response.from_ := PX_CSE1_ID; + v_response.to_ := v_request.primitive.requestPrimitive.from_; + mccPortIn.send(f_getMsgOutPrimitive(m_response(v_response))); + } else { + v_response := valueof(m_responsePrimitive(int2002,v_request.primitive.requestPrimitive.requestIdentifier)); + v_response.from_ := PX_CSE1_ID; + v_response.to_ := v_request.primitive.requestPrimitive.from_; + mccPortIn.send(f_getMsgOutPrimitive(m_response(v_response))); + } + tc_ac.start(10.0); + repeat; + } [] mccPortIn.receive (mw_request(?)){ log(__SCOPE__&": WARNING: Unexpected message received"); repeat; @@ -3263,6 +3365,9 @@ module OneM2M_Functions { if(ischosen(p_contentResource.container)) { return f_resourceIdCleaner(p_contentResource.container.resourceID); } + if(ischosen(p_contentResource.containerAnnc)) { + return f_resourceIdCleaner(p_contentResource.containerAnnc.resourceID); + } if(ischosen(p_contentResource.contentInstance)) { return f_resourceIdCleaner(p_contentResource.contentInstance.resourceID); } @@ -3739,6 +3844,79 @@ module OneM2M_Functions { return valueof(p_requestPrimitive); } + /** + * @desc Set parentID into the resource + * @param p_resource Resource to be modified + * @param p_parentID ParentID to be set + * @return + * @verdict + */ + function f_setParentID(PrimitiveContent p_resource, XSD.ID p_parentID) runs on Tester return PrimitiveContent { + + if (ischosen(p_resource.aE)){ + p_resource.aE.parentID := p_parentID; + } + else if (ischosen(p_resource.accessControlPolicy)){ + p_resource.accessControlPolicy.parentID := p_parentID; + } + else if (ischosen(p_resource.accessControlPolicyAnnc)){ + p_resource.accessControlPolicyAnnc.parentID := p_parentID; + } + else if (ischosen(p_resource.container)){ + p_resource.container.parentID := p_parentID; + } + else if (ischosen(p_resource.containerAnnc)){ + p_resource.containerAnnc.parentID := p_parentID; + } + else if (ischosen(p_resource.group_)){ + p_resource.group_.parentID := p_parentID; + } + else if (ischosen(p_resource.groupAnnc)){ + p_resource.groupAnnc.parentID := p_parentID; + } + else if (ischosen(p_resource.serviceSubscribedAppRule)){ + p_resource.serviceSubscribedAppRule.parentID := p_parentID; + } + else if (ischosen(p_resource.subscription)){ + p_resource.subscription.parentID := p_parentID; + } + else if (ischosen(p_resource.locationPolicy)){ + p_resource.locationPolicy.parentID := p_parentID; + } + else if (ischosen(p_resource.delivery)){ + p_resource.delivery.parentID := p_parentID; + } + else if (ischosen(p_resource.mgmtCmd)){ + p_resource.mgmtCmd.parentID := p_parentID; + } + else if (ischosen(p_resource.node)){ + p_resource.node.parentID := p_parentID; + } + else if (ischosen(p_resource.remoteCSE)){ + p_resource.remoteCSE.parentID := p_parentID; + } + else if (ischosen(p_resource.remoteCSE)){ + p_resource.remoteCSE.parentID := p_parentID; + } + else if (ischosen(p_resource.request)){ + p_resource.request.parentID := p_parentID; + } + else if (ischosen(p_resource.statsCollect)){ + p_resource.statsCollect.parentID := p_parentID; + } + else if (ischosen(p_resource.statsConfig)){ + p_resource.statsConfig.parentID := p_parentID; + } + else if (ischosen(p_resource.timeSeries)){ + p_resource.timeSeries.parentID := p_parentID; + } + else if (ischosen(p_resource.timeSeriesAnnc)){ + p_resource.timeSeriesAnnc.parentID := p_parentID; + } else { + log( __SCOPE__, ":INFO: Resource not having acpi attribute. Not possible to set acpi") + } + return valueof(p_resource); + } /** * @desc Retrieve AE_ID for a given AE resource * @param p_targetResourceIndex Internal resource index of the given resource @@ -3929,13 +4107,13 @@ module OneM2M_Functions { * @param data Corresponding information for the correct execution of the given action * @verdict */ - function f_aeSimu_checkComponentDoneAndGetVerdict(AeSimu p_ae) runs on AeSimu { + function f_aeSimu_checkComponentDoneAndGetVerdict(Tester p_component) runs on AeSimu { var verdicttype v_verdict := none; tc_ac.start(15.0); alt { - [] p_ae.done -> value v_verdict { + [] p_component.done -> value v_verdict { tc_ac.stop; } [] tc_ac.timeout { @@ -3974,13 +4152,13 @@ module OneM2M_Functions { * @param data Corresponding information for the correct execution of the given action * @verdict */ - function f_cseSimu_checkComponentDoneAndGetVerdict(AeSimu p_ae) runs on CseSimu { + function f_cseSimu_checkComponentDoneAndGetVerdict(Tester p_component) runs on CseSimu { var verdicttype v_verdict := none; tc_ac.start(15.0); alt { - [] p_ae.done -> value v_verdict { + [] p_component.done -> value v_verdict { tc_ac.stop; } [] tc_ac.timeout { diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index f89d55305a5f94695299d2be27b311e07d411246..7be45d737783ea97f6f0a06c47f730dd8a359a49 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -762,12 +762,19 @@ module OneM2M_Templates { }; /** - * @desc Reception template for CREATE AEAnnc + * @desc Reception template for CREATE AEAnnc for registration when AE-ID-Stem starts with S */ - template RequestPrimitive mw_createAEAnnc(template XSD.ID p_from := ?, template XSD.ID p_to := ?, template AcpType p_accessControlPolicyIds := ?, template XSD.AnyURI p_link := ?) modifies mw_create := { + template RequestPrimitive mw_createAEAnnc_s_ae_id(template XSD.ID p_from := ?, template XSD.ID p_to := ?, template AcpType p_accessControlPolicyIds := ?, template XSD.AnyURI p_link := ?) modifies mw_create := { primitiveContent := {aEAnnc := mw_contentCreateAEAnnc({"Credential-ID:None"}, p_accessControlPolicyIds)} }; + /** + * @desc Reception template for CREATE AEAnnc as announced resource + */ + template RequestPrimitive mw_createAEAnnc(template XSD.ID p_from := ?, template XSD.ID p_to := ?, template AcpType p_accessControlPolicyIds := ?, template XSD.AnyURI p_link := ?) modifies mw_create := { + primitiveContent := {aEAnnc := mw_contentCreateAEAnnc(-, p_accessControlPolicyIds)} + }; + template (value) RequestPrimitive m_createAe(XSD.ID p_appId, template (omit) AcpType p_accessControlPolicyIds := omit,template (omit) XSD.ID p_from := omit, template (omit) ResourceName p_resourceName := c_aeAuxName, in template (omit) PoaList p_poaList := omit) modifies m_create := { from_ := p_from,//PX_AE_ID_STEM,//TODO We should use omit, "s", or "c" requestIdentifier := testcasename() & "-m_createAe", @@ -895,6 +902,13 @@ module OneM2M_Templates { primitiveContent := {remoteCSE := m_contentCreateRemoteCSE(p_resourceName, p_accessControlPolicyIds,p_cSEBase, p_cSE_ID)} }; + /** + * @desc CREATE request primitive for remoteCSE resource with poa + */ + template (value) RequestPrimitive m_createRemoteCSE_poa(template (omit) AcpType p_accessControlPolicyIds := omit, template (omit) ResourceName p_resourceName := c_defaultRemoteCSEResourceName, in template (omit) XSD.AnyURI p_cSEBase := PX_CSE1_ID, in template (omit) XSD.ID p_cSE_ID := PX_CSE1_ID, in PoaList p_poaList) modifies m_createRemoteCSEBase := { + primitiveContent := {remoteCSE := m_contentCreateRemoteCSE_poa(p_resourceName, p_accessControlPolicyIds,p_cSEBase, p_cSE_ID, p_poaList)} + }; + /** * @desc Reception template for CREATE RemoteCSE */ @@ -985,7 +999,7 @@ module OneM2M_Templates { * @desc Reception template for CREATE ContentInstanceAnnc */ template RequestPrimitive mw_createContentInstanceAnnc(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_create := { - resourceType := int10014, + resourceType := int10004, primitiveContent := {contentInstanceAnnc := ?} }; @@ -1646,7 +1660,7 @@ module OneM2M_Templates { * @param p_appId App ID * @param p_nodeLink Node link */ - template AEAnnc_optional mw_contentCreateAEAnnc (in template Labels p_labels := ?, in template AcpType p_accessControlPolicyIds := ?, template XSD.AnyURI p_link := ?) := { + template AEAnnc_optional mw_contentCreateAEAnnc (in template Labels p_labels := *, in template AcpType p_accessControlPolicyIds := ?, template XSD.AnyURI p_link := ?) := { resourceName := omit,//NA M resourceType := omit,//NA M resourceID := omit,//NA M @@ -1666,8 +1680,8 @@ module OneM2M_Templates { nodeLink := *,//OA requestReachability := *,//OA contentSerialization := *,//OA - e2eSecInfo := ?, //MA - supportedReleaseVersions := ?, //MA + e2eSecInfo := *, //MA + supportedReleaseVersions := *, //MA//TODO It should be mandatory for AEAnnc choice := omit//NA }; @@ -1678,7 +1692,7 @@ module OneM2M_Templates { * @param p_appId App ID * @param p_nodeLink Node link */ - template RemoteCSEAnnc_optional mw_contentCreateRemoteCSEAnnc (in template Labels p_labels := ?, in template AcpType p_accessControlPolicyIds := ?, template XSD.AnyURI p_link := ?) := { + template RemoteCSEAnnc_optional mw_contentCreateRemoteCSEAnnc (in template Labels p_labels := *, in template AcpType p_accessControlPolicyIds := ?, template XSD.AnyURI p_link := ?) := { resourceName := omit,//NA M resourceType := omit,//NA M resourceID := omit,//NA M @@ -1788,7 +1802,7 @@ module OneM2M_Templates { * @desc Base reception template of primitiveContent for CREATE operation for AccessControlPolicyAnnc resource * @param p_labels Labels */ - template AccessControlPolicyAnnc_optional mw_contentCreateAcpAnnc (in template Labels p_labels := ?) := { + template AccessControlPolicyAnnc_optional mw_contentCreateAcpAnnc (in template Labels p_labels := *) := { resourceName := omit,//NA M resourceType := omit,//NA M resourceID := omit,//NA M @@ -1977,7 +1991,7 @@ module OneM2M_Templates { parentID := omit,//NA M creationTime := omit,//NA M lastModifiedTime := omit,//NA M - labels := ?,//MA + labels := *,//MA accessControlPolicyIDs := ?,//MA expirationTime := ?,//MA M link := ?, @@ -2054,7 +2068,7 @@ module OneM2M_Templates { parentID := omit,//NA M creationTime := omit,//NA M lastModifiedTime := omit,//NA M - labels := ?,//MA + labels := *,//MA accessControlPolicyIDs := ?,//MA expirationTime := ?,//MA M link := ?, @@ -2154,7 +2168,7 @@ module OneM2M_Templates { parentID := omit,//NA M creationTime := omit,//NA M lastModifiedTime := omit,//NA M - labels := ?,//MA + labels := *,//MA expirationTime := ?,//MA M link := ?, scheduleElement := * //OA @@ -2313,7 +2327,7 @@ module OneM2M_Templates { parentID := omit,//NA M creationTime := omit,//NA M lastModifiedTime := omit,//NA M - labels := ?,//MA + labels := *,//MA expirationTime := omit,//O NA link := omit, //O NA stateTag := *,// OA @@ -2444,6 +2458,37 @@ module OneM2M_Templates { choice := omit//O }; + /** + * @desc PrimitiveContent for CREATE operation for RemoteCSE resource with poa + * @param p_name Resource name + */ + template (value) RemoteCSE_optional m_contentCreateRemoteCSE_poa (in template (omit) XSD.String p_name := c_defaultRemoteCSEResourceName, in template (omit) AcpType p_accessControlPolicyIds, in template (omit) XSD.AnyURI p_cSEBase := PX_CSE1_ID, in template (omit) XSD.ID p_cSE_ID := PX_CSE1_ID, in PoaList p_poaList):= { + resourceName := p_name,//O + resourceType := omit,//NP + resourceID := omit,//NP + parentID := omit,//NP + creationTime := omit,//NP + lastModifiedTime := omit,//NP + labels := omit,//O + accessControlPolicyIDs := p_accessControlPolicyIds,//O + expirationTime := omit,//O + dynamicAuthorizationConsultationIDs := omit, + announceTo := omit,//O + announcedAttribute := omit,//O + cseType := omit,//O + pointOfAccess := p_poaList,//O + cSEBase := valueof(p_cSEBase),//M + cSE_ID := valueof(p_cSE_ID),//M + m2M_Ext_ID := omit,//O + trigger_Recipient_ID := omit,//O + requestReachability := true,//M + nodeLink := omit,//O + triggerReferenceNumber := omit,//O + e2eSecInfo := omit,//O + supportedReleaseVersions := {"2a"}, //M + choice := omit//O + }; + /** * @desc Base reception template of primitiveContent for CREATE operation for ContainerAnnc resource */ @@ -2454,7 +2499,7 @@ module OneM2M_Templates { parentID := omit,//NA M creationTime := omit,//NA M lastModifiedTime := omit,//NA M - labels := ?,//MA M + labels := *,//MA M accessControlPolicyIDs := ?,//MA expirationTime := ?,//MA M link := ?, //M @@ -2528,7 +2573,7 @@ module OneM2M_Templates { parentID := omit,//NA M creationTime := omit,//NA M lastModifiedTime := omit,//NA M - labels := ?,//MA + labels := *,//MA accessControlPolicyIDs := ?,//MA expirationTime := ?,//MA M link := ?, @@ -2777,7 +2822,7 @@ module OneM2M_Templates { parentID := omit,//NA M creationTime := omit,//NA M lastModifiedTime := omit,//NA M - labels := ?,//MA + labels := *,//MA accessControlPolicyIDs := ?,//MA expirationTime := ?,//MA M link := omit, //O NA @@ -2808,7 +2853,7 @@ module OneM2M_Templates { parentID := omit,//NA M creationTime := omit,//NA M lastModifiedTime := omit,//NA M - labels := ?,//MA + labels := *,//MA expirationTime := omit,//NA M link := omit, //O NA dataGenerationTime := *,//M OA diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index c5c1028daf6ed7d3fd141dea17e9ab1b34ff92a4..3e0e42857cc7309ba9a83eba096674e55a06c662 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -2955,7 +2955,7 @@ module OneM2M_PermutationFunctions { // Preamble if (PX_MN_CSE) { - vc_cse1.start(f_cse_registrationRemoteCse(m_createRemoteCSEBase)); + vc_cse1.start(f_cse_registrationRemoteCse(mw_createRemoteCSEBase)); }else if (PX_IN_CSE) { vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase)); } @@ -7107,26 +7107,30 @@ module OneM2M_PermutationFunctions { // Test adapter configuration //Register the CSE - vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase)); + vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getAnnouncementTargetPoA()}))); vc_cse1.done; + f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); + //Preamble vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -))); v_aeIndex := f_cse_createResource(int2,v_create); vc_cse1.done; + f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); + // Test Body if (ispresent (p_requestUpdatePrimitive)) { v_resourceIndex := f_cse_createResource(p_resourceType,p_requestCreatePrimitive); v_request := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive); v_responsePrimitive.responseStatusCode := int2004; } else { - v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_parentIndex); + v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_aeIndex); v_responsePrimitive.responseStatusCode := int2001; } //Retrieve the parent resource index - v_AEAnncResourceIndex := f_getLatestResourceIndex(vc_cse1); + v_AEAnncResourceIndex := f_getLatestLocalResourceIndex(vc_cse1); vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_AEAnncResourceIndex)); mcaPort.send(f_getMsgOutPrimitive(m_request(v_request))); @@ -7144,6 +7148,8 @@ module OneM2M_PermutationFunctions { setverdict(fail, __SCOPE__, ": No answer while updating resource type " & int2str(enum2int(p_resourceType))); } } + + f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); // Postamble f_cse_postamble_deleteResources(); @@ -7164,21 +7170,23 @@ module OneM2M_PermutationFunctions { 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}; + v_create.primitiveContent.aE.announceTo := {PX_CSE1_ID}; //Test control //Test component configuration f_cf02Up(); //Register the CSE - vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase)); - vc_cse1.done; + vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getAnnouncementTargetPoA()}))); + + f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); //Preamble vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -))); v_aeIndex := f_cse_createResource(int2,v_create); - vc_cse1.done; - + + f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); + vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc)); f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex); vc_cse1.done; @@ -7190,19 +7198,16 @@ module OneM2M_PermutationFunctions { f_cf02Down(); } //end f_CSE_ANNC_CRE_001 - function f_CSE_ANNC_CRE_002(ResourceType p_resourceType, template RequestPrimitive p_createRequest, in template RequestPrimitive p_updateRequest := omit) runs on CseSimu { + function f_CSE_ANNC_CRE_002(ResourceType p_resourceType, template RequestPrimitive p_createRequest, in template RequestPrimitive p_updateRequest := omit, in template RequestPrimitive p_createRequestAnnc) runs on CseSimu { // Local variables - var AeSimu v_ae1 := AeSimu.create("AE1") alive; var MsgIn v_response; var MsgIn v_request; - var PrimitiveContent v_remoteCSEAnncResource; + var PrimitiveContent v_announcedResource; var integer v_aeIndex := -1; var integer v_resourceIndex; + var integer v_localResourceIndex := -1; var integer v_remoteCSEAnncIndex := -1; var ResponsePrimitive v_responsePrimitive; - v_ae1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_AE1)); - v_ae1.done; - // Test control @@ -7210,35 +7215,66 @@ module OneM2M_PermutationFunctions { f_cf02UpCseSimuMaster(); // Test adapter configuration - + + //Register the CSE + f_cse_registrationRemoteCse(mw_createRemoteCSEBase); + //Preamble - v_ae1.start(f_cse_preamble_registerAe()); - v_ae1.done; - v_aeIndex := f_getLatestResourceIndex(v_ae1); + vc_ae1.start(f_cse_preamble_registerAe()); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); - v_ae1.start(f_cse_createResource(p_resourceType, p_createRequest, v_aeIndex)); - v_ae1.done; - v_resourceIndex := f_getLatestResourceIndex(v_ae1); + v_aeIndex := f_getLatestResourceIndex(vc_ae1); + + vc_ae1.start(f_cse_createResource(p_resourceType, p_createRequest, v_aeIndex)); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); + + v_resourceIndex := f_getLatestResourceIndex(vc_ae1); // Test Body - v_ae1.start(f_cse_sendUpdateRequestPrimitive(p_resourceType, p_updateRequest, v_resourceIndex)); - v_ae1.done; + vc_ae1.start(f_cse_sendUpdateRequestPrimitive(p_resourceType, p_updateRequest, v_resourceIndex)); + vc_ae1.done; tc_ac.start; alt { - [] mccPortIn.receive(mw_request(mw_createRemoteCSEAnnc)) -> value v_request { + [] mccPortIn.receive(mw_request(mw_updateRemoteCSE(PX_CSE_ID))) -> value v_request { tc_ac.stop; - setverdict(pass, __SCOPE__ & ":INFO: RemoteCSEAnnc CREATE received"); - //Save resource and generate required attributes - v_remoteCSEAnncResource:= f_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, vc_cSEBaseIndex,v_request.primitive.requestPrimitive.resourceType); - v_remoteCSEAnncIndex := f_setLocalResource(v_remoteCSEAnncResource, v_request.primitive.requestPrimitive.resourceType, vc_cSEBaseIndex); - - setverdict(pass, __SCOPE__ & ":INFO: Announcement Parent Resource Address matched"); - v_responsePrimitive := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier)); - v_responsePrimitive.primitiveContent := vc_localResourcesList[v_remoteCSEAnncIndex].resource; + setverdict(pass, __SCOPE__ & ":INFO: RemoteCSE UPDATE received"); + + v_localResourceIndex := f_getResourceIndex(v_request.primitive.requestPrimitive.to_); + if(v_localResourceIndex == -1) + { + log(__SCOPE__&": ERROR: Resource Index not valid, target not found"); + v_responsePrimitive := valueof(m_responsePrimitive(int4004,v_request.primitive.requestPrimitive.requestIdentifier)); + } else { + v_responsePrimitive := valueof(m_responsePrimitive(int2004,v_request.primitive.requestPrimitive.requestIdentifier)); + f_updateLocalResource(v_localResourceIndex, v_request.primitive.requestPrimitive.primitiveContent); + v_responsePrimitive.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource; + } v_responsePrimitive.from_ := PX_CSE1_ID; v_responsePrimitive.to_ := v_request.primitive.requestPrimitive.from_; - mccPortIn.send(f_getMsgOutPrimitive(m_response(v_responsePrimitive))); + mccPortIn.send(f_getMsgOutPrimitive(m_response(valueof(v_responsePrimitive)))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ":ERROR: No announcement received"); + } + } + + f_checkCseSimuStatus(); + + tc_ac.start; + alt { + [] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value v_request { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ":INFO: Resource Announced CREATE received"); + + //Simulate that resourceAnnc is created on CSE2 + v_announcedResource:= f_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, -1,v_request.primitive.requestPrimitive.resourceType); + //Set parentID correctly to remoteCSEAnnc-ID + v_announcedResource := f_setParentID(v_announcedResource, f_resourceIdCleaner(vc_localResourcesList[v_localResourceIndex].resource.remoteCSE.announceTo[0])); + + v_responsePrimitive := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier)); + v_responsePrimitive.primitiveContent := v_announcedResource; + mccPortIn.send(f_getMsgOutPrimitive(m_response(v_responsePrimitive))); } [] tc_ac.timeout { setverdict(fail, __SCOPE__ & ":ERROR: No announcement received"); @@ -7274,19 +7310,20 @@ module OneM2M_PermutationFunctions { // Test adapter configuration //Register the CSE - vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase)); - vc_cse1.done; + vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getAnnouncementTargetPoA()}))); + + f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); //Preamble v_aeIndex := f_cse_preamble_registerAe(); vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createContainerAnncBase(-, -))); v_resourceIndex := f_cse_createResource(int3,v_createContainer, v_aeIndex); - vc_cse1.done; + f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); // Test Body //Retrieve the parent resource index where contentInstanceAnnc must be created - v_containerAnncResourceIndex := f_getLatestResourceIndex(vc_cse1); - v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_parentIndex); + v_containerAnncResourceIndex := f_getLatestLocalResourceIndex(vc_cse1); + v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_resourceIndex); vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc,int4000, v_containerAnncResourceIndex)); mcaPort.send(f_getMsgOutPrimitive(m_request(v_request))); @@ -7322,39 +7359,37 @@ module OneM2M_PermutationFunctions { function f_CSE_ANNC_CRE_004_CseSimu(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_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_ae1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_AE1)); - v_ae1.done; - v_create.primitiveContent.aE.announceTo := {PX_CSE_ID}; + + v_create.primitiveContent.aE.announceTo := {PX_CSE1_ID}; // Test control // Test component configuration f_cf02UpCseSimuMaster(); - + // Test adapter configuration // Register the CSE - f_cse_registerRemoteCse(m_createRemoteCSEBase); + f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getAnnouncementTargetPoA()})); //Preamble - v_ae1.start(f_cse_createResource(int2,v_create)); + vc_ae1.start(f_cse_createResource(int2,v_create)); v_aEAnncIndex := f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -)); - v_ae1.done; + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); - v_aeIndex := f_getLatestResourceIndex(v_ae1); + v_aeIndex := f_getLatestResourceIndex(vc_ae1); // Test Body - v_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); + vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_aEAnncIndex); - v_ae1.done; + vc_ae1.done; // Postamble f_cse_postamble_deleteResourcesCSE(); @@ -7366,19 +7401,15 @@ module OneM2M_PermutationFunctions { function f_CSE_ANNC_CRE_005_CseSimu(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_resourceAnncIndex := -1; var integer v_aEAnncIndex := -1; var ResponsePrimitive v_responsePrimitive; + var PrimitiveContent v_announcedResource; var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit); - var template RequestPrimitive v_createRemoteCSE := m_createRemoteCSEBase; var template RequestPrimitive v_createContainer := m_createContainerBase; - v_ae1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_AE1)); - v_ae1.done; - // Test control @@ -7387,31 +7418,71 @@ module OneM2M_PermutationFunctions { // Test adapter configuration // Register the CSE - vc_remoteCseIndex := f_cse_registrationRemoteCse(mw_createRemoteCSEBase); + vc_remoteCseIndex := f_cse_registrationRemoteCse(mw_createRemoteCSEBase); + + f_checkCseSimuStatus(); //Preamble - v_ae1.start(f_cse_createResource(int2,v_create)); - v_ae1.done; + vc_ae1.start(f_cse_createResource(int2,v_create)); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); - v_aeIndex := f_getLatestResourceIndex(v_ae1); + v_aeIndex := f_getLatestResourceIndex(vc_ae1); v_createContainer.primitiveContent.container.announceTo := {"/CSE2_ID"}; v_createContainer.primitiveContent.container.resourceName := "TriggerAnnounceIUT"; - v_ae1.start(f_cse_createResource(int3,v_createContainer, v_aeIndex)); + vc_ae1.start(f_cse_createResource(int3,v_createContainer, v_aeIndex)); //IUT shall announce itself by updating announceTo attribute of its remoteCSE on its registrar (CSE1) f_cse_updateResourceHandler(vc_localRemoteCseIndex, mw_updateRemoteCSE); - v_ae1.stop; + tc_ac.start; + alt { + [] mccPortIn.receive(mw_request(mw_createContainerAnncBase(PX_CSE_ID, vc_localResourcesList[vc_localRemoteCseIndex].resource.remoteCSE.announceTo[0] ))) -> value v_request { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ":INFO: Resource Announced CREATE received"); + + //Simulate that resourceAnnc is created on CSE2 + v_announcedResource:= f_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, -1,v_request.primitive.requestPrimitive.resourceType); + //Set parentID correctly to remoteCSEAnnc-ID + v_announcedResource := f_setParentID(v_announcedResource, f_resourceIdCleaner(vc_localResourcesList[vc_localRemoteCseIndex].resource.remoteCSE.announceTo[0])); + + v_responsePrimitive := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier)); + v_responsePrimitive.primitiveContent := v_announcedResource; + mccPortIn.send(f_getMsgOutPrimitive(m_response(v_responsePrimitive))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ":ERROR: No announcement received"); + } + } + + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); // Test Body - v_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); + vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); //IUT shall then create the announced resource on its remoteCSEAnnc as indicated in the announceTo attribute returned by its registrar (CSE1) p_createRequestAnnc.to_ := vc_localResourcesList[vc_localRemoteCseIndex].resource.remoteCSE.announceTo[0]; - f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -); + tc_ac.start; + alt { + [] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value v_request { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ":INFO: Resource Announced CREATE received"); + + //Simulate that resourceAnnc is created on CSE2 + v_announcedResource:= f_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, -1,v_request.primitive.requestPrimitive.resourceType); + //Set parentID correctly to remoteCSEAnnc-ID + v_announcedResource := f_setParentID(v_announcedResource, f_resourceIdCleaner(vc_localResourcesList[vc_localRemoteCseIndex].resource.remoteCSE.announceTo[0])); + + v_responsePrimitive := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier)); + v_responsePrimitive.primitiveContent := v_announcedResource; + mccPortIn.send(f_getMsgOutPrimitive(m_response(v_responsePrimitive))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ":ERROR: No announcement received"); + } + } - v_ae1.done; + vc_ae1.done; // Postamble f_cse_postamble_deleteResourcesCSE(); @@ -7423,7 +7494,6 @@ module OneM2M_PermutationFunctions { function f_CSE_ANNC_CRE_006_CseSimu(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; @@ -7431,10 +7501,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_ae1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_AE1)); - v_ae1.done; - v_create.primitiveContent.container.announceTo := {PX_CSE1_ID}; - + // Test control // Test component configuration @@ -7442,20 +7509,20 @@ module OneM2M_PermutationFunctions { // Test adapter configuration // Register the CSE - f_cse_registerRemoteCse(m_createRemoteCSEBase); - + vc_remoteCseIndex := f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getAnnouncementTargetPoA()})); + //Preamble - v_ae1.start(f_cse_createResource(int2,v_create)); - v_ae1.done; + vc_ae1.start(f_cse_createResource(int2,v_create)); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); - v_aeIndex := f_getLatestResourceIndex(v_ae1); + v_aeIndex := f_getLatestResourceIndex(vc_ae1); // Test Body - v_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); + vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, vc_localRemoteCseIndex); - v_ae1.done; + vc_ae1.done; // Postamble f_cse_postamble_deleteResourcesCSE(); @@ -7467,48 +7534,91 @@ module OneM2M_PermutationFunctions { function f_CSE_ANNC_CRE_007_CseSimu(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 PrimitiveContent v_announcedResource; var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit); - v_ae1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_AE1)); - v_ae1.done; - v_create.primitiveContent.container.announceTo := {PX_CSE1_ID}; - + var template RequestPrimitive v_createContainer := m_createContainerBase; + // Test control - // Test component configuration f_cf02UpCseSimuMaster(); // Test adapter configuration // Register the CSE - vc_remoteCseIndex := f_cse_registerRemoteCse(m_createRemoteCSEBase); + vc_remoteCseIndex := f_cse_registrationRemoteCse(mw_createRemoteCSEBase); + + f_checkCseSimuStatus(); //Preamble - v_ae1.start(f_cse_createResource(int2,v_create)); - v_ae1.done; + vc_ae1.start(f_cse_createResource(int2,v_create)); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); - v_aeIndex := f_getLatestResourceIndex(v_ae1); + v_aeIndex := f_getLatestResourceIndex(vc_ae1); - // Test Body - v_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); + v_createContainer.primitiveContent.container.announceTo := {"/CSE2_ID"}; + v_createContainer.primitiveContent.container.resourceName := "TriggerAnnounceIUT"; + vc_ae1.start(f_cse_createResource(int3,v_createContainer, v_aeIndex)); //IUT shall announce itself by updating announceTo attribute of its remoteCSE on its registrar (CSE1) f_cse_updateResourceHandler(vc_localRemoteCseIndex, mw_updateRemoteCSE); + tc_ac.start; + alt { + [] mccPortIn.receive(mw_request(mw_createContainerAnncBase(PX_CSE_ID, vc_localResourcesList[vc_localRemoteCseIndex].resource.remoteCSE.announceTo[0] ))) -> value v_request { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ":INFO: Resource Announced CREATE received"); + + //Simulate that resourceAnnc is created on CSE2 + v_announcedResource:= f_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, -1,v_request.primitive.requestPrimitive.resourceType); + //Set parentID correctly to remoteCSEAnnc-ID + v_announcedResource := f_setParentID(v_announcedResource, f_resourceIdCleaner(vc_localResourcesList[vc_localRemoteCseIndex].resource.remoteCSE.announceTo[0])); + + v_responsePrimitive := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier)); + v_responsePrimitive.primitiveContent := v_announcedResource; + mccPortIn.send(f_getMsgOutPrimitive(m_response(v_responsePrimitive))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ":ERROR: No announcement received"); + } + } + + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); + + // Test Body + vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); + //IUT shall then create the announced resource on its remoteCSEAnnc as indicated in the announceTo attribute returned by its registrar (CSE1) p_createRequestAnnc.to_ := vc_localResourcesList[vc_localRemoteCseIndex].resource.remoteCSE.announceTo[0]; - f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -); + tc_ac.start; + alt { + [] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value v_request { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ":INFO: Resource Announced CREATE received"); + + //Simulate that resourceAnnc is created on CSE2 + v_announcedResource:= f_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, -1,v_request.primitive.requestPrimitive.resourceType); + //Set parentID correctly to remoteCSEAnnc-ID + v_announcedResource := f_setParentID(v_announcedResource, f_resourceIdCleaner(vc_localResourcesList[vc_localRemoteCseIndex].resource.remoteCSE.announceTo[0])); + + v_responsePrimitive := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier)); + v_responsePrimitive.primitiveContent := v_announcedResource; + mccPortIn.send(f_getMsgOutPrimitive(m_response(v_responsePrimitive))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ":ERROR: No announcement received"); + } + } - v_ae1.done; + vc_ae1.done; // Postamble f_cse_postamble_deleteResourcesCSE(); - + // Tear down f_cf02DownCseSimuMaster(); @@ -7516,14 +7626,11 @@ module OneM2M_PermutationFunctions { function f_CSE_ANNC_CRE_008_CseSimu(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_aeIndex := -1; var integer v_aEAnncIndex := -1; var ResponsePrimitive v_responsePrimitive; var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit); - v_ae1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_AE1)); - v_ae1.done; v_create.primitiveContent.aE.announceTo := {PX_CSE1_ID}; // Test control @@ -7533,17 +7640,20 @@ module OneM2M_PermutationFunctions { //Test adapter configuration // Register the CSE - f_cse_registerRemoteCse(m_createRemoteCSEBase); - - v_ae1.start(f_cse_createResource(int2,v_create)); - v_aeIndex := f_getLatestResourceIndex(v_ae1); + vc_remoteCseIndex := f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getAnnouncementTargetPoA()})); + + f_checkCseSimuStatus(); + + vc_ae1.start(f_cse_createResource(int2,v_create)); v_aEAnncIndex := f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -)); - v_ae1.done; + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); + + v_aeIndex := f_getLatestResourceIndex(vc_ae1); // Test Body - v_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); + vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_aEAnncIndex); - v_ae1.done; + vc_ae1.done; // Postamble f_cse_postamble_deleteResourcesCSE(); @@ -7555,7 +7665,6 @@ module OneM2M_PermutationFunctions { function f_CSE_ANNC_CRE_009_CseSimu(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; @@ -7563,8 +7672,6 @@ 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_ae1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_AE1)); - v_ae1.done; v_create.primitiveContent.aE.announceTo := {PX_CSE1_ID}; // Test control @@ -7574,17 +7681,19 @@ module OneM2M_PermutationFunctions { //Test adapter configuration // Register the CSE - f_cse_registerRemoteCse(m_createRemoteCSEBase); - - v_ae1.start(f_cse_createResource(int2,v_create)); - v_aeIndex := f_getLatestResourceIndex(v_ae1); + vc_remoteCseIndex := f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getAnnouncementTargetPoA()})); + + f_checkCseSimuStatus(); + vc_ae1.start(f_cse_createResource(int2,v_create)); v_aEAnncIndex := f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -)); - v_ae1.done; + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); + + v_aeIndex := f_getLatestResourceIndex(vc_ae1); // Test Body - v_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); + vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_aEAnncIndex); - v_ae1.done; + vc_ae1.done; // Postamble f_cse_postamble_deleteResourcesCSE(); diff --git a/OneM2M_Testcases_CSE_Release_1.ttcn b/OneM2M_Testcases_CSE_Release_1.ttcn index bcd248e470d8fc850593325ab4e2b83b5607d7b0..ca1e624559c454c6b882f6cefab4d7a7aab24e06 100644 --- a/OneM2M_Testcases_CSE_Release_1.ttcn +++ b/OneM2M_Testcases_CSE_Release_1.ttcn @@ -694,7 +694,7 @@ module OneM2M_Testcases_CSE_Release_1 { vc_ae1.start(f_cse_sendCreateRequestPrimitive(int2, m_createAe(PX_APP_ID, -, "S", omit))); vc_ae1.done; - v_requestPrimitive := mw_createAEAnnc(PX_CSE_ID & "/S", -, -, -); + v_requestPrimitive := mw_createAEAnnc_s_ae_id(PX_CSE_ID & "/S", -, -, -); v_requestPrimitive.primitiveContent.aEAnnc.app_ID := PX_APP_ID; tc_ac.start; @@ -773,7 +773,7 @@ module OneM2M_Testcases_CSE_Release_1 { tc_ac.start; alt { - [] mccPortIn.receive(mw_request(mw_createAEAnnc(PX_CSE_ID, f_getLocalResourceAddress(vc_cSEBaseIndex), -))) { + [] mccPortIn.receive(mw_request(mw_createAEAnnc_s_ae_id(PX_CSE_ID, f_getLocalResourceAddress(vc_cSEBaseIndex), -))) { tc_ac.stop; setverdict(pass, __SCOPE__ & ": AE creation redirected."); } @@ -908,11 +908,11 @@ module OneM2M_Testcases_CSE_Release_1 { tc_ac.start; alt { - [] mccPortIn.receive(mw_request(mw_createAEAnnc(f_getResourceAddress(-1,e_hierarchical, e_spRelative) & "/S", "CSE_ID", -))) { + [] mccPortIn.receive(mw_request(mw_createAEAnnc_s_ae_id(f_getResourceAddress(-1,e_hierarchical, e_spRelative) & "/S", "CSE_ID", -))) { tc_ac.stop; setverdict(pass, __SCOPE__ & ": AE creation redirected."); } - [] mccPortIn.receive(mw_request(mw_createAEAnnc(f_getResourceAddress(-1,e_hierarchical, e_absolute) & "/S", "CSE_ID", -))) { + [] mccPortIn.receive(mw_request(mw_createAEAnnc_s_ae_id(f_getResourceAddress(-1,e_hierarchical, e_absolute) & "/S", "CSE_ID", -))) { tc_ac.stop; setverdict(pass, __SCOPE__ & ": AE creation redirected."); } @@ -1061,7 +1061,7 @@ module OneM2M_Testcases_CSE_Release_1 { //Test Body f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, f_getResourceId(vc_resourcesList[v_aeIndex].resource))); - vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createAEAnnc(PX_CSE_ID, -, -, -))); + vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createAEAnnc_s_ae_id(PX_CSE_ID, -, -, -))); vc_cse1.done; tc_ac.start; diff --git a/OneM2M_Testcases_CSE_Release_2.ttcn b/OneM2M_Testcases_CSE_Release_2.ttcn index 744c4526cf7cded419194f6af6bf59ee794e3c5f..5fe43975b37f83a59c86476d23e8b2845e542cb9 100644 --- a/OneM2M_Testcases_CSE_Release_2.ttcn +++ b/OneM2M_Testcases_CSE_Release_2.ttcn @@ -10327,12 +10327,13 @@ module OneM2M_Testcases_CSE_Release_2 { var CseSimu v_cse1 := CseSimu.create("CSE1") alive; var template RequestPrimitive v_updateRequest := m_updateAcpBase; var template RequestPrimitive v_createRequest := m_createAcpBase; - + var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc; + v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); v_cse1.done; - v_updateRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID}; + v_updateRequest.primitiveContent.accessControlPolicy.announceTo := {"/CSE2_ID"}; - v_cse1.start(f_CSE_ANNC_CRE_002(int1, v_createRequest, v_updateRequest));//AccessControlPolicy + v_cse1.start(f_CSE_ANNC_CRE_002(int1, v_createRequest, v_updateRequest, v_createRequestAnnc));//AccessControlPolicy v_cse1.done; } @@ -10341,12 +10342,13 @@ module OneM2M_Testcases_CSE_Release_2 { var CseSimu v_cse1 := CseSimu.create("CSE1") alive; var template RequestPrimitive v_updateRequest := m_updateContainerBase; var template RequestPrimitive v_createRequest := m_createContainerBase; - + var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase; + v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); v_cse1.done; - v_updateRequest.primitiveContent.container.announceTo := {PX_CSE1_ID}; + v_updateRequest.primitiveContent.container.announceTo := {"/CSE2_ID"}; - v_cse1.start(f_CSE_ANNC_CRE_002(int3, v_createRequest, v_updateRequest));//Container + v_cse1.start(f_CSE_ANNC_CRE_002(int3, v_createRequest, v_updateRequest, v_createRequestAnnc));//Container v_cse1.done; } @@ -10355,12 +10357,13 @@ module OneM2M_Testcases_CSE_Release_2 { var CseSimu v_cse1 := CseSimu.create("CSE1") alive; var template RequestPrimitive v_updateRequest := m_updateGroupBase; var template RequestPrimitive v_createRequest := m_createGroupBase; - + var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase; + v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); v_cse1.done; - v_updateRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID}; + v_updateRequest.primitiveContent.group_.announceTo := {"/CSE2_ID"}; - v_cse1.start(f_CSE_ANNC_CRE_002(int9, v_createRequest, v_updateRequest));//Group + v_cse1.start(f_CSE_ANNC_CRE_002(int9, v_createRequest, v_updateRequest, v_createRequestAnnc));//Group v_cse1.done; } @@ -10369,12 +10372,13 @@ module OneM2M_Testcases_CSE_Release_2 { var CseSimu v_cse1 := CseSimu.create("CSE1") alive; var template RequestPrimitive v_updateRequest := m_updateTimeSeriesBase; var template RequestPrimitive v_createRequest := m_createTimeSeriesBase; + var template RequestPrimitive v_createRequestAnnc := mw_createTimeSeriesAnncBase; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); v_cse1.done; - v_updateRequest.primitiveContent.timeSeries.announceTo := {PX_CSE1_ID}; + v_updateRequest.primitiveContent.timeSeries.announceTo := {"/CSE2_ID"}; - v_cse1.start(f_CSE_ANNC_CRE_002(int29, v_createRequest, v_updateRequest));//TimeSeries + v_cse1.start(f_CSE_ANNC_CRE_002(int29, v_createRequest, v_updateRequest, v_createRequestAnnc));//TimeSeries v_cse1.done; } } //end group g_CSE_ANNC_CRE_002 @@ -10775,7 +10779,7 @@ module OneM2M_Testcases_CSE_Release_2 { v_cse1.done; v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID}; v_createRequest.primitiveContent.container.announcedAttribute := {"mbs"}; - v_createRequestAnnc.primitiveContent.container.maxByteSize := ?; + v_createRequestAnnc.primitiveContent.containerAnnc.maxByteSize := ?; v_cse1.start(f_CSE_ANNC_CRE_008_CseSimu(int3, v_createRequestAnnc, v_createRequest));//Container v_cse1.done; @@ -10791,7 +10795,7 @@ module OneM2M_Testcases_CSE_Release_2 { v_cse1.done; v_createRequest.primitiveContent.contentInstance.announceTo := {PX_CSE1_ID}; v_createRequest.primitiveContent.contentInstance.announcedAttribute := {"cnf"}; - v_createRequestAnnc.primitiveContent.contentInstance.contentInfo:= ?; + v_createRequestAnnc.primitiveContent.contentInstanceAnnc.contentInfo:= ?; v_cse1.start(f_CSE_ANNC_CRE_008_CseSimu(int4, v_createRequestAnnc, v_createRequest));//ContentInstance v_cse1.done; @@ -10807,7 +10811,7 @@ module OneM2M_Testcases_CSE_Release_2 { v_cse1.done; v_createRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID}; v_createRequest.primitiveContent.group_.announcedAttribute := {"mt"}; - v_createRequestAnnc.primitiveContent.group_.memberType:= ?; + v_createRequestAnnc.primitiveContent.groupAnnc.memberType:= ?; v_cse1.start(f_CSE_ANNC_CRE_008_CseSimu(int9, v_createRequestAnnc, v_createRequest));//Group v_cse1.done; @@ -10824,7 +10828,7 @@ module OneM2M_Testcases_CSE_Release_2 { v_createRequest.primitiveContent.timeSeries.announceTo := {PX_CSE1_ID}; v_createRequest.primitiveContent.timeSeries.announcedAttribute := {"mbs"}; - v_createRequestAnnc.primitiveContent.timeSeries.maxByteSize := ?; + v_createRequestAnnc.primitiveContent.timeSeriesAnnc.maxByteSize := ?; v_cse1.start(f_CSE_ANNC_CRE_008_CseSimu(int29, v_createRequestAnnc, v_createRequest));//TimeSeries v_cse1.done; @@ -10840,7 +10844,7 @@ module OneM2M_Testcases_CSE_Release_2 { v_cse1.done; v_createRequest.primitiveContent.timeSeriesInstance.announceTo := {PX_CSE1_ID}; v_createRequest.primitiveContent.timeSeriesInstance.announcedAttribute := {"cs"}; - v_createRequestAnnc.primitiveContent.timeSeriesInstance.contentSize := ?; + v_createRequestAnnc.primitiveContent.timeSeriesInstanceAnnc.contentSize := ?; v_cse1.start(f_CSE_ANNC_CRE_008_CseSimu(int30, v_createRequestAnnc, v_createRequest));//TimeSeriesInstance v_cse1.done; @@ -10864,7 +10868,7 @@ module OneM2M_Testcases_CSE_Release_2 { v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID}; v_createRequest.primitiveContent.container.labels := {"MyLabel"}; - v_createRequestAnnc.primitiveContent.container.labels := ?; + v_createRequestAnnc.primitiveContent.containerAnnc.labels := ?; v_cse1.start(f_CSE_ANNC_CRE_009_CseSimu(int3, v_createRequestAnnc, v_createRequest));//Container v_cse1.done;