From 4d58d27e4f766878ff35a21011a876de05ade4f5 Mon Sep 17 00:00:00 2001 From: reinaortega <miguelangel.reinaortega@etsi.org> Date: Wed, 20 Oct 2021 13:59:23 +0200 Subject: [PATCH] Fix g_CSE_DMR_001 and g_CSE_DMR_002 to include check of From parameter Signed-off-by: reinaortega <miguelangel.reinaortega@etsi.org> --- LibOneM2M/OneM2M_Functions.ttcn | 57 ++++++++++++++++++++++++++++++++ LibOneM2M/OneM2M_Templates.ttcn | 10 +++--- OneM2M_PermutationFunctions.ttcn | 20 ++++++----- 3 files changed, 73 insertions(+), 14 deletions(-) diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 3365ee8..c4cc04f 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -787,6 +787,29 @@ module OneM2M_Functions { return v_resourceIndex; } + + /** + * @desc Getting the address of the last resource saved in the vc_resourcesList + * @param p_tester Given component + */ + function f_getLatestResourceAddress(in Tester p_component, AddressingMethod p_addressingMethod := PX_ADDRESSING_METHOD, PrimitiveScope p_primitiveScope := PX_PRIMITIVE_SCOPE) runs on Tester return XSD.ID { + var XSD.ID v_resourceAddress; + + f_connectInfoPort(p_component); + + p_component.start(f_sendLatestResourceAddress(p_addressingMethod, p_primitiveScope)); + alt { + []infoPort.receive(mw_resourceAddress) -> value v_resourceAddress{ + } + } + + p_component.done; + f_disconnectInfoPort(p_component); + + return v_resourceAddress; + + } + /** * @desc Getting the latest local resource from an CseSimu component @@ -933,6 +956,16 @@ module OneM2M_Functions { } + /** + * @desc Sending the address of the last resource saved in the vc_resourcesList + */ + function f_sendLatestResourceAddress(AddressingMethod p_addressingMethod := PX_ADDRESSING_METHOD, PrimitiveScope p_primitiveScope := PX_PRIMITIVE_SCOPE) runs on Tester { + + infoPort.send(f_getResourceAddress(lengthof(vc_resourcesList)-1, p_addressingMethod, p_primitiveScope)); + + } + + /** * @desc Sending of the latest resource through InfoPort */ @@ -2371,6 +2404,12 @@ module OneM2M_Functions { v_localResourceIndex := f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive, p_responseStatusCode); f_send(e_mcc_in_port, m_response(vc_response.primitive.responsePrimitive)); } + [] mccPortIn.receive(mw_request(mw_create)) -> value vc_request { + tc_ac.stop; + v_localResourceIndex := f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive, int4000); + f_send(e_mcc_in_port, m_response(vc_response.primitive.responsePrimitive)); + setverdict(inconc, __SCOPE__&":INFO: Wrong expected create request"); + } [] tc_ac.timeout { setverdict(inconc, __SCOPE__&":INFO: No creation for resource received"); } @@ -2493,6 +2532,12 @@ module OneM2M_Functions { f_send(e_mcc_in_port, m_response(vc_response.primitive.responsePrimitive)); } + [] mccPortIn.receive(mw_request(mw_update)) -> value vc_request { + tc_ac.stop; + v_targetResourceIndex := f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, int4000); + f_send(e_mcc_in_port, m_response(vc_response.primitive.responsePrimitive)); + setverdict(inconc, __SCOPE__&":INFO: Wrong expected update request"); + } [] tc_ac.timeout { setverdict(inconc, __SCOPE__&":INFO: No answer while updating resource"); } @@ -2528,6 +2573,12 @@ module OneM2M_Functions { f_send(e_mcc_in_port, m_response(vc_response.primitive.responsePrimitive)); } + [] mccPortIn.receive(mw_request(mw_retrieve(?))) -> value vc_request { + tc_ac.stop; + v_targetResourceIndex := f_processRetrieveRequestPrimitive(vc_request.primitive.requestPrimitive, int4000); + f_send(e_mcc_in_port, m_response(vc_response.primitive.responsePrimitive)); + setverdict(inconc, __SCOPE__&":INFO: Wrong expected retrieve request"); + } [] tc_ac.timeout { setverdict(inconc, __SCOPE__&":INFO: No answer while retrieving resource"); } @@ -2642,6 +2693,12 @@ module OneM2M_Functions { f_send(e_mcc_in_port, m_response(vc_response.primitive.responsePrimitive)); } + [] mccPortIn.receive(mw_request(mw_delete)) -> value vc_request { + tc_ac.stop; + v_targetResourceIndex := f_processDeleteRequestPrimitive(vc_request.primitive.requestPrimitive, int4000); + f_send(e_mcc_in_port, m_response(vc_response.primitive.responsePrimitive)); + setverdict(inconc, __SCOPE__&":INFO: Wrong expected delete request"); + } [] tc_ac.timeout { setverdict(inconc, __SCOPE__&":INFO: No answer while retrieving resource"); } diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index f957803..872192c 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -161,10 +161,10 @@ module OneM2M_Templates { * @desc Base Receive RETRIEVE request primitive * @param p_targetResourceAddress Target resource address */ - template RequestPrimitive mw_retrieve(template XSD.ID p_targetResourceAddress) := { + template RequestPrimitive mw_retrieve(template XSD.ID p_targetResourceAddress, template XSD.ID p_from := ?) := { operation := int2, to_ := p_targetResourceAddress, - from_ := ?, + from_ := p_from, requestIdentifier := ?, resourceType := omit, primitiveContent := *, @@ -477,7 +477,7 @@ module OneM2M_Templates { }; - template RequestPrimitive mw_update(template XSD.ID p_from := *, template XSD.ID p_to := ?) := { + template RequestPrimitive mw_update(template XSD.ID p_from := ?, template XSD.ID p_to := ?) := { operation := int3, to_ := p_to, from_ := p_from, @@ -1421,10 +1421,10 @@ module OneM2M_Templates { vendorInformation := omit }; - template RequestPrimitive mw_delete(template XSD.ID p_resourceAddress := ?, template XSD.ID p_from := *) := { + template RequestPrimitive mw_delete(template XSD.ID p_resourceAddress := ?, template XSD.ID p_from := ?) := { operation := int4, to_ := p_resourceAddress, - from_ := ?, + from_ := p_from, requestIdentifier := ?, resourceType := omit, primitiveContent := omit, diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index 88464ea..1527dab 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -2339,6 +2339,7 @@ module OneM2M_PermutationFunctions { var integer v_aeIndex, v_remoteCseIndex, v_targetResourceIndex := -1; var ResponseStatusCode v_responseStatusCode := int2000; var XSD.ID v_targetResourceAddress; + var XSD.ID v_originatorResourceAddress; // Test control @@ -2359,7 +2360,8 @@ module OneM2M_PermutationFunctions { // Test Body v_aeIndex := f_getLatestResource(vc_ae1); - + v_originatorResourceAddress := f_getLatestResourceAddress(vc_ae1, e_nonHierarchical, e_spRelative); + v_targetResourceAddress := f_getLocalResourceAddress(v_targetResourceIndex, PX_ADDRESSING_METHOD, e_spRelative); p_requestPrimitive.from_ := f_getOriginator(v_aeIndex); p_requestPrimitive.to_ := v_targetResourceAddress; @@ -2377,25 +2379,25 @@ module OneM2M_PermutationFunctions { tc_ac.start; alt { - [v_responseStatusCode == int2001] mccPortIn.receive(mw_request(mw_create(-, v_targetResourceAddress))) -> value vc_request { + [v_responseStatusCode == int2001] mccPortIn.receive(mw_request(mw_create(v_originatorResourceAddress, v_targetResourceAddress))) -> value vc_request { tc_ac.stop; setverdict(pass, __SCOPE__ & ": Request primitive retargeted successfully"); f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive); f_send(e_mcc_in_port, m_response(vc_response.primitive.responsePrimitive)); } - [v_responseStatusCode == int2000] mccPortIn.receive(mw_request(mw_retrieve(v_targetResourceAddress))) -> value vc_request { + [v_responseStatusCode == int2000] mccPortIn.receive(mw_request(mw_retrieve(v_targetResourceAddress, v_originatorResourceAddress))) -> value vc_request { tc_ac.stop; setverdict(pass, __SCOPE__ & ": Request primitive retargeted successfully"); f_processRetrieveRequestPrimitive(vc_request.primitive.requestPrimitive); f_send(e_mcc_in_port, m_response(vc_response.primitive.responsePrimitive)); } - [v_responseStatusCode == int2004] mccPortIn.receive(mw_request(mw_update(-, v_targetResourceAddress))) -> value vc_request { + [v_responseStatusCode == int2004] mccPortIn.receive(mw_request(mw_update(v_originatorResourceAddress, v_targetResourceAddress))) -> value vc_request { tc_ac.stop; setverdict(pass, __SCOPE__ & ": Request primitive retargeted successfully"); f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive); f_send(e_mcc_in_port, m_response(vc_response.primitive.responsePrimitive)); } - [v_responseStatusCode == int2002] mccPortIn.receive(mw_request(mw_delete(v_targetResourceAddress))) -> value vc_request { + [v_responseStatusCode == int2002] mccPortIn.receive(mw_request(mw_delete(v_targetResourceAddress, v_originatorResourceAddress))) -> value vc_request { tc_ac.stop; setverdict(pass, __SCOPE__ & ": Request primitive retargeted successfully"); f_processDeleteRequestPrimitive(vc_request.primitive.requestPrimitive); @@ -2458,16 +2460,16 @@ module OneM2M_PermutationFunctions { if(valueof(p_requestPrimitive.operation) == int1) { v_responseStatusCode := int2001; - vc_cse1.start(f_cse_createResourceHandler(mw_create(-, v_targetResourceAddress ))); + vc_cse1.start(f_cse_createResourceHandler(mw_create(f_getResourceAddress(v_aeIndex, e_nonHierarchical, e_spRelative), v_targetResourceAddress ))); } else if(valueof(p_requestPrimitive.operation) == int2) { v_responseStatusCode := int2000; - vc_cse1.start(f_cse_retrieveResourceHandler(v_targetResourceIndex)); + vc_cse1.start(f_cse_retrieveResourceHandler(v_targetResourceIndex, mw_retrieve(v_targetResourceAddress, f_getResourceAddress(v_aeIndex, e_nonHierarchical, e_spRelative)))); } else if(valueof(p_requestPrimitive.operation) == int3) { v_responseStatusCode := int2004; - vc_cse1.start(f_cse_updateResourceHandler(v_targetResourceIndex)); + vc_cse1.start(f_cse_updateResourceHandler(v_targetResourceIndex, mw_update(f_getResourceAddress(v_aeIndex, e_nonHierarchical, e_spRelative),v_targetResourceAddress))); } else if(valueof(p_requestPrimitive.operation) == int4) { v_responseStatusCode := int2002; - vc_cse1.start(f_cse_deleteResourceHandler(v_targetResourceIndex)); + vc_cse1.start(f_cse_deleteResourceHandler(v_targetResourceIndex, mw_delete(v_targetResourceAddress,f_getResourceAddress(v_aeIndex, e_nonHierarchical, e_spRelative)))); } f_send(e_mca_port, m_request(valueof(p_requestPrimitive))); -- GitLab