diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 3138f585b33864616533fcda01e86aab701d6cc9..b49b3b272964c4ef28ff9a22bd4cfdefb1200b8d 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -867,7 +867,104 @@ module OneM2M_Functions { unmap(self:acPort, system:acPort); } //end f_cse_notifyProcedure - + + function f_cse_getResourceAddress_IsNonHierarchical(in template PrimitiveContent p_content) runs on CseTester return boolean { + var boolean v_IsNonHierarchical := false; + var integer i; + var integer v_NoOfSlashes:= -1; + var boolean v_CseScope := f_cse_getResourceAddress_IsScopeCseRelative(); + var boolean v_SpScope:= f_cse_getResourceAddress_IsScopeSpRelative(); + var boolean v_AbsScope:= f_cse_getResourceAddress_IsScopeAbsoluteRelative(); + + if(v_CseScope and PX_UNSTRUCTURED){ + for (i := 0; i < lengthof(p_content.uRIList); i:= i+1){ + if(match (p_content.uRIList[i], "/")){ + v_NoOfSlashes:= v_NoOfSlashes+1; + } + } + } else if (v_SpScope and PX_UNSTRUCTURED){ + for (i := 0; i < lengthof(p_content.uRIList); i:= i+1){ + if(match (p_content.uRIList[i], "/")){ + v_NoOfSlashes:= v_NoOfSlashes+1; + } + } + } else if (v_AbsScope and PX_UNSTRUCTURED){ + for (i := 0; i < lengthof(p_content.uRIList); i:= i+1){ + if(match (p_content.uRIList[i], "/")){ + v_NoOfSlashes:= v_NoOfSlashes+1; + } + } + } + + if ( (v_NoOfSlashes == 0) or (v_NoOfSlashes == 1) or (v_NoOfSlashes == 3)){ + v_IsNonHierarchical := true; + } + + return v_IsNonHierarchical; + } + + function f_cse_getResourceAddress_IsHierarchical(in template PrimitiveContent p_content) runs on CseTester return boolean { + var boolean v_IsHierarchical := false; + var integer i; + var integer v_NoOfSlashes:= -1; + var boolean v_CseScope := f_cse_getResourceAddress_IsScopeCseRelative(); + var boolean v_SpScope:= f_cse_getResourceAddress_IsScopeSpRelative(); + var boolean v_AbsScope:= f_cse_getResourceAddress_IsScopeAbsoluteRelative(); + + if(v_CseScope and (not (PX_UNSTRUCTURED))){ + for (i := 0; i < lengthof(p_content.uRIList); i:= i+1){ + if(match (p_content.uRIList[i], "/")){ + v_NoOfSlashes:= v_NoOfSlashes+1; + } + } + } else if (v_SpScope and (not(PX_UNSTRUCTURED))){ + for (i := 0; i < lengthof(p_content.uRIList); i:= i+1){ + if(match (p_content.uRIList[i], "/")){ + v_NoOfSlashes:= v_NoOfSlashes+1; + } + } + } else if (v_AbsScope and (not (PX_UNSTRUCTURED))){ + for (i := 0; i < lengthof(p_content.uRIList); i:= i+1){ + if(match (p_content.uRIList[i], "/")){ + v_NoOfSlashes:= v_NoOfSlashes+1; + } + } + } + + if ( (v_NoOfSlashes == 1) or (v_NoOfSlashes == 2) or (v_NoOfSlashes == 4)) { + v_IsHierarchical := true; + } + + return v_IsHierarchical; + } + + function f_cse_getResourceAddress_IsScopeCseRelative() runs on CseTester return boolean { + var boolean v_CseScope:= false; + + if (PX_ADDRESSING_FORMAT == e_cseRelative){ + v_CseScope := true; + } + + return v_CseScope; + } + + function f_cse_getResourceAddress_IsScopeSpRelative() runs on CseTester return boolean { + var boolean v_SpScope:= false; + if (PX_ADDRESSING_FORMAT == e_spRelative){ + v_SpScope := true; + } + + return v_SpScope; + } + + function f_cse_getResourceAddress_IsScopeAbsoluteRelative() runs on CseTester return boolean { + var boolean v_AbsScope:= false; + if(PX_ADDRESSING_FORMAT == e_absolute){ + v_AbsScope := true; + } + + return v_AbsScope; + } }//end group helpingFunctions diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index a07537276eb3b41b1efaf1f48ac1923efe7cf1ec..0f0d393c1cddfdf2752d2fbb10766d6391dd094f 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -2785,6 +2785,21 @@ module OneM2M_Templates { tokenRequestInformation := * }; + template ResponsePrimitive mw_responseDiscovery := { + responseStatusCode := int2000, + requestIdentifier := ?, + primitiveContent := ?, + to_ := *, + from_ := *, + originatingTimestamp := *, + resultExpirationTimestamp := *, + eventCategory := *, + contentStatus := *, + contentOffset := *, + assignedTokenIdentifiers := *, + tokenRequestInformation := * + }; + template ResponsePrimitive m_responseNotification(ResponseStatusCode p_statusCode, in template(omit) PrimitiveContent p_notification := omit) := { responseStatusCode := p_statusCode, requestIdentifier := testcasename() & "-m_responseNotification" & f_rnd(1, 1000000), diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn index 52508307c7a96f8648398ed2e1f8cd173d611350..9ce7f6b336a0f7c315ee23e3c7631cc32de86e82 100644 --- a/OneM2M_Testcases.ttcn +++ b/OneM2M_Testcases.ttcn @@ -10324,6 +10324,7 @@ module OneM2M_Testcases { var RequestPrimitive v_request; var CseTester v_notifyHandler; var integer v_ae2Index := -1; + var integer v_childResourceIndex := -1; const ResourceType c_containerResourceType := int3; // Test control @@ -10337,20 +10338,15 @@ module OneM2M_Testcases { v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred; v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex); + v_childResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_resourceIndex); v_request := valueof(m_retrieveResourceFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int1)); mcaPort.send(m_request(v_request)); tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int2000))) -> value v_response { + [] mcaPort.receive(mw_response(mw_responseDiscovery)){ tc_ac.stop; - if(not ischosen(v_response.primitive.responsePrimitive.primitiveContent.uRIList)){ - setverdict(fail, testcasename() & ": URI List Representation not present"); - } - else - { - setverdict(pass, testcasename() & ": URI List Representation available"); - } + setverdict(pass, testcasename() & ": URI List Representation available"); } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; @@ -10380,6 +10376,7 @@ module OneM2M_Testcases { var RequestPrimitive v_request; var CseTester v_notifyHandler; var integer v_ae2Index := -1; + var integer v_childResourceIndex := -1; const ResourceType c_containerResourceType := int3; // Test control @@ -10393,6 +10390,7 @@ module OneM2M_Testcases { v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred; v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex); + v_childResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_resourceIndex); v_request := valueof(m_retrieveResourceFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int1)); mcaPort.send(m_request(v_request)); tc_ac.start; @@ -10435,6 +10433,7 @@ module OneM2M_Testcases { var RequestPrimitive v_request; var CseTester v_notifyHandler; var integer v_ae2Index := -1; + var integer v_childResourceIndex := -1; const ResourceType c_containerResourceType := int3; // Test control @@ -10448,19 +10447,18 @@ module OneM2M_Testcases { v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred; v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex); + v_childResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_resourceIndex); v_request := valueof(m_retrieveResourceDiscResTypeFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int2, int1)); mcaPort.send(m_request(v_request)); tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int2000))) -> value v_response { + [] mcaPort.receive(mw_response(mw_responseDiscovery)) -> value v_response { tc_ac.stop; - if(not ischosen(v_response.primitive.responsePrimitive.primitiveContent.uRIList)){ - setverdict(fail, testcasename() & ": URI List Representation containing unstructured addresses not present"); - } - else - { - setverdict(pass, testcasename() & ": URI List Representation containing unstructured addresses available"); + if (f_cse_getResourceAddress_IsNonHierarchical(v_response.primitive.responsePrimitive.primitiveContent)){ + setverdict(pass, testcasename() & ": Unstructured addresses present in URIList representation"); + } else { + setverdict(fail, testcasename() & ": Unstructured addresses absent in URIList representation"); } } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { @@ -10540,6 +10538,7 @@ module OneM2M_Testcases { var RequestPrimitive v_request; var CseTester v_notifyHandler; var integer v_ae2Index := -1; + var integer v_childResourceIndex := -1; const ResourceType c_containerResourceType := int3; // Test control @@ -10552,7 +10551,8 @@ module OneM2M_Testcases { // Preamble v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred; - v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex); + v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex); + v_childResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_resourceIndex); v_request := valueof(m_retrieveResourceInvalidFormatOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex))); mcaPort.send(m_request(v_request)); tc_ac.start;