diff --git a/OneM2M_Testcases_CSE_Release_4.ttcn b/OneM2M_Testcases_CSE_Release_4.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..e4b6adf9592efbbc612d7df6bbced7a2952b1456 --- /dev/null +++ b/OneM2M_Testcases_CSE_Release_4.ttcn @@ -0,0 +1,642 @@ +/** + * Copyright Notification + * No part of this document may be reproduced, in an electronic retrieval system or otherwise, except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * © 2016, oneM2M Partners Type 1 (ARIB, ATIS, CCSA, ETSI, TIA, TSDSI, TTA, TTC). + * All rights reserved. + * + * @author ETSI + * @version $URL: https://oldforge.etsi.org/svn/oneM2M/branches/Release1/ttcn/OneM2M_Testcases.ttcn $ + * $Id: OneM2M_Testcases.ttcn 347 2017-08-11 08:48:20Z reinaortega $ + * @desc Module containing test cases for oneM2M + * + */ +module OneM2M_Testcases_CSE_Release_4 { + + import from OneM2M_TestSystem all; + import from OneM2M_Templates all; + import from OneM2M_Types all; + import from OneM2M_TypesAndValues all; + import from OneM2M_Pixits all; + import from OneM2M_Pics all; + import from OneM2M_Functions all; + import from OneM2M_PermutationFunctions all; + import from XSD all; + + //Demos used for validation purposes + group oneM2M_demos { + + group helpingTestCases {//These are not part of the test suite, just for verification purposes + + testcase TC_DELETE_RESOURCES() runs on AeSimu system CseSystem { + + timer t_ac := 5.0; + var integer i; + var XSD.ID v_resourceAddress; + var RequestPrimitive v_request; + map(self:mcaPort, system:mcaPort) param (PX_TS_AE1.mcaPort); + + for (i:=0; i<lengthof(PX_RESOURCES_TO_BE_DELETED); i:= i+1) { + + v_resourceAddress := f_getResourceAddress() & "/" & PX_RESOURCES_TO_BE_DELETED[i]; + + v_request := valueof(m_delete(v_resourceAddress, PX_SUPER_AE_ID)); + + f_send(e_mcaPort, m_request(v_request)); + + t_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) { + t_ac.stop; + log(__SCOPE__ & ":Resource deleted"); + setverdict(pass); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + t_ac.stop; + log(__SCOPE__ & ":Error while deleting resource"); + setverdict(fail); + } + [] mcaPort.receive { + t_ac.stop; + log(__SCOPE__ & ":Unexpected message received"); + setverdict(inconc); + } + [] t_ac.timeout { + log(__SCOPE__ & ":No answer while deleting resource"); + setverdict(inconc); + } + } + } + + unmap(self:mcaPort, system:mcaPort); + stop; + } + + }//end group helpingTestCases + + }//end group oneM2M_demos + + group CSE { + + group Generic { + + group Create { + + } // end of group Create + + group Retrieve { + } // end of group Retrieve + + group Update { + } // end of group Update + + group Delete { + } // end of group Delete + + } // end of group Generic + + group Registration { + + + }//end Registration + + group Data_Management_and_Repository { + + group Create { + + group g_CSE_DMR_CRE_001 { + + testcase TC_CSE_DMR_CRE_001_NOD_CB() runs on Tester system CseSystem { + // Local variables + var template RequestPrimitive v_createRequest := m_createNodeBase; + var ResponsePrimitive v_responsePrimitive; + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_createRequest.primitiveContent.node.resourceName := omit; + + v_ae1.start(f_CSE_DMR_CRE_001(int14, v_createRequest, -));//Node + v_ae1.done; + + if(getverdict == pass){ v_responsePrimitive := f_getResponsePrimitive(v_ae1); + if(not ispresent(v_responsePrimitive.primitiveContent.node.resourceName)){ + setverdict(fail, __SCOPE__ & ": Error, resourceName attribute not provided"); + } + } + + } + + testcase TC_CSE_DMR_CRE_001_MGC_CB() runs on Tester system CseSystem { + // Local variables + var template RequestPrimitive v_createRequest := m_createMgmtCmdBase; + var ResponsePrimitive v_responsePrimitive; + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_createRequest.primitiveContent.mgmtCmd.resourceName := omit; + v_ae1.start(f_CSE_DMR_CRE_001(int12, v_createRequest, -));//Management Command + v_ae1.done; + + if(getverdict == pass){ v_responsePrimitive := f_getResponsePrimitive(v_ae1); + if(not ispresent(v_responsePrimitive.primitiveContent.mgmtCmd.resourceName)){ + setverdict(fail, __SCOPE__ & ": Error, resourceName attribute not provided"); + } + } + + } + + testcase TC_CSE_DMR_CRE_001_STCG_CB() runs on Tester system CseSystem { + // Local variables + var template RequestPrimitive v_createRequest := m_createStatsConfigBase; + var ResponsePrimitive v_responsePrimitive; + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_createRequest.primitiveContent.statsConfig.resourceName := omit; + v_ae1.start(f_CSE_DMR_CRE_001(int22, v_createRequest, -));//Stats Config + v_ae1.done; + + if(getverdict == pass){ v_responsePrimitive := f_getResponsePrimitive(v_ae1); + if(not ispresent(v_responsePrimitive.primitiveContent.statsConfig.resourceName)){ + setverdict(fail, __SCOPE__ & ": Error, resourceName attribute not provided"); + } + } + } + + testcase TC_CSE_DMR_CRE_001_STCL_CB() runs on Tester system CseSystem { + // Local variables + var template RequestPrimitive v_createRequest := m_createStatsCollectBase; + var ResponsePrimitive v_responsePrimitive; + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_createRequest.primitiveContent.statsCollect.resourceName := omit; + + v_ae1.start(f_CSE_DMR_CRE_001(int21, v_createRequest, -));//Stats Collect + v_ae1.done; + + if(getverdict == pass){ v_responsePrimitive := f_getResponsePrimitive(v_ae1); + if(not ispresent(v_responsePrimitive.primitiveContent.statsCollect.resourceName)){ + setverdict(fail, __SCOPE__ & ": Error, resourceName attribute not provided"); + } + } + + } + + testcase TC_CSE_DMR_CRE_001_MSSP_CB() runs on Tester system CseSystem { + // Local variables + var template RequestPrimitive v_createRequest := m_createM2mServiceSubscriptionProfileBase; + var ResponsePrimitive v_responsePrimitive; + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_createRequest.primitiveContent.m2mServiceSubscriptionProfile.resourceName := omit; + v_ae1.start(f_CSE_DMR_CRE_001(int11, v_createRequest, -));//Subscription Profile + v_ae1.done; + + if(getverdict == pass){ v_responsePrimitive := f_getResponsePrimitive(v_ae1); + if(not ispresent(v_responsePrimitive.primitiveContent.m2mServiceSubscriptionProfile.resourceName)){ + setverdict(fail, __SCOPE__ & ": Error, resourceName attribute not provided"); + } + } + + } + + testcase TC_CSE_DMR_CRE_001_ASAR_CB() runs on Tester system CseSystem { + // Local variables + var template RequestPrimitive v_createRequest := m_createServiceSubscribedAppRuleBase; + var ResponsePrimitive v_responsePrimitive; + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_createRequest.primitiveContent.serviceSubscribedAppRule.resourceName := omit; + v_ae1.start(f_CSE_DMR_CRE_001(int19, v_createRequest, -));//Service Subscribed App + v_ae1.done; + + if(getverdict == pass){ v_responsePrimitive := f_getResponsePrimitive(v_ae1); + if(not ispresent(v_responsePrimitive.primitiveContent.serviceSubscribedAppRule.resourceName)){ + setverdict(fail, __SCOPE__ & ": Error, resourceName attribute not provided"); + } + } + + } + + } // end g_CSE_DMR_CRE_001 + + + group g_CSE_DMR_CRE_022 { + + /** + * @desc Check that the IUT accepts the creation of a RESOURCE_TYPE resource with the optional attribute announceTo provided + * + */ + testcase TC_CSE_DMR_CRE_022_MGO() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var template RequestPrimitive v_createRequest := m_createMgmtObjBase; + + + v_createRequest.primitiveContent.mgmtResource.announceTo := {PX_TS_CSE1.cseId}; + + v_ae1.start(f_CSE_DMR_CRE_022(int13, v_createRequest, mw_createMgmtObjAnnc));//MgmtObj + v_ae1.done; + } + + testcase TC_CSE_DMR_CRE_022_NOD() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var template RequestPrimitive v_createRequest := m_createNodeBase; + + + v_createRequest.primitiveContent.node.announceTo := {PX_TS_CSE1.cseId}; + + v_ae1.start(f_CSE_DMR_CRE_022(int14, v_createRequest, mw_createNodeAnnc));//Node + v_ae1.done; + } + + } // end g_CSE_DMR_CRE_022 + + group g_CSE_DMR_CRE_023 { + + /** + * @desc Check that the IUT accepts the creation of a RESOURCE_TYPE resource with the optional attribute announcedAttribute provided + * + */ + testcase TC_CSE_DMR_CRE_023_MGO() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var template RequestPrimitive v_createRequest := m_createMgmtObjBase; + var RequestPrimitive v_requestPrimitive; + var XSD.String v_description := "Description of mgmtObj"; + + v_createRequest.primitiveContent.mgmtResource.announceTo := {PX_TS_CSE1.cseId}; + v_createRequest.primitiveContent.mgmtResource.description := v_description; + v_createRequest.primitiveContent.mgmtResource.announcedAttribute := {"dc"}; + + v_ae1.start(f_CSE_DMR_CRE_023(int13, v_createRequest, mw_createMgmtObjAnnc()));//MgmtObj + v_ae1.done; + + if(getverdict == pass){ + //Check if description attribute has been announced + v_requestPrimitive := f_getRequestPrimitive(v_ae1); + if (ispresent(v_requestPrimitive.primitiveContent.announcedMgmtResource.description)){ + if(v_requestPrimitive.primitiveContent.announcedMgmtResource.description != v_description){ + setverdict(fail, __SCOPE__ & ": Error: Value of description has not been announced successfully"); + }else{ + setverdict(pass, __SCOPE__ & ": Value of description has been announced successfully"); + } + }else{ + setverdict(fail, __SCOPE__ & ": Error: description has not been announced"); + } + } + } + + testcase TC_CSE_DMR_CRE_023_NOD() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var template RequestPrimitive v_createRequest := m_createNodeBase; + var RequestPrimitive v_requestPrimitive; + + v_createRequest.primitiveContent.node.announceTo := {PX_TS_CSE1.cseId}; + + //TODO node to be done. hostedCSELink attribute (OA) to be added!!! + + v_ae1.start(f_CSE_DMR_CRE_023(int14, v_createRequest, mw_createNodeAnnc));//Node + v_ae1.done; + } + + } // end g_CSE_DMR_CRE_023 + + }//end group Create + + group Retrieve { + + group g_CSE_DMR_RET_017 { + + /*testcase TC_CSE_DMR_RET_017_DLV() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + var template PrimitiveContent v_contentResponse; + + v_contentResponse.delivery := m_contentDelivery_allOmit; + v_contentResponse.delivery.parentID := ?; + v_contentResponse.delivery.creationTime := ?; + + v_ae1.start(f_CSE_DMR_RET_017(int6, m_createDeliveryBase, v_contentResponse));//Delivery + v_ae1.done; + }*/ + + testcase TC_CSE_DMR_RET_017_MGC() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + var template PrimitiveContent v_contentResponse; + + v_contentResponse.mgmtCmd := m_contentMgmtCmd_allOmit; + v_contentResponse.mgmtCmd.parentID := ?; + v_contentResponse.mgmtCmd.creationTime := ?; + + v_ae1.start(f_CSE_DMR_RET_017(int12, m_createMgmtCmdBase, v_contentResponse));//MgmtCmd + v_ae1.done; + } + + testcase TC_CSE_DMR_RET_017_NOD() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + var template PrimitiveContent v_contentResponse; + + v_contentResponse.node := m_contentNode_allOmit; + v_contentResponse.node.parentID := ?; + v_contentResponse.node.creationTime := ?; + + v_ae1.start(f_CSE_DMR_RET_017(int14, m_createNodeBase, v_contentResponse));//Node + v_ae1.done; + } + + testcase TC_CSE_DMR_RET_017_STCL() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + var template PrimitiveContent v_contentResponse; + + v_contentResponse.statsCollect := m_contentStatsCollect_allOmit; + v_contentResponse.statsCollect.parentID := ?; + v_contentResponse.statsCollect.creationTime := ?; + + v_ae1.start(f_CSE_DMR_RET_017(int21, m_createStatsCollectBase, v_contentResponse));//StatsCollect + v_ae1.done; + } + + testcase TC_CSE_DMR_RET_017_STCG() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + var template PrimitiveContent v_contentResponse; + + v_contentResponse.statsConfig := m_contentStatsConfig_allOmit; + v_contentResponse.statsConfig.parentID := ?; + v_contentResponse.statsConfig.creationTime := ?; + + v_ae1.start(f_CSE_DMR_RET_017(int22, m_createStatsConfigBase, v_contentResponse));//StatsConfig + v_ae1.done; + } + + } // end g_CSE_DMR_RET_017 + + }//end group Retrieve + + group Update { + + group g_CSE_DMR_UPD_015{ + + /** + * @desc Check that the IUT updates successfully the value of the optional attribute OPTIONAL_ATTRIBUTE of the RESOURCE_TYPE resource under CSEBase + */ + testcase TC_CSE_DMR_UPD_015_NOD_LBL() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + var Labels v_labels := {"MyLabel"}; + var template RequestPrimitive v_updateRequest := m_updateNodeBase; + var ResponsePrimitive v_responsePrimitive; + var PrimitiveContent v_primitiveContentRetrieveResource; + + v_updateRequest.primitiveContent.node.labels := v_labels; + + v_ae1.start(f_CSE_DMR_UPD_015(int14, m_createNodeBase, v_updateRequest));//Node + v_ae1.done; + + + + if(getverdict == pass){ v_responsePrimitive := f_getResponsePrimitive(v_ae1); + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.node)) { + if(v_responsePrimitive.primitiveContent.node.labels != v_labels){ + setverdict(fail, __SCOPE__ & ": Error: Labels attribute not updated correctly") + } + } + } + v_primitiveContentRetrieveResource := f_getPrimitiveContentRetrievedResource(v_ae1); + + //Check that the resource has been udpated correctly + if(ischosen(v_primitiveContentRetrieveResource.node)) { + if(v_primitiveContentRetrieveResource.node.labels != v_labels){ + setverdict(fail, __SCOPE__ & ": Error: Labels attribute not updated correctly") + } + } + } + } + + testcase TC_CSE_DMR_UPD_015_NOD_ACPI() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + var template RequestPrimitive v_updateRequest := m_updateNodeBase; + var RequestPrimitive v_updateRequestPrimitive; + var ResponsePrimitive v_responsePrimitive; + var PrimitiveContent v_primitiveContentRetrieveResource; + + + v_ae1.start(f_CSE_DMR_UPD_015(int14, m_createNodeBase, v_updateRequest, true));//Node + v_ae1.done; + + + + if(getverdict == pass){ + v_responsePrimitive := f_getResponsePrimitive(v_ae1); + + v_updateRequestPrimitive := f_getRequestPrimitive(v_ae1); + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.node)) { + if(v_responsePrimitive.primitiveContent.node.accessControlPolicyIDs != valueof(v_updateRequestPrimitive.primitiveContent.node.accessControlPolicyIDs)){ + setverdict(fail, __SCOPE__ & ": Error: Access Control Policy attribute not updated correctly") + } + } + } + v_primitiveContentRetrieveResource := f_getPrimitiveContentRetrievedResource(v_ae1); + + //Check that the resource has been udpated correctly + if(ischosen(v_primitiveContentRetrieveResource.node)) { + if(v_primitiveContentRetrieveResource.node.accessControlPolicyIDs != valueof(v_updateRequestPrimitive.primitiveContent.node.accessControlPolicyIDs)){ + setverdict(fail, __SCOPE__ & ": Error: Access Control Policy attribute not updated correctly") + } + } + } + } + + testcase TC_CSE_DMR_UPD_015_NOD_HCL() runs on Tester system CseSystem { + + /* TO BE DONE */ + } + + } // end group g_CSE_DMR_UPD_015 + + group g_CSE_DMR_UPD_016 { + + /** + * @desc Check that the IUT updates successfully the value of the attribute MANDATORY_ATTRIBUTE of the RESOURCE_TYPE resource under CSEBase + */ + testcase TC_CSE_DMR_UPD_016_NOD_ET() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + var Timestamp v_expirationTime := "21001231T012345"; + var template RequestPrimitive v_updateRequest := m_updateNodeBase; + var ResponsePrimitive v_responsePrimitive; + var PrimitiveContent v_primitiveContentRetrieveResource; + + v_updateRequest.primitiveContent.node.expirationTime := v_expirationTime; + + v_ae1.start(f_CSE_DMR_UPD_016(int14, m_createNodeBase, v_updateRequest));//Node + v_ae1.done; + + + + if(getverdict == pass){ v_responsePrimitive := f_getResponsePrimitive(v_ae1); + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.node)) { + if(v_responsePrimitive.primitiveContent.node.expirationTime != v_expirationTime){ + setverdict(fail, __SCOPE__ & ": Error: Expiration time attribute not updated correctly") + } + } + } + v_primitiveContentRetrieveResource := f_getPrimitiveContentRetrievedResource(v_ae1); + + //Check that the resource has been udpated correctly + if(ischosen(v_primitiveContentRetrieveResource.node)) { + if(v_primitiveContentRetrieveResource.node.expirationTime != v_expirationTime){ + setverdict(fail, __SCOPE__ & ": Error: Expiration time attribute not updated correctly") + } + } + } + } + + testcase TC_CSE_DMR_UPD_016_NOD_NI() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + var template RequestPrimitive v_updateRequest := m_updateNodeBase; + var XSD.Token v_targetId := "TARGET-ID"; + var ResponsePrimitive v_responsePrimitive; + var PrimitiveContent v_primitiveContentRetrieveResource; + + v_updateRequest.primitiveContent.node.nodeID := v_targetId; + + v_ae1.start(f_CSE_DMR_UPD_016(int14, m_createNodeBase, v_updateRequest));//Node + v_ae1.done; + + + + if(getverdict == pass){ v_responsePrimitive := f_getResponsePrimitive(v_ae1); + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.node)) { + if(v_responsePrimitive.primitiveContent.node.nodeID != v_targetId){ + setverdict(fail, __SCOPE__ & ": Error: NodeID attribute not updated correctly") + } + } + } + v_primitiveContentRetrieveResource := f_getPrimitiveContentRetrievedResource(v_ae1); + + //Check that the resource has been udpated correctly + if(ischosen(v_primitiveContentRetrieveResource.node)) { + if(v_primitiveContentRetrieveResource.node.nodeID != v_targetId){ + setverdict(fail, __SCOPE__ & ": Error: NodeID attribute not updated correctly") + } + } + } + } + + } // end group g_CSE_DMR_UPD_016 + + }//end group Update + + group Delete { + + }//end group Delete + + }//end group Data_Management_and_Repository + + group Subscription_And_Notification { + + group Create { + + }//end group Create + + group Notify{ + + }//end group Notify + + group Update { + + }//end group Update + + group Delete { + + + }//end group Delete + + }//end group Subscription_And_Notification + + group Security { + + group ESPrim { + + group Notify{ + + + }//end group Notify + + }//end group ESPrim + + group Roles { + + group Create{ + + }//end group Create + + group Retrieve { + + }// end of group Retrieve + + group Update { + + }//end group Update + + group Notify { + + }//end group Notify + + }//end group Roles + + group ESCertKE { + + group Notify { + + }// end of group Notify + + }// end of group ESCertKE + + group Access_Control_Policy { + + }//end group AccessControlPolicy + + }//end group Security + + + + group Device_Management { + + }//end group dataManagement + + group Dynamic_Authorization { + + }//end group Dynamic_Authorization + + + group InitialServiceProvisioning{ + + }// end group InitialServiceProvisioning + + group Semantic { + + }// end group Semantic + + }//end group CSE + +}