From f593b239e78e74a67a94d4ef353b803f05a9eb49 Mon Sep 17 00:00:00 2001 From: pkulkarni <pkulkarni75@gmail.com> Date: Thu, 8 Feb 2018 17:45:07 +0100 Subject: [PATCH] Implemented TC CSE/ANNC/CRE/003 --- LibOneM2M/OneM2M_Functions.ttcn | 14 +++++-- OneM2M_PermutationFunctions.ttcn | 59 +++++++++++++++++++++++++++++ OneM2M_Testcases_CSE_Release_2.ttcn | 18 ++++++++- 3 files changed, 86 insertions(+), 5 deletions(-) diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 1061841..e5a4de9 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -1175,28 +1175,34 @@ module OneM2M_Functions { * @verdict */ //TODO To finalize this function - function f_cse_resourceAnnouncementHandler(template RequestPrimitive p_requestprimitive := ?) runs on CseSimu { + function f_cse_resourceAnnouncementHandler(template RequestPrimitive p_requestprimitive := ?, in ResponseStatusCode p_responseStatusCode := int2001) runs on CseSimu { // Local variables var MsgIn v_request; var integer v_parentIndex := vc_localRemoteCseIndex; var integer v_announcedResourceIndex; var ResponsePrimitive v_responsePrimitive; var PrimitiveContent v_announcedResource; + var integer v_localResourceIndex := -1; tc_ac.start; 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_cse_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); - v_responsePrimitive := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier)); + v_responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,v_request.primitive.requestPrimitive.requestIdentifier)); v_responsePrimitive.from_ := PX_CSE1_ID; v_responsePrimitive.to_ := v_request.primitive.requestPrimitive.from_; - v_responsePrimitive.primitiveContent := vc_localResourcesList[vc_localRemoteCseIndex].resource; - mccPortIn.send(m_response(v_responsePrimitive)); + if(p_responseStatusCode == int2001) { + v_responsePrimitive.primitiveContent := vc_localResourcesList[vc_localRemoteCseIndex].resource; + } else { + v_responsePrimitive.primitiveContent := omit; + } + mccPortIn.send(m_response(v_responsePrimitive)); } [] tc_ac.timeout { setverdict(fail, __SCOPE__ & ":ERROR: No announcement received"); diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index 0c0c180..c5cb1e0 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -6512,6 +6512,65 @@ module OneM2M_PermutationFunctions { }//end f_CSE_ANNC_CRE_002 + function f_CSE_ANNC_CRE_003(ResourceType p_resourceType, template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit, in template RequestPrimitive p_requestUpdatePrimitive := omit) runs on AeSimu { + + // Local variables + var MsgIn v_response; + var RequestPrimitive v_request; + var integer v_parentIndex := -1; + var integer v_aeIndex := -1; + var integer v_resourceIndex; + var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit); + v_create.primitiveContent.container.announceTo := {PX_CSE1_ID}; + + // Test control + + // Test component configuration + f_cf02Up(); + + // Test adapter configuration + + //Register the CSE + vc_cse1.start(f_cse_registrationRemoteCse(mw_createRemoteCSE)); + vc_cse1.done; + + //Preamble + vc_cse1.start(f_cse_resourceAnnouncementHandler(mw_createContainerAnncBase(-, -))); + v_aeIndex := f_cse_createResource(int2,v_create); + vc_cse1.done; + + // Test Body + v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_parentIndex); + vc_cse1.start(f_cse_resourceAnnouncementHandler(p_createRequestAnnc, int4000)); + mcaPort.send(m_request(v_request)); + vc_cse1.done; + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value v_response { + 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"); + } + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response { + tc_ac.stop; + setverdict(fail, __SCOPE__, ": Wrong response status code"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__, ": No answer while creating resource type " & int2str(enum2int(p_resourceType))); + } + } + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf02Down(); + + }//end f_CSE_ANNC_CRE_003 + } //end group Create }// end group Announcement diff --git a/OneM2M_Testcases_CSE_Release_2.ttcn b/OneM2M_Testcases_CSE_Release_2.ttcn index ab2ab61..81b7c1f 100644 --- a/OneM2M_Testcases_CSE_Release_2.ttcn +++ b/OneM2M_Testcases_CSE_Release_2.ttcn @@ -6881,7 +6881,7 @@ module OneM2M_Testcases_CSE_Release_2 { var template RequestPrimitive v_createRequest := m_createContainerBase; var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase; - v_createRequest.primitiveContent.container.announceTo := {PX_CSE_ID}; + v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID}; v_ae1.start(f_CSE_ANNC_CRE_001(int3, v_createRequestAnnc, v_createRequest));//Container v_ae1.done; @@ -6930,6 +6930,22 @@ module OneM2M_Testcases_CSE_Release_2 { v_ae1.done; } } //end group g_CSE_ANNC_CRE_002 + + group g_CSE_ANNC_CRE_003 { + + testcase TC_CSE_ANNC_CRE_003() runs on Tester system CseSystem { + //Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var template RequestPrimitive v_createRequest := m_createContentInstanceBase; + var template RequestPrimitive v_createRequestAnnc := mw_createContentInstanceAnnc; + + v_createRequest.primitiveContent.contentInstance.announceTo := {PX_CSE1_ID}; + + v_ae1.start(f_CSE_ANNC_CRE_003(int4, v_createRequestAnnc, v_createRequest));//ContentInstance + v_ae1.done; + + } //end TC_CSE_ANNC_CRE_001 + } //end group g_CSE_ANNC_CRE_003 } }//end group Announcement -- GitLab