diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 3e814e3a24079f96463195c9e168a9944b4960ce..024978d020340e9a02d54acf93b70dc4b1ea541a 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -1904,26 +1904,33 @@ module OneM2M_Functions { [] mccPortIn.receive(mw_request(p_requestprimitive)) -> value v_request { tc_ac.stop; setverdict(pass, __SCOPE__ & ":INFO: Expected Announcement received"); - //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; - } + 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(p_expectedResourceIndex == v_parentIndex){ + setverdict(pass, __SCOPE__ & ":INFO: Announcement Parent Resource Address matched"); + v_responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,v_request.primitive.requestPrimitive.requestIdentifier)); + v_responsePrimitive.primitiveContent := vc_localResourcesList[p_expectedResourceIndex].resource; + } 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; diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index 89e04e72b0f2577d00d0c7079b1e3cfc13803fc8..e9fe754ececfefc255d52f4d0c7a7d2d58a8f823 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -7314,7 +7314,6 @@ module OneM2M_PermutationFunctions { // 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; @@ -7337,27 +7336,12 @@ module OneM2M_PermutationFunctions { f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -)); v_ae1.done; + v_aeIndex := f_getLatestResourceIndex(v_ae1); + // Test Body - v_ae1.start(f_cse_sendCreateRequestPrimitive(p_resourceType,p_requestCreatePrimitive, v_parentIndex)); + v_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_ae1.done;