diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index ace7fd137bca4d5034faf4cc11eb7ca6c76f3eff..45bfaefd965b08fcab8153500072d825bfb1b589 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 @@ -1132,6 +1211,51 @@ module OneM2M_Functions { }// end f_cse_updateResource + /** + * @desc Message exchange for the update 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_updateResourceHandler(integer p_resourceIndex, template RequestPrimitive p_request) runs on CseSimu { + + var integer v_targetResourceIndex := -1; + var ResponsePrimitive v_response; + + //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_targetResourceIndex := f_getResourceIndex(vc_request.primitive.requestPrimitive.to_); + if(v_targetResourceIndex == p_resourceIndex) { + setverdict(pass, __SCOPE__&":INFO: Resource updated successfuly"); + v_response := valueof(m_responsePrimitive(int2004,vc_request.primitive.requestPrimitive.requestIdentifier)); + v_response.from_ := vc_localResourcesList[vc_cSEBaseIndex].resource.cSEBase.cSE_ID; + v_response.to_ := vc_request.primitive.requestPrimitive.from_; + f_updateLocalResource(v_targetResourceIndex, vc_request.primitive.requestPrimitive.primitiveContent); + v_response.primitiveContent := vc_localResourcesList[v_targetResourceIndex].resource; + } else { + setverdict(inconc, __SCOPE__&":INFO: Unexpected resource update"); + log(__SCOPE__&": ERROR: Resource Index not valid"); + v_response := valueof(m_responsePrimitive(int4004,vc_request.primitive.requestPrimitive.requestIdentifier)); + 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 answer while updating resource"); + } + } + + f_checkCseSimuStatus(); + + }// end f_cse_updateResourceHandler + /** * @desc Message exchange for the retrieval of a resource * @param p_resourceIndex Resource index of the resource to be retrieved @@ -1457,12 +1581,11 @@ module OneM2M_Functions { * @return Internal resource index of the created resource * @verdict */ - function f_cse_sendUpdateRequestPrimitive(in ResourceType p_resourceType, template RequestPrimitive p_requestUpdatePrimitive := m_update, integer p_parentIndex := -1) runs on AeSimu { + function f_cse_sendUpdateRequestPrimitive(in ResourceType p_resourceType, template RequestPrimitive p_requestUpdatePrimitive := m_update, integer p_targetIndex := -1) runs on AeSimu { var RequestPrimitive v_request; - var integer v_resourceIndex := -1; - v_request := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive); + v_request := f_getUpdateRequestPrimitive(p_resourceType, p_targetIndex, p_requestUpdatePrimitive); mcaPort.send(f_getMsgOutPrimitive(m_request(v_request))); @@ -1613,7 +1736,7 @@ module OneM2M_Functions { setverdict(fail, __SCOPE__ & ":ERROR: Notification received but the content doesn't match"); } //Send response in any case - v_responsePrimitive := valueof(m_responseNotification(int2001, omit)); + v_responsePrimitive := valueof(m_responseNotification(int2000, omit)); v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier; mcaPortIn.send(f_getMsgOutPrimitive(m_response(v_responsePrimitive))); } @@ -1645,14 +1768,14 @@ module OneM2M_Functions { [] mcaPortIn.receive(mw_request(mw_notifyResponsePrimitive(p_responsePrimitive))) -> value vc_request { tc_ac.stop; setverdict(pass, __SCOPE__ & ":INFO: Notification received with the expected content"); - v_responsePrimitive := valueof(m_responseNotification(int2001, omit)); + v_responsePrimitive := valueof(m_responseNotification(int2000, omit)); v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier; mcaPortIn.send(f_getMsgOutPrimitive(m_response(v_responsePrimitive))); } [] mcaPortIn.receive(mw_request(mw_notifyResponsePrimitive(?))) -> value vc_request { tc_ac.stop; setverdict(fail, __SCOPE__ & ":ERROR: Notification received but the content doesn't match"); - v_responsePrimitive := valueof(m_responseNotification(int2001, omit)); + v_responsePrimitive := valueof(m_responseNotification(int2000, omit)); v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier; mcaPortIn.send(f_getMsgOutPrimitive(m_response(v_responsePrimitive))); } @@ -1786,10 +1909,8 @@ module OneM2M_Functions { * @param p_requestPrimitive Notify request to be used for the notification * @verdict */ - function f_cse_notifyProcedure_notify(template (value) RequestPrimitive p_requestPrimitive) runs on CseSimu { + function f_cse_notifyProcedure_notify(template RequestPrimitive p_requestPrimitive) runs on CseSimu { // Local variables - - //var RequestPrimitive v_request; var ResponsePrimitive v_responsePrimitive; var integer v_resourceIndex := -1; @@ -1889,12 +2010,12 @@ module OneM2M_Functions { /** * @desc Handling of announcement of resources - * @param p_from Expected originator of the request primitive - * @param p_to Expected receiver of the request primitive + * @param p_requestPrimitive Expected announcement primitive + * @param p_responseStatusCode Response Status code to be sent as response + * @param p_expectedResourceIndex Expected target parent resource of the announcemnet * @verdict */ - //TODO To finalize this function - function f_cse_announcementProcedure_createHandler(template RequestPrimitive p_requestprimitive := ?, in ResponseStatusCode p_responseStatusCode := int2001, template(omit) integer p_expectedResourceIndex := omit) runs on CseSimu { + function f_cse_announcementProcedure_createHandler(template RequestPrimitive p_requestprimitive := ?, in ResponseStatusCode p_responseStatusCode := int2001, template(omit) integer p_expectedResourceIndex := omit) runs on CseSimu return integer{ // Local variables var MsgIn v_request; var integer v_parentIndex := vc_localRemoteCseIndex; @@ -1909,39 +2030,53 @@ module OneM2M_Functions { alt { [] mccPortIn.receive(mw_request(p_requestprimitive)) -> value v_request { tc_ac.stop; - setverdict(pass, __SCOPE__ & ":INFO: Announcement received"); - //TODO Save resource and generate required attributes - v_announcedResource:= f_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, v_parentIndex,v_request.primitive.requestPrimitive.resourceType); - v_announcedResourceIndex := f_setLocalResource(v_announcedResource, v_request.primitive.requestPrimitive.resourceType, v_parentIndex); - - if(isvalue(p_expectedResourceIndex)){ - if(p_expectedResourceIndex == f_getResourceIndex(v_request.primitive.requestPrimitive.to_)){ - 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; - } else { - setverdict(fail, __SCOPE__ & ":ERROR: Announcement Parent Resource Address not matched"); - v_responsePrimitive := valueof(m_responsePrimitive(int4000,v_request.primitive.requestPrimitive.requestIdentifier)); - v_responsePrimitive.primitiveContent := omit; - } + setverdict(pass, __SCOPE__ & ":INFO: Expected Announcement received"); + v_parentIndex := f_getResourceIndex(v_request.primitive.requestPrimitive.to_); + if(v_parentIndex == -1) { + log(__SCOPE__&": ERROR: Target resource not found"); + v_responsePrimitive := valueof(m_responsePrimitive(int4004,v_request.primitive.requestPrimitive.requestIdentifier)); + } else { - v_responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,v_request.primitive.requestPrimitive.requestIdentifier)); - if(p_responseStatusCode == int2001) { - v_responsePrimitive.primitiveContent := vc_localResourcesList[v_announcedResourceIndex].resource; + //Save resource and generate required attributes + v_announcedResource:= f_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, v_parentIndex,v_request.primitive.requestPrimitive.resourceType); + v_announcedResourceIndex := f_setLocalResource(v_announcedResource, v_request.primitive.requestPrimitive.resourceType, v_parentIndex); + + if(isvalue(p_expectedResourceIndex)){ + 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[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)); + v_responsePrimitive.primitiveContent := omit; + } } else { - v_responsePrimitive.primitiveContent := omit; + v_responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,v_request.primitive.requestPrimitive.requestIdentifier)); + if(p_responseStatusCode == int2001) { + v_responsePrimitive.primitiveContent := vc_localResourcesList[v_announcedResourceIndex].resource; + } else { + v_responsePrimitive.primitiveContent := omit; + } } } v_responsePrimitive.from_ := PX_CSE1_ID; v_responsePrimitive.to_ := v_request.primitive.requestPrimitive.from_; mccPortIn.send(f_getMsgOutPrimitive(m_response(v_responsePrimitive))); } + [] 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"); } } f_checkCseSimuStatus(); + + return v_announcedResourceIndex; } //end f_cse_announcementProcedure_createHandler @@ -2160,7 +2295,7 @@ module OneM2M_Functions { var MsgIn v_response; var RequestPrimitive v_request; - var PrimitiveContent v_remoteCSEResource; + var PrimitiveContent v_localRemoteCSEResource; //Activate defaults when running on a PTC f_cse_activateDefaults_cse1(); @@ -2175,8 +2310,8 @@ 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_remoteCSEResource := f_generateLocalResource(v_response.primitive.responsePrimitive.primitiveContent, vc_cSEBaseIndex, int16); - vc_localRemoteCseIndex := f_setLocalResource(v_remoteCSEResource, int16, vc_cSEBaseIndex); + 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)) { tc_ac.stop; @@ -2355,7 +2490,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; @@ -2366,7 +2501,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; @@ -2377,7 +2512,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; @@ -2388,18 +2523,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; @@ -2465,7 +2600,7 @@ module OneM2M_Functions { } v_myResource.contentInstance.stateTag := 0; v_myResource.contentInstance.contentSize := lengthof(v_myResource.contentInstance.content); - v_myResource.contentInstance.content := p_resource.contentInstance.content; + v_myResource.contentInstance.content := valueof(p_resource.contentInstance.content); } } @@ -2493,7 +2628,7 @@ module OneM2M_Functions { vc_localResourcesList[p_localResourceIndex].resource.remoteCSE.labels := p_resource.remoteCSE.labels; } if(ispresent(p_resource.remoteCSE.announceTo)) { - vc_localResourcesList[p_localResourceIndex].resource.remoteCSE.announceTo := p_resource.remoteCSE.announceTo; + vc_localResourcesList[p_localResourceIndex].resource.remoteCSE.announceTo := {p_resource.remoteCSE.announceTo[0] & "/" & vc_localResourcesList[vc_localRemoteCseIndex].resource.remoteCSE.resourceID & "Annc"}; } if(ispresent(p_resource.remoteCSE.announcedAttribute)) { vc_localResourcesList[p_localResourceIndex].resource.remoteCSE.announcedAttribute := p_resource.remoteCSE.announcedAttribute; @@ -2738,6 +2873,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; @@ -3185,7 +3341,7 @@ module OneM2M_Functions { if (p_resourceType == int15) {//pollingChannel //TODO - //p_request.from_ := "CnOTALLOWEDAEID"; + } if (p_resourceType == int23) {//subscription @@ -3209,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); } @@ -3685,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 @@ -3875,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 { @@ -3920,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 { @@ -3987,9 +4219,9 @@ module OneM2M_Functions { * @param MsgOut MsgOut primitive */ - function f_getMsgOutPrimitive(MsgOut p_msgOut) runs on Tester return MsgOut { + function f_getMsgOutPrimitive(template MsgOut p_msgOut) runs on Tester return MsgOut { p_msgOut.protocolBinding := vc_protocolBinding; - return p_msgOut; + return valueof(p_msgOut); } function f_sendUtPrimitive(template UtTriggerPrimitive p_utRequest, in universal charstring p_action) runs on Tester { @@ -4448,6 +4680,23 @@ module OneM2M_Functions { } return v_month; + } // end f_getMonth + + /** + * @desc Retrieve Time from a given timestamp + * @param p_timestamp Given timestamp + * @return Time + */ + function f_getTime(charstring p_timestamp) runs on Tester return integer { + + var charstring v_time := ""; + var integer i; + + for(i := 9; i <= 14; i := i+1){ + v_time := v_time & p_timestamp[i]; + } + return str2int(v_time); + } // end f_getYear /** diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index 82d398975a811f6cd2da01d098737c5f419b88b8..cb1346ba83a9af5d29b77b36cba031d40218c6f5 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -16,9 +16,8 @@ module OneM2M_Templates { import from XSD all; import from OneM2M_Types all; import from OneM2M_TypesAndValues all; - //import from OneM2M_AdditionalTypes all; import from OneM2M_Pixits all; - import from OneM2M_Functions all; + import from OneM2M_Functions all; /** @@ -586,7 +585,15 @@ module OneM2M_Templates { requestIdentifier := "m_updateRemoteCSEBase", primitiveContent := {remoteCSE := m_contentUpdateRemoteCSE} } - + + /** + * @desc Reception template for update remoteCSE resource + */ + template RequestPrimitive mw_updateRemoteCSE(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_update := { + resourceType := int16, + primitiveContent:= {remoteCSE := ?} + }; + template (value) RequestPrimitive m_updateAEAnncBase modifies m_update:= { requestIdentifier := testcasename() & "-m_updateAEAnnc", resourceType := int10002, @@ -755,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", @@ -888,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 */ @@ -978,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 := ?} }; @@ -1482,36 +1503,13 @@ module OneM2M_Templates { vendorInformation := omit }; - /* - * @desc Base NOTIFY request primitive For PolingChannel - */ - template RequestPrimitive m_notify_pch(XSD.ID p_resourceAddress) := { - operation := int5, - to_ := p_resourceAddress, - from_ := "NotInitialized", - requestIdentifier := testcasename() & "-m_notify" & f_rnd(1, 1000000), - resourceType := omit, - primitiveContent := {notification := m_contentNotification_pch}, - roleIDs := omit, - originatingTimestamp := omit, - requestExpirationTimestamp := omit, - resultExpirationTimestamp := omit, - operationExecutionTime := omit, - responseType := omit, - resultPersistence := omit, - resultContent := omit, - eventCategory := omit, - deliveryAggregation := omit, - groupRequestIdentifier := omit, - filterCriteria := omit, - discoveryResultType := omit, - tokens := omit, - tokenIDs := omit, - localTokenIDs := omit, - tokenRequestIndicator := omit, - releaseVersionIndicator := "2a", - vendorInformation := omit - }; + + /** + * @desc Base NOTIFY request primitive + */ + template RequestPrimitive m_notifyNotification(XSD.ID p_resourceAddress, Notification p_notification) modifies m_notify := { + primitiveContent := {notification := p_notification} + }; /** * @desc Base NOTIFY Aggregated request primitive @@ -1670,7 +1668,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 @@ -1690,8 +1688,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 }; @@ -1702,7 +1700,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 @@ -1812,7 +1810,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 @@ -2001,7 +1999,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 := ?, @@ -2078,7 +2076,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 := ?, @@ -2178,7 +2176,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 @@ -2337,7 +2335,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 @@ -2468,6 +2466,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 */ @@ -2478,7 +2507,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 @@ -2552,7 +2581,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 := ?, @@ -2801,7 +2830,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 @@ -2832,7 +2861,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 @@ -4390,18 +4419,9 @@ module OneM2M_Templates { iPEDiscoveryRequest := omit }; - - template Notification m_contentNotification_pch := { - notificationEvent:= omit, + template Notification m_contentNotification_subscriptionVerification(XSD.ID p_creator) modifies m_contentNotification_allOmit:= { verificationRequest := true, - subscriptionDeletion := omit, - subscriptionReference := omit, - creator :="AE_ID", - notificationForwardingURI := omit, - notificationTarget := omit, - targetRemovalRequest := omit, - targetRemovalAllowance := omit, - iPEDiscoveryRequest := omit + creator := p_creator }; template Notification mw_contentNotification_any := { diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index 383bc1439d6f17b682cb5fa3236cf77e230eeb29..7d45fc3665765798be6536bdd68a0fa5a4e35f84 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -394,7 +394,8 @@ module OneM2M_PermutationFunctions { f_cf03Up(); - //Send Trigger Mesf_generateLocalResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3); + //Send Trigger Message + v_localResource := f_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3); v_auxInteger := f_setLocalResource(v_localResource, int3, vc_cSEBaseIndex); v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_auxInteger, e_hierarchical, p_primitiveScope); f_sendUtPrimitive(v_utRequest,v_action); @@ -501,7 +502,8 @@ module OneM2M_PermutationFunctions { //Test component configuration f_cf03Up(); - //send triggeringf_generateLocalResourcelocalResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3); + //send triggering message + v_localResource := f_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3); v_containerIndex := f_setLocalResource(v_localResource, int3, vc_cSEBaseIndex); p_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_containerIndex, -, -); p_request.to_ := p_utRequest.requestPrimitive.to_; @@ -599,7 +601,8 @@ module OneM2M_PermutationFunctions { //Preamble - //Send Trf_generateLocalResourcelResource := f_ae_generateLocalResource(valueof(m_primitiveContentAe(m_contentCreateAe(omit, omit, omit, omit))), vc_cSEBaseIndex, int2); + //Send Triggering message + v_localResource := f_generateLocalResource(valueof(m_primitiveContentAe(m_contentCreateAe(omit, omit, omit, omit))), vc_cSEBaseIndex, int2); v_resourceIndex := f_setLocalResource(v_localResource, int2, vc_cSEBaseIndex); p_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_resourceIndex); f_sendUtPrimitive(p_utRequest,p_action); @@ -640,7 +643,8 @@ module OneM2M_PermutationFunctions { //Test component configuration f_cf03Up(); - //send triggering f_generateLocalResourceocalResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3); + //send triggering message + v_localResource := f_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3); v_resourceIndex := f_setLocalResource(v_localResource, int3, vc_cSEBaseIndex); p_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_resourceIndex); f_sendUtPrimitive(p_utRequest,p_action); @@ -690,7 +694,8 @@ module OneM2M_PermutationFunctions { //Test component configuration f_cf03Up(); - //send triggerinf_generateLocalResource_localResource := f_ae_generateLocalResource(valueof(p_primitiveContent), vc_cSEBaseIndex, p_resourceType); + //send triggering message + v_localResource := f_generateLocalResource(valueof(p_primitiveContent), vc_cSEBaseIndex, p_resourceType); v_resourceIndex := f_setLocalResource(v_localResource, p_resourceType, vc_cSEBaseIndex); v_utRequest := m_utRetrieve(f_getLocalResourceAddress(v_resourceIndex)); f_sendUtPrimitive(v_utRequest,p_action); @@ -2950,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)); } @@ -5200,7 +5205,7 @@ module OneM2M_PermutationFunctions { 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 @@ -5268,7 +5273,7 @@ module OneM2M_PermutationFunctions { 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 @@ -7106,26 +7111,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))); @@ -7143,6 +7152,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(); @@ -7163,21 +7174,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; @@ -7189,39 +7202,89 @@ module OneM2M_PermutationFunctions { f_cf02Down(); } //end f_CSE_ANNC_CRE_001 - function f_CSE_ANNC_CRE_002(ResourceType p_resourceType, template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestUpdatePrimitive := 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 RequestPrimitive v_request; - var integer v_parentIndex := -1; + var MsgIn v_request; + 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; - var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit); - v_ae1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_AE1)); - v_ae1.done; - - //TODO var template RequestPrimitive v_remoteCSEAnnc := mw_createAccessControlPolicyAnnc; - + // Test control // Test component configuration f_cf02UpCseSimuMaster(); // Test adapter configuration - + + //Register the CSE + f_cse_registrationRemoteCse(mw_createRemoteCSEBase); + //Preamble - v_ae1.start(f_cse_createResource(int2,v_create)); - v_ae1.done; + vc_ae1.start(f_cse_preamble_registerAe()); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_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_requestUpdatePrimitive)); - 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_updateRemoteCSE(PX_CSE_ID))) -> value v_request { + tc_ac.stop; + 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(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"); + } + } - f_cse_announcementProcedure_createHandler(p_createRequestAnnc); - // Postamble f_cse_postamble_deleteResourcesCSE(); @@ -7238,9 +7301,9 @@ module OneM2M_PermutationFunctions { var integer v_parentIndex := -1; var integer v_aeIndex := -1; var integer v_resourceIndex; - var integer v_CntAnncResourceIndex; - var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit); - v_create.primitiveContent.container.announceTo := {PX_CSE1_ID}; + var integer v_containerAnncResourceIndex; + var template RequestPrimitive v_createContainer := m_createContainerBase; + v_createContainer.primitiveContent.container.announceTo := {PX_CSE1_ID}; // Test control @@ -7251,19 +7314,21 @@ 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_aeIndex := f_cse_createResource(int2,v_create); - vc_cse1.done; + v_resourceIndex := f_cse_createResource(int3,v_createContainer, v_aeIndex); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); // Test Body - //Retrieve the parent resource index - v_CntAnncResourceIndex := f_getLatestResourceIndex(vc_cse1); - v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_parentIndex); - vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc,int4000, v_CntAnncResourceIndex)); + //Retrieve the parent resource index where contentInstanceAnnc must be created + 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))); tc_ac.start; @@ -7272,7 +7337,9 @@ module OneM2M_PermutationFunctions { tc_ac.stop; setverdict(pass, __SCOPE__, ": Resource " & int2str(enum2int(p_resourceType)) & " created successfully"); if(ispresent(v_response.primitive.responsePrimitive.primitiveContent.contentInstance.announceTo)) { - setverdict(fail, __SCOPE__, ": Resource " & int2str(enum2int(p_resourceType)) & " contains the attribute announceTo"); + if(lengthof(v_response.primitive.responsePrimitive.primitiveContent.contentInstance.announceTo) != 0) { + setverdict(fail, __SCOPE__, ": Resource " & int2str(enum2int(p_resourceType)) & " contains the attribute announceTo"); + } } } [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response { @@ -7296,55 +7363,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_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_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)); - f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -)); - v_ae1.done; + vc_ae1.start(f_cse_createResource(int2,v_create)); + v_aEAnncIndex := f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -)); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); + + v_aeIndex := f_getLatestResourceIndex(vc_ae1); // Test Body - v_ae1.start(f_cse_sendCreateRequestPrimitive(p_resourceType,p_requestCreatePrimitive, v_parentIndex)); + vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); - tc_ac.start; - alt { - [] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value v_request { - tc_ac.stop; - setverdict(pass, __SCOPE__ & ":INFO: CREATE REQUEST received"); - - if(match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(v_aEAnncIndex, e_hierarchical, e_spRelative)) or - match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(v_aEAnncIndex, e_nonHierarchical, e_spRelative))) { - setverdict(pass, __SCOPE__ & ":matching ANNC_PARENT_RESOURCE_ADDRESS"); - } else { - setverdict(fail, __SCOPE__ & ":mis-matching ANNC_PARENT_RESOURCE_ADDRESS"); - } - - } - [] tc_ac.timeout { - setverdict(fail, __SCOPE__ & ":ERROR: No CREATE REQUEST received"); - } - } + f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_aEAnncIndex); - v_ae1.done; + vc_ae1.done; // Postamble f_cse_postamble_deleteResourcesCSE(); @@ -7356,18 +7405,16 @@ 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); - 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 @@ -7375,36 +7422,71 @@ module OneM2M_PermutationFunctions { // Test adapter configuration // Register the CSE - f_cse_registerRemoteCse(m_createRemoteCSEBase); - + vc_remoteCseIndex := f_cse_registrationRemoteCse(mw_createRemoteCSEBase); + + f_checkCseSimuStatus(); + //Preamble - v_ae1.start(f_cse_createResource(int2,v_create)); - f_cse_announcementProcedure_createHandler(mw_createRemoteCSEAnnc(-, -, -)); - v_ae1.done; - + vc_ae1.start(f_cse_createResource(int2,v_create)); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); + + v_aeIndex := f_getLatestResourceIndex(vc_ae1); + + 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 - v_ae1.start(f_cse_sendCreateRequestPrimitive(p_resourceType,p_requestCreatePrimitive, v_parentIndex)); - + 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]; tc_ac.start; alt { [] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value v_request { tc_ac.stop; - setverdict(pass, __SCOPE__ & ":INFO: CREATE REQUEST received"); - - if(match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(v_aEAnncIndex, e_hierarchical, e_spRelative)) or - match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(v_aEAnncIndex, e_nonHierarchical, e_spRelative))) { - setverdict(pass, __SCOPE__ & ":matching ANNC_PARENT_RESOURCE_ADDRESS"); - } else { - setverdict(fail, __SCOPE__ & ":mis-matching ANNC_PARENT_RESOURCE_ADDRESS"); - } - + 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 CREATE REQUEST received"); + setverdict(fail, __SCOPE__ & ":ERROR: No announcement received"); } } - v_ae1.done; + vc_ae1.done; // Postamble f_cse_postamble_deleteResourcesCSE(); @@ -7416,7 +7498,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; @@ -7424,10 +7505,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 @@ -7435,35 +7513,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(vc_ae1); // Test Body - v_ae1.start(f_cse_sendCreateRequestPrimitive(p_resourceType,p_requestCreatePrimitive, v_parentIndex)); - - tc_ac.start; - alt { - [] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value v_request { - tc_ac.stop; - setverdict(pass, __SCOPE__ & ":INFO: CREATE REQUEST received"); + vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); - if(match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(v_aEAnncIndex, e_hierarchical, e_spRelative)) or - match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(v_aEAnncIndex, e_nonHierarchical, e_spRelative))) { - setverdict(pass, __SCOPE__ & ":matching ANNC_PARENT_RESOURCE_ADDRESS"); - } else { - setverdict(fail, __SCOPE__ & ":mis-matching ANNC_PARENT_RESOURCE_ADDRESS"); - } - - } - [] tc_ac.timeout { - setverdict(fail, __SCOPE__ & ":ERROR: No CREATE REQUEST received"); - } - } - - v_ae1.done; + f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, vc_localRemoteCseIndex); + + vc_ae1.done; // Postamble f_cse_postamble_deleteResourcesCSE(); @@ -7475,64 +7538,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(); - - v_ae1.start(f_cse_createResource(int2,v_create)); - v_ae1.done; + f_cf02UpCseSimuMaster(); - // Test Body - v_ae1.start(f_cse_sendCreateRequestPrimitive(p_resourceType,p_requestCreatePrimitive, v_parentIndex)); + // Test adapter configuration + // Register the CSE + vc_remoteCseIndex := f_cse_registrationRemoteCse(mw_createRemoteCSEBase); + + f_checkCseSimuStatus(); + + //Preamble + vc_ae1.start(f_cse_createResource(int2,v_create)); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); + + v_aeIndex := f_getLatestResourceIndex(vc_ae1); + + 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_createRemoteCSEAnnc(-, -, -))) -> value v_request { + [] 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: CREATE REQUEST for remoteCSEAnnc received"); + 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 CREATE REQUEST received"); + 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]; tc_ac.start; alt { [] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value v_request { tc_ac.stop; - setverdict(pass, __SCOPE__ & ":INFO: CREATE REQUEST received"); - - if(match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(v_aEAnncIndex, e_hierarchical, e_spRelative)) or - match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(v_aEAnncIndex, e_nonHierarchical, e_spRelative))) { - setverdict(pass, __SCOPE__ & ":matching ANNC_PARENT_RESOURCE_ADDRESS"); - } else { - setverdict(fail, __SCOPE__ & ":mis-matching ANNC_PARENT_RESOURCE_ADDRESS"); - } - + 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 CREATE REQUEST received"); + setverdict(fail, __SCOPE__ & ":ERROR: No announcement received"); } } - v_ae1.done; + vc_ae1.done; // Postamble f_cse_postamble_deleteResourcesCSE(); - + // Tear down f_cf02DownCseSimuMaster(); @@ -7540,17 +7630,12 @@ 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_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_ae1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_AE1)); - v_ae1.done; - v_create.primitiveContent.container.announceTo := {PX_CSE1_ID}; + v_create.primitiveContent.aE.announceTo := {PX_CSE1_ID}; // Test control @@ -7559,35 +7644,21 @@ module OneM2M_PermutationFunctions { //Test adapter configuration // Register the CSE - f_cse_registerRemoteCse(mw_createRemoteCSE); - - v_ae1.start(f_cse_createResource(int2,v_create)); - f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -)); - v_ae1.done; + 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(-, -, -)); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); + + v_aeIndex := f_getLatestResourceIndex(vc_ae1); // Test Body - v_ae1.start(f_cse_sendCreateRequestPrimitive(p_resourceType,p_requestCreatePrimitive, v_parentIndex)); - - tc_ac.start; - alt { - [] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value v_request { - tc_ac.stop; - setverdict(pass, __SCOPE__ & ":INFO: CREATE REQUEST received"); - - if(match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(v_aEAnncIndex, e_hierarchical, e_spRelative)) or - match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(v_aEAnncIndex, e_nonHierarchical, e_spRelative))) { - setverdict(pass, __SCOPE__ & ":matching ANNC_PARENT_RESOURCE_ADDRESS"); - } else { - setverdict(fail, __SCOPE__ & ":mis-matching ANNC_PARENT_RESOURCE_ADDRESS"); - } - - } - [] tc_ac.timeout { - setverdict(fail, __SCOPE__ & ":ERROR: No CREATE REQUEST received"); - } - } - - v_ae1.done; + vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); + f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_aEAnncIndex); + vc_ae1.done; + // Postamble f_cse_postamble_deleteResourcesCSE(); @@ -7598,7 +7669,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; @@ -7606,9 +7676,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}; + v_create.primitiveContent.aE.announceTo := {PX_CSE1_ID}; // Test control @@ -7617,35 +7685,19 @@ module OneM2M_PermutationFunctions { //Test adapter configuration // Register the CSE - f_cse_registerRemoteCse(mw_createRemoteCSE); - - v_ae1.start(f_cse_createResource(int2,v_create)); - f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -)); - v_ae1.done; + 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(-, -, -)); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); + + v_aeIndex := f_getLatestResourceIndex(vc_ae1); // Test Body - v_ae1.start(f_cse_sendCreateRequestPrimitive(p_resourceType,p_requestCreatePrimitive, v_parentIndex)); - - tc_ac.start; - alt { - [] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value v_request { - tc_ac.stop; - setverdict(pass, __SCOPE__ & ":INFO: CREATE REQUEST received"); - - if(match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(v_aEAnncIndex, e_hierarchical, e_spRelative)) or - match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(v_aEAnncIndex, e_nonHierarchical, e_spRelative))) { - setverdict(pass, __SCOPE__ & ":matching ANNC_PARENT_RESOURCE_ADDRESS"); - } else { - setverdict(fail, __SCOPE__ & ":mis-matching ANNC_PARENT_RESOURCE_ADDRESS"); - } - - } - [] tc_ac.timeout { - setverdict(fail, __SCOPE__ & ":ERROR: No CREATE REQUEST received"); - } - } - - v_ae1.done; + vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); + f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_aEAnncIndex); + vc_ae1.done; // Postamble f_cse_postamble_deleteResourcesCSE(); @@ -9652,9 +9704,8 @@ module OneM2M_PermutationFunctions { // Preamble v_contentResponse.uRI := ?; - - v_aeIndex := f_cse_createResource(int2, m_createAe(PX_APP_ID, -, PX_AE1_ID_STEM, -, {f_getAnnouncementTargetPoA(PX_PROTOCOL_BINDING_AE1, PX_AE1_ADDRESS, "")}), -1); // AE1 is registred + v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi); if(ispresent(p_parentRequestPrimitive)) { v_resourceIndex := f_cse_createResource(valueof(p_parentRequestPrimitive.resourceType), p_parentRequestPrimitive, v_aeIndex); p_requestPrimitive.to_ := f_getResourceAddress(v_resourceIndex); @@ -9662,8 +9713,7 @@ module OneM2M_PermutationFunctions { p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex); } p_requestPrimitive.from_ := f_getOriginator(v_aeIndex); - p_requestPrimitive.responseType.responseTypeValue := int2; //nonBlockingRequestAsynch - p_requestPrimitive.responseType.notificationURI := omit; //"...no notification target list is provided" + p_requestPrimitive.responseType := {int2, omit}; //nonBlockingRequestAsynch and no notification target list is provided" mcaPort.send(f_getMsgOutPrimitive(m_request(valueof(p_requestPrimitive)))); tc_ac.start; diff --git a/OneM2M_Testcases_CSE_Release_1.ttcn b/OneM2M_Testcases_CSE_Release_1.ttcn index bcd248e470d8fc850593325ab4e2b83b5607d7b0..a4845fded71e78db6f0f5a21294ad4b4cad19c5c 100644 --- a/OneM2M_Testcases_CSE_Release_1.ttcn +++ b/OneM2M_Testcases_CSE_Release_1.ttcn @@ -30,7 +30,18 @@ module OneM2M_Testcases_CSE_Release_1 { group helpingTestCases {//These are not part of the test suite, just for verification purposes - testcase TC_DELETE_RESOURCES() runs on AeSimu system CseSystem { + testcase TC_DELETE_RESOURCES() runs on Tester system CseSystem { + // Local variables + + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + v_ae1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_AE1)); + v_ae1.done; + + v_ae1.start(f_DELETE_RESOURCES()); + v_ae1.done; + } + + function f_DELETE_RESOURCES() runs on AeSimu system CseSystem { timer t_ac := 5.0; var integer i; @@ -694,7 +705,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 +784,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 +919,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 +1072,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 e720da808a8db21483c22abb47929293b5507fae..dddc5edca193678f8033c42e4d6cf648aca2dac3 100644 --- a/OneM2M_Testcases_CSE_Release_2.ttcn +++ b/OneM2M_Testcases_CSE_Release_2.ttcn @@ -521,7 +521,7 @@ module OneM2M_Testcases_CSE_Release_2 { //Local variables var template RequestPrimitive v_createRequest := m_createSubscriptionBase; var ResponsePrimitive v_responsePrimitive; - var RequestPrimitive v_createAEAnnc := m_createAEAnnc(omit, omit, omit, PX_CSE1_ID); + var RequestPrimitive v_createAEAnnc := valueof(m_createAEAnnc(omit, omit, omit, PX_CSE1_ID)); var CseSimu v_cse1 := CseSimu.create("CSE1") alive; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); @@ -541,7 +541,7 @@ module OneM2M_Testcases_CSE_Release_2 { //Local variables var template RequestPrimitive v_createRequest := m_createContainerBase; var ResponsePrimitive v_responsePrimitive; - var RequestPrimitive v_createAEAnnc := m_createAEAnnc(omit, omit, omit, PX_CSE1_ID); + var RequestPrimitive v_createAEAnnc := valueof(m_createAEAnnc(omit, omit, omit, PX_CSE1_ID)); var CseSimu v_cse1 := CseSimu.create("CSE1") alive; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); @@ -562,7 +562,7 @@ module OneM2M_Testcases_CSE_Release_2 { // Local variables var template RequestPrimitive v_createRequest := m_createGroupBase; var ResponsePrimitive v_responsePrimitive; - var RequestPrimitive v_createAEAnnc := m_createAEAnnc(omit, omit, omit, PX_CSE1_ID); + var RequestPrimitive v_createAEAnnc := valueof(m_createAEAnnc(omit, omit, omit, PX_CSE1_ID)); var CseSimu v_cse1 := CseSimu.create("CSE1") alive; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); @@ -582,7 +582,7 @@ module OneM2M_Testcases_CSE_Release_2 { // Local variables var template RequestPrimitive v_createRequest := m_createAcpBase; var ResponsePrimitive v_responsePrimitive; - var RequestPrimitive v_createAEAnnc := m_createAEAnnc(omit, omit, omit, PX_CSE1_ID); + var RequestPrimitive v_createAEAnnc := valueof(m_createAEAnnc(omit, omit, omit, PX_CSE1_ID)); var CseSimu v_cse1 := CseSimu.create("CSE1") alive; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); @@ -803,7 +803,7 @@ module OneM2M_Testcases_CSE_Release_2 { // Local variables var template RequestPrimitive v_createRequest := m_createTimeSeriesBase; var ResponsePrimitive v_responsePrimitive; - var RequestPrimitive v_createAEAnnc := m_createAEAnnc(omit, omit, omit, PX_CSE1_ID); + var RequestPrimitive v_createAEAnnc := valueof(m_createAEAnnc(omit, omit, omit, PX_CSE1_ID)); var CseSimu v_cse1 := CseSimu.create("CSE1") alive; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); @@ -10326,13 +10326,14 @@ module OneM2M_Testcases_CSE_Release_2 { // Local variables 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 := {f_getAnnouncementTargetPoA()}; + v_updateRequest.primitiveContent.accessControlPolicy.announceTo := {"/CSE2_ID"}; - v_cse1.start(f_CSE_ANNC_CRE_002(int1, v_createRequestAnnc, v_updateRequest));//AccessControlPolicy + v_cse1.start(f_CSE_ANNC_CRE_002(int1, v_createRequest, v_updateRequest, v_createRequestAnnc));//AccessControlPolicy v_cse1.done; } @@ -10340,13 +10341,14 @@ module OneM2M_Testcases_CSE_Release_2 { // Local variables 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 := {f_getAnnouncementTargetPoA()}; + v_updateRequest.primitiveContent.container.announceTo := {"/CSE2_ID"}; - v_cse1.start(f_CSE_ANNC_CRE_002(int3, v_createRequestAnnc, v_updateRequest));//Container + v_cse1.start(f_CSE_ANNC_CRE_002(int3, v_createRequest, v_updateRequest, v_createRequestAnnc));//Container v_cse1.done; } @@ -10354,13 +10356,14 @@ module OneM2M_Testcases_CSE_Release_2 { // Local variables 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 := {f_getAnnouncementTargetPoA()}; + v_updateRequest.primitiveContent.group_.announceTo := {"/CSE2_ID"}; - v_cse1.start(f_CSE_ANNC_CRE_002(int9, v_createRequestAnnc, v_updateRequest));//Group + v_cse1.start(f_CSE_ANNC_CRE_002(int9, v_createRequest, v_updateRequest, v_createRequestAnnc));//Group v_cse1.done; } @@ -10368,13 +10371,14 @@ module OneM2M_Testcases_CSE_Release_2 { // Local variables 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 := {f_getAnnouncementTargetPoA()}; + v_updateRequest.primitiveContent.timeSeries.announceTo := {"/CSE2_ID"}; - v_cse1.start(f_CSE_ANNC_CRE_002(int29, v_createRequestAnnc, 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 @@ -10494,7 +10498,7 @@ module OneM2M_Testcases_CSE_Release_2 { v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); v_cse1.done; - v_createRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID}; + v_createRequest.primitiveContent.accessControlPolicy.announceTo := {"/CSE2_ID"}; v_cse1.start(f_CSE_ANNC_CRE_005_CseSimu(int1, v_createRequestAnnc, v_createRequest));//AccessControlPolicy v_cse1.done; @@ -10508,7 +10512,7 @@ module OneM2M_Testcases_CSE_Release_2 { v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); v_cse1.done; - v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID}; + v_createRequest.primitiveContent.container.announceTo := {"/CSE2_ID"}; v_cse1.start(f_CSE_ANNC_CRE_005_CseSimu(int3, v_createRequestAnnc, v_createRequest));//Container v_cse1.done; @@ -10537,7 +10541,7 @@ module OneM2M_Testcases_CSE_Release_2 { v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); v_cse1.done; - v_createRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID}; + v_createRequest.primitiveContent.group_.announceTo := {"/CSE2_ID"}; v_cse1.start(f_CSE_ANNC_CRE_005_CseSimu(int9, v_createRequestAnnc, v_createRequest));//Group v_cse1.done; @@ -10551,7 +10555,7 @@ module OneM2M_Testcases_CSE_Release_2 { v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); v_cse1.done; - v_createRequest.primitiveContent.timeSeries.announceTo := {PX_CSE1_ID}; + v_createRequest.primitiveContent.timeSeries.announceTo := {"/CSE2_ID"}; v_cse1.start(f_CSE_ANNC_CRE_005_CseSimu(int29, v_createRequestAnnc, v_createRequest));//TimeSeries v_cse1.done; @@ -10565,7 +10569,7 @@ module OneM2M_Testcases_CSE_Release_2 { v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); v_cse1.done; - v_createRequest.primitiveContent.timeSeriesInstance.announceTo := {PX_CSE1_ID}; + v_createRequest.primitiveContent.timeSeriesInstance.announceTo := {"/CSE2_ID"}; v_cse1.start(f_CSE_ANNC_CRE_005_CseSimu(int30, v_createRequestAnnc, v_createRequest));//TimeSeriesInstance v_cse1.done; @@ -10586,7 +10590,7 @@ module OneM2M_Testcases_CSE_Release_2 { var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); - v_cse1.done; + v_cse1.done; v_createRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID}; v_cse1.start(f_CSE_ANNC_CRE_006_CseSimu(int1, v_createRequestAnnc, v_createRequest));//AccessControlPolicy @@ -10679,8 +10683,8 @@ module OneM2M_Testcases_CSE_Release_2 { var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); - v_cse1.done; - v_createRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID}; + v_cse1.done; + v_createRequest.primitiveContent.accessControlPolicy.announceTo := {"/CSE2_ID"}; v_cse1.start(f_CSE_ANNC_CRE_007_CseSimu(int1, v_createRequestAnnc, v_createRequest));//AccessControlPolicy v_cse1.done; @@ -10693,8 +10697,8 @@ module OneM2M_Testcases_CSE_Release_2 { var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); - v_cse1.done; - v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID}; + v_cse1.done; + v_createRequest.primitiveContent.container.announceTo := {"/CSE2_ID"}; v_cse1.start(f_CSE_ANNC_CRE_007_CseSimu(int3, v_createRequestAnnc, v_createRequest));//Container v_cse1.done; @@ -10707,8 +10711,8 @@ module OneM2M_Testcases_CSE_Release_2 { var template RequestPrimitive v_createRequestAnnc := mw_createContentInstanceAnnc; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); - v_cse1.done; - v_createRequest.primitiveContent.contentInstance.announceTo := {PX_CSE1_ID}; + v_cse1.done; + v_createRequest.primitiveContent.contentInstance.announceTo := {"/CSE2_ID"}; v_cse1.start(f_CSE_ANNC_CRE_007_CseSimu(int4, v_createRequestAnnc, v_createRequest));//ContentInstance v_cse1.done; @@ -10722,8 +10726,8 @@ module OneM2M_Testcases_CSE_Release_2 { var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); - v_cse1.done; - v_createRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID}; + v_cse1.done; + v_createRequest.primitiveContent.group_.announceTo := {"/CSE2_ID"}; v_cse1.start(f_CSE_ANNC_CRE_007_CseSimu(int9, v_createRequestAnnc, v_createRequest));//Group v_cse1.done; @@ -10736,10 +10740,9 @@ module OneM2M_Testcases_CSE_Release_2 { var template RequestPrimitive v_createRequestAnnc := mw_createTimeSeriesAnncBase; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); - v_cse1.done; - v_createRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID}; - v_createRequest.primitiveContent.accessControlPolicy.announcedAttribute := {"mbs"}; - + v_cse1.done; + v_createRequest.primitiveContent.accessControlPolicy.announceTo := {"/CSE2_ID"}; + v_cse1.start(f_CSE_ANNC_CRE_007_CseSimu(int29, v_createRequestAnnc, v_createRequest));//TimeSeries v_cse1.done; } @@ -10750,11 +10753,9 @@ module OneM2M_Testcases_CSE_Release_2 { var template RequestPrimitive v_createRequest := m_createTimeSeriesInstanceBase; var template RequestPrimitive v_createRequestAnnc := mw_createTimeSeriesInstanceAnncBase; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); - v_cse1.done; + v_cse1.done; - v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); - v_cse1.done; - v_createRequest.primitiveContent.timeSeriesInstance.announceTo := {PX_CSE1_ID}; + v_createRequest.primitiveContent.timeSeriesInstance.announceTo := {"/CSE2_ID"}; v_cse1.start(f_CSE_ANNC_CRE_007_CseSimu(int30, v_createRequestAnnc, v_createRequest));//TimeSeriesInstance v_cse1.done; @@ -10775,10 +10776,11 @@ module OneM2M_Testcases_CSE_Release_2 { var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); - v_cse1.done; + v_cse1.done; v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID}; v_createRequest.primitiveContent.container.announcedAttribute := {"mbs"}; - + v_createRequestAnnc.primitiveContent.containerAnnc.maxByteSize := ?; + v_cse1.start(f_CSE_ANNC_CRE_008_CseSimu(int3, v_createRequestAnnc, v_createRequest));//Container v_cse1.done; } @@ -10790,10 +10792,11 @@ module OneM2M_Testcases_CSE_Release_2 { var template RequestPrimitive v_createRequestAnnc := mw_createContentInstanceAnnc; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); - v_cse1.done; + v_cse1.done; v_createRequest.primitiveContent.contentInstance.announceTo := {PX_CSE1_ID}; v_createRequest.primitiveContent.contentInstance.announcedAttribute := {"cnf"}; - + v_createRequestAnnc.primitiveContent.contentInstanceAnnc.contentInfo:= ?; + v_cse1.start(f_CSE_ANNC_CRE_008_CseSimu(int4, v_createRequestAnnc, v_createRequest));//ContentInstance v_cse1.done; } @@ -10805,10 +10808,11 @@ module OneM2M_Testcases_CSE_Release_2 { var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase; v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); - v_cse1.done; + v_cse1.done; v_createRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID}; v_createRequest.primitiveContent.group_.announcedAttribute := {"mt"}; - + v_createRequestAnnc.primitiveContent.groupAnnc.memberType:= ?; + v_cse1.start(f_CSE_ANNC_CRE_008_CseSimu(int9, v_createRequestAnnc, v_createRequest));//Group v_cse1.done; @@ -10820,13 +10824,12 @@ module OneM2M_Testcases_CSE_Release_2 { 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_cse1.done; - v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); - v_cse1.done; v_createRequest.primitiveContent.timeSeries.announceTo := {PX_CSE1_ID}; v_createRequest.primitiveContent.timeSeries.announcedAttribute := {"mbs"}; - + v_createRequestAnnc.primitiveContent.timeSeriesAnnc.maxByteSize := ?; + v_cse1.start(f_CSE_ANNC_CRE_008_CseSimu(int29, v_createRequestAnnc, v_createRequest));//TimeSeries v_cse1.done; } @@ -10837,11 +10840,12 @@ module OneM2M_Testcases_CSE_Release_2 { var template RequestPrimitive v_createRequest := m_createTimeSeriesInstanceBase; var template RequestPrimitive v_createRequestAnnc := mw_createTimeSeriesInstanceAnncBase; - v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); - v_cse1.done; + v_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); + v_cse1.done; v_createRequest.primitiveContent.timeSeriesInstance.announceTo := {PX_CSE1_ID}; v_createRequest.primitiveContent.timeSeriesInstance.announcedAttribute := {"cs"}; - + v_createRequestAnnc.primitiveContent.timeSeriesInstanceAnnc.contentSize := ?; + v_cse1.start(f_CSE_ANNC_CRE_008_CseSimu(int30, v_createRequestAnnc, v_createRequest));//TimeSeriesInstance v_cse1.done; } @@ -10859,11 +10863,12 @@ module OneM2M_Testcases_CSE_Release_2 { var CseSimu v_cse1 := CseSimu.create("CSE1") alive; 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_cse1.start(f_setProtocolBinding(PX_PROTOCOL_BINDING_CSE1)); + v_cse1.done; + v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID}; v_createRequest.primitiveContent.container.labels := {"MyLabel"}; + v_createRequestAnnc.primitiveContent.containerAnnc.labels := ?; v_cse1.start(f_CSE_ANNC_CRE_009_CseSimu(int3, v_createRequestAnnc, v_createRequest));//Container v_cse1.done; @@ -12528,6 +12533,7 @@ module OneM2M_Testcases_CSE_Release_2 { // Local variables var integer v_aeIndex := -1; var integer v_resourceIndex := -1; + var integer v_acpAuxIndex := -1; var RequestPrimitive v_request; var MsgIn v_response; var RequestPrimitive v_requestNotify; @@ -12541,20 +12547,19 @@ module OneM2M_Testcases_CSE_Release_2 { // Preamble vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase)); - vc_cse1.done; + f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); - vc_acpAuxIndex := f_cse_createAccessControlPolicyAux(-, -,-); + v_acpAuxIndex := f_cse_preamble_createAcpAux(); - //v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpAuxIndex].resource)}, {f_getAnnouncementTargetPoA("HTTP", PX_AE1_ADDRESS, "")});//AE1 is registred; - v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpAuxIndex].resource)}, -);//AE1 is registred; + v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[v_acpAuxIndex].resource)}, -);//AE1 is registred; v_resourceIndex := f_cse_createResource(int15, m_createPollingChannelBase, v_aeIndex); - v_request := valueof(m_retrievePollingRequest(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_aeIndex))); + v_request := valueof(m_retrievePollingRequest(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex))); mcaPort.send(f_getMsgOutPrimitive(m_request(v_request))); - v_requestNotify := valueof(m_notify_pch(f_getResourceAddress(v_aeIndex))); + v_requestNotify := valueof(m_notifyNotification(f_getResourceAddress(v_aeIndex), m_contentNotification_subscriptionVerification("C-Unknown-AE-ID"))); vc_cse1.start(f_cse_notifyProcedure_notify(v_requestNotify)); @@ -13630,7 +13635,7 @@ module OneM2M_Testcases_CSE_Release_2 { setverdict(inconc, __SCOPE__ & ": missingDataList attribute not present"); } else { if(ischosen(v_response.primitive.responsePrimitive.primitiveContent.timeSeries.missingDataList.alt_)) { - if(v_missingDataPointTimestamp < v_response.primitive.responsePrimitive.primitiveContent.timeSeries.missingDataList.alt_[0]) { + if(f_getTime(v_missingDataPointTimestamp) < f_getTime(v_response.primitive.responsePrimitive.primitiveContent.timeSeries.missingDataList.alt_[0])) { setverdict(pass, __SCOPE__ & ": missingData point inserted in missingDataList"); } else { setverdict(fail, __SCOPE__ & ": missingData point not inserted in missingDataList"); @@ -13701,7 +13706,7 @@ module OneM2M_Testcases_CSE_Release_2 { var XSD.NonNegativeInteger v_missingDataPointNumber := 1; var template PrimitiveContent v_contentNotification := {timeSeries := mw_contentTimeSeries(?,v_missingDataPointNumber)}; - v_eventNotificationCriteria.missingData := valueof(m_missingData(v_missingDataPointNumber, "1000")); + v_eventNotificationCriteria.missingData := valueof(m_missingData(v_missingDataPointNumber, "P60")); // Test control @@ -13805,7 +13810,7 @@ module OneM2M_Testcases_CSE_Release_2 { tc_ac.stop; setverdict(fail, __SCOPE__ & ":ERROR: Notification received"); //Send response in any case - v_responsePrimitive := valueof(m_responseNotification(int2001, omit)); + v_responsePrimitive := valueof(m_responseNotification(int2000, omit)); v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier; mcaPortIn.send(f_getMsgOutPrimitive(m_response(v_responsePrimitive))); }