diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index a3b972ffe78fdbcd0d37914329f35ecfa6f8d0c5..f5c3f0b2d170364767b41f67bdc98d1bd6d81413 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -2686,7 +2686,7 @@ module OneM2M_Functions { f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive); f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); } - [] mccPortIn.receive(mw_request(?)) -> value vc_request { + [] mccPortIn.receive(mw_request(mw_update)) -> value vc_request { setverdict(fail, __SCOPE__ & ":ERROR: Request received with unexpected parameters"); v_responsePrimitive := valueof(m_responsePrimitive(int4000,vc_request.primitive.requestPrimitive.requestIdentifier)); f_send(e_mccPortIn, m_response(v_responsePrimitive)); @@ -2727,7 +2727,7 @@ module OneM2M_Functions { f_processDeleteRequestPrimitive(v_request.primitive.requestPrimitive); f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); } - [] mccPortIn.receive(mw_request(?)) -> value v_request { + [] mccPortIn.receive(mw_request(mw_delete())) -> value v_request { setverdict(fail, __SCOPE__ & ":ERROR: Request received with unexpected parameters"); v_responsePrimitive := valueof(m_responsePrimitive(int4000,v_request.primitive.requestPrimitive.requestIdentifier)); f_send(e_mccPortIn, m_response(v_responsePrimitive)); @@ -3510,6 +3510,12 @@ module OneM2M_Functions { v_myResource.container.stateTag := 0; v_myResource.container.currentNrOfInstances := 0; v_myResource.container.currentByteSize := 0; + if(not(ispresent(p_resource.container.maxByteSize))) { + v_myResource.container.maxByteSize := 10000; + } + if(not(ispresent(p_resource.container.maxNrOfInstances))) { + v_myResource.container.maxNrOfInstances := 10; + } } } else if(p_resourceType == int4 and ispresent(p_resource)) { //ContentInstance @@ -3851,11 +3857,31 @@ module OneM2M_Functions { if(ispresent(p_resource.accessControlPolicy.announcedAttribute)) { vc_localResourcesList[p_localResourceIndex].resource.accessControlPolicy.announcedAttribute := p_resource.accessControlPolicy.announcedAttribute; } + } else if(ischosen(vc_localResourcesList[p_localResourceIndex].resource.containerAnnc) and (ischosen(p_resource.containerAnnc))) {//ContainerAnnc + if(ispresent(p_resource.containerAnnc.expirationTime)) { + vc_localResourcesList[p_localResourceIndex].resource.containerAnnc.expirationTime := p_resource.containerAnnc.expirationTime; + } + if(ispresent(p_resource.containerAnnc.labels)) { + vc_localResourcesList[p_localResourceIndex].resource.containerAnnc.labels := p_resource.containerAnnc.labels; + } + if(ispresent(p_resource.containerAnnc.dynamicAuthorizationConsultationIDs)) { + vc_localResourcesList[p_localResourceIndex].resource.containerAnnc.dynamicAuthorizationConsultationIDs := p_resource.containerAnnc.dynamicAuthorizationConsultationIDs; + } + if(ispresent(p_resource.containerAnnc.maxNrOfInstances)) { + vc_localResourcesList[p_localResourceIndex].resource.containerAnnc.maxNrOfInstances := p_resource.containerAnnc.maxNrOfInstances; + } + if(ispresent(p_resource.containerAnnc.maxByteSize)) { + vc_localResourcesList[p_localResourceIndex].resource.containerAnnc.maxByteSize := p_resource.containerAnnc.maxByteSize; + } + if(ispresent(p_resource.containerAnnc.maxInstanceAge)) { + vc_localResourcesList[p_localResourceIndex].resource.containerAnnc.maxInstanceAge := p_resource.containerAnnc.maxInstanceAge; + } + } } //End of function /** - * @desc Creation of a resource using CseSimu + * @desc Creation of a resource using CseSimu. In case of announced resource, the original resource is created locally first. * @param p_resourceType Resource type of the resource to be created * @param p_requestPrimitive CREATE request primitive for the resource to be created * @param p_parentIndex Internal resource index which indicates the parent of the resource to be created @@ -3872,13 +3898,19 @@ module OneM2M_Functions { f_cse_activateDefaults_cse1(); //Create original resource locally if resource type is an announced variant - if(p_resourceType == int10002) { + if (p_resourceType == int10001) { + v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentAccessControlPolicy(m_contentCreateAcp), -, int1); + } else if(p_resourceType == int10002) { v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentAe(m_contentCreateAe(omit, -, PX_TS_AE1.appId, omit)), -, int2); - p_requestPrimitive.primitiveContent := f_setLink(valueof(p_requestPrimitive.primitiveContent), f_getLocalResourceAddress(v_originalResourceIndex)); } else if (p_resourceType == int10003) { v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentContainer(m_contentCreateContainer), -, int3); - p_requestPrimitive.primitiveContent := f_setLink(valueof(p_requestPrimitive.primitiveContent), f_getLocalResourceAddress(v_originalResourceIndex)); + } else if (p_resourceType == int10009) { + v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentGroup(m_contentCreateGroup(1, {"NotInitialized"}, omit, -, -, -, -, -)), -, int9); + } else if (p_resourceType == int10029) { + v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentTimeSeries(m_contentCreateTimeSeries), -, int29); } + p_requestPrimitive.primitiveContent := f_setLink(valueof(p_requestPrimitive.primitiveContent), f_getLocalResourceAddress(v_originalResourceIndex, -, e_spRelative)); + p_requestPrimitive.primitiveContent := f_setExpirationTime(valueof(p_requestPrimitive.primitiveContent), vc_localResourcesList[v_originalResourceIndex].resource); //TODO Add other resource types diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index 9567380e2fabfe183b620c19b5d10687e31909c9..2db909902fdb0b354ff46719421721acbe5c7981 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -9755,18 +9755,20 @@ module OneM2M_PermutationFunctions { v_resourceIndex := f_cse_createResource(int3, v_create, v_aeIndex); f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_resourceIndex); - } else if (p_resourceType == int30) { + //Retrieve the parent resource index + v_parentIndex := f_getLatestLocalResourceIndex(vc_cse1); + } else if (p_resourceType == int30) { v_create := m_createTimeSeriesBase; v_create.primitiveContent.timeSeries.announceTo := {PX_TS_CSE1.cseId}; vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createTimeSeriesAnnc(), -, v_parentIndex)); v_resourceIndex := f_cse_createResource(int29, v_create, v_aeIndex); f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_resourceIndex); - } else { + //Retrieve the parent resource index + v_parentIndex := f_getLatestLocalResourceIndex(vc_cse1); + } else { v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_aeIndex); } - //Retrieve the parent resource index - v_parentIndex := f_getLatestLocalResourceIndex(vc_cse1); v_responsePrimitive.responseStatusCode := int2001; } @@ -9916,7 +9918,7 @@ module OneM2M_PermutationFunctions { // Test Body vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); - f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_aEAnncIndex); + f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, -); f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); @@ -10096,7 +10098,7 @@ module OneM2M_PermutationFunctions { // Test Body vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); - f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_aEAnncIndex); + f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, -); f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); // Postamble @@ -10133,7 +10135,7 @@ module OneM2M_PermutationFunctions { // Test Body vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex)); - f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_aEAnncIndex); + f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, -); f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); // Postamble @@ -10256,16 +10258,6 @@ module OneM2M_PermutationFunctions { v_remoteCSEIndex := f_getLatestResourceIndex(vc_cse1); - //Creating resource in Hosting CSE - vc_cse1.start(f_generateAndSetLocalResource(valueof(p_originalResource), v_cseBaseIndex, p_resourceType)); - f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); - - v_originalResourceAddress := f_getLatestLocalResourceAddress(vc_cse1, -, e_spRelative); - - v_originalResourceIndex := f_getLatestLocalResource(vc_cse1); - - v_originalLocalResourceIndex := f_getLatestLocalResourceIndex(vc_cse1); - v_aeIndex := f_cse_createResource(int2,v_createAE); v_acpIndex := f_cse_createResource(int1, v_createAcp, -); // AE child resource @@ -10273,14 +10265,15 @@ module OneM2M_PermutationFunctions { if((p_resourceType == int3) or (p_resourceType == int9) or (p_resourceType == int29)) { p_createRequestAnnc := f_setAcpId(p_createRequestAnnc, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}); } - p_createRequestAnnc.primitiveContent := f_setLink(valueof(p_createRequestAnnc.primitiveContent), v_originalResourceAddress); - p_createRequestAnnc.primitiveContent := f_setExpirationTime(valueof(p_createRequestAnnc.primitiveContent), vc_resourcesList[v_originalResourceIndex].resource); + //Creation of original resource locally and then announcement of it to IUT vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(p_resourceType), p_createRequestAnnc, v_remoteCSEIndex)); f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); v_resourceAnncAddress := f_getLatestResourceAddress(vc_cse1, -, -); v_resourceAnncIndex := f_getLatestResourceIndex(vc_cse1); + v_originalLocalResourceIndex := f_getLatestLocalResourceIndex(vc_cse1); + v_originalResourceIndex := f_getLatestLocalResource(vc_cse1); v_request := m_retrieve(v_resourceAnncAddress, f_getOriginator(v_aeIndex)); v_request.resultContent := int7; @@ -10424,7 +10417,7 @@ module OneM2M_PermutationFunctions { tc_ac.stop; setverdict(pass, __SCOPE__ & ":INFO: Announcement deletion received"); - f_processDeleteRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex); + f_processDeleteRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex); f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); } [] tc_ac.timeout { @@ -10559,7 +10552,7 @@ module OneM2M_PermutationFunctions { tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004, p_updateResponse), {*, "announceAttribute", *})) -> value vc_response { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004, p_updateResponse))) -> value vc_response { tc_ac.stop; setverdict(pass, __SCOPE__ & ": Resource updated successfully"); @@ -10625,18 +10618,25 @@ module OneM2M_PermutationFunctions { tc_ac.start; alt { + [] mccPortIn.receive(mw_request(p_updateRequestAnnc, {p_nullFields[0].name})) -> value vc_request { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ":INFO: Update for announced resource received"); + + f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex); + f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); + } [] mccPortIn.receive(mw_request(p_updateRequestAnnc)) -> value vc_request { tc_ac.stop; - setverdict(pass, __SCOPE__ & ":INFO: Announcement received"); + setverdict(fail, __SCOPE__ & ":ERROR: Update for announced resource received but not deannouncing attribute"); - f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex); + f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex); f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); } [] mccPortIn.receive(mw_request(mw_update)) -> value vc_request { tc_ac.stop; setverdict(fail, __SCOPE__ & ":ERROR: Unexpected update operation received"); - f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex); + f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex); f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); } [] tc_ac.timeout { @@ -10874,14 +10874,14 @@ module OneM2M_PermutationFunctions { tc_ac.stop; setverdict(pass, __SCOPE__ & ":INFO: Announcement received"); - f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex); + f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex); f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); } [] mccPortIn.receive(mw_request(mw_update)) -> value vc_request { tc_ac.stop; setverdict(fail, __SCOPE__ & ":ERROR: Unexpected update operation received"); - f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex); + f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex); f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); } [] tc_ac.timeout { @@ -10935,14 +10935,14 @@ module OneM2M_PermutationFunctions { tc_ac.stop; setverdict(pass, __SCOPE__ & ":INFO: Announcement received"); - f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex); + f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex); f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); } [] mccPortIn.receive(mw_request(mw_update)) -> value vc_request { tc_ac.stop; setverdict(fail, __SCOPE__ & ":ERROR: Unexpected update operation received"); - f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex); + f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex); f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); } [] tc_ac.timeout { @@ -10996,14 +10996,14 @@ module OneM2M_PermutationFunctions { tc_ac.stop; setverdict(pass, __SCOPE__ & ":INFO: Announcement received"); - f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex); + f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex); f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); } [] mccPortIn.receive(mw_request(mw_update)) -> value vc_request { tc_ac.stop; setverdict(fail, __SCOPE__ & ":ERROR: Unexpected update operation received"); - f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex); + f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex); f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); } [] tc_ac.timeout { @@ -11055,14 +11055,21 @@ module OneM2M_PermutationFunctions { tc_ac.stop; setverdict(pass, __SCOPE__ & ":INFO: Announcement received"); - f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex); + f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex); + f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); + } + [] mccPortIn.receive(mw_request(p_updateRequestAnnc)) -> value vc_request { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ":ERROR: Announcement received but not deannouncing attribute"); + + f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex);//Update function with expected index f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); } [] mccPortIn.receive(mw_request(mw_update)) -> value vc_request { tc_ac.stop; setverdict(fail, __SCOPE__ & ":ERROR: Unexpected update operation received"); - f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);//Update function with expected index + f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex);//Update function with expected index f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive)); } [] tc_ac.timeout { @@ -11115,7 +11122,7 @@ module OneM2M_PermutationFunctions { tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004, p_updateResponse), {"announcedAttribute"})) -> value vc_response { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004, p_updateResponse))) -> value vc_response { tc_ac.stop; setverdict(pass, __SCOPE__ & ": Resource updated successfully"); @@ -11179,7 +11186,7 @@ module OneM2M_PermutationFunctions { tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004, p_updateResponse), {"announceTo"})) -> value vc_response { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004, p_updateResponse))) -> value vc_response { tc_ac.stop; setverdict(pass, __SCOPE__ & ": Resource updated successfully"); }