diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index f02c7a8aafeed51f8824df5fce6d3e20b50119b1..f4db4159234e2f760ddb4adcaf0f4fb5147f45ab 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -7,7 +7,7 @@ * * @author ETSI * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Functions.ttcn $ - * $Id: OneM2M_Functions.ttcn 145 2016-10-24 14:37:40Z reinaortega $ + * $Id: OneM2M_Functions.ttcn 149 2016-10-26 10:08:09Z reinaortega $ * @desc Module containing functions for oneM2M * */ @@ -60,6 +60,22 @@ module OneM2M_Functions { } // end f_cf02Up + function f_cf03Up() runs on CseTester { + + // Variables + + // Map + map(self:mcaPort, system:mcaPort); + map(self:acPort, system:acPort); + activate(a_default()); + activate(a_cse_cf01()); + + // Connect + + //Initialze the IUT + + } // end f_cf03Up + /** * @desc Ports unmapping * @verdict @@ -110,7 +126,7 @@ module OneM2M_Functions { var MsgIn v_response; var integer v_aeAuxIndex := -1; - v_request := valueof(m_createAeAux(-, p_poaList)); + v_request := valueof(m_createAeAux(p_accessControlPolicyIDs, p_poaList)); v_request.to_ := f_addPrefix(f_getResourceAddress()); mcaPort.send(m_request(v_request)); @@ -182,14 +198,14 @@ module OneM2M_Functions { if (PX_RUN_POSTAMBLE) { - for(i := 0; i < lengthof(vc_resourcesIndexToBeDeleted); i := i + 1) { - - v_resourceAddress := f_getResourceAddress(lengthof(vc_resourcesIndexToBeDeleted)-1 - i); - + for(i := lengthof(vc_resourcesIndexToBeDeleted) -1; i >=0; i := i - 1) { + + v_resourceAddress := f_getResourceAddress(vc_resourcesIndexToBeDeleted[i]); + v_request := valueof(m_deleteRequest(v_resourceAddress)); if(PX_FROM_IS_AE_ID){ - if(not(ischosen(vc_resourcesList[lengthof(vc_resourcesIndexToBeDeleted)-1 - i].resource.any_1[0].AccessControlPolicy_optional))) { + if(not(ischosen(vc_resourcesList[vc_resourcesIndexToBeDeleted[i]].resource.any_1[0].AccessControlPolicy_optional))) { v_request.from_ := vc_aeAux.aE_ID; } } @@ -443,16 +459,15 @@ module OneM2M_Functions { var integer p_locresourceIndex := p_parentIndex; p_request.from_ := f_getOriginator(p_parentIndex); - p_request.to_ := f_addPrefix(f_getResourceAddress(p_parentIndex)); - + if (p_resourceType == int1) {//AccessControlPolicy - } + if (p_resourceType == int9) {//group p_request.primitiveContent.any_1[0].Group_optional.memberIDs := {f_getResourceAddress(p_parentIndex)}; } - //@Martin + if(p_resourceType == int3){//container //when a container is created by hosting cse for storing location information, the container is seen as a location container if(PX_IS_LOC_CONTAINER){ @@ -460,10 +475,12 @@ module OneM2M_Functions { } } - if (p_resourceType == int15) {//pollingChannel p_request.from_ := vc_aeAux.aE_ID; } + + if (p_resourceType == int18) {//schedule + } if (p_resourceType == int23) {//subscription p_request.primitiveContent.any_1[0].Subscription_optional.notificationURI := {f_getResourceAddress(p_parentIndex)}; @@ -713,6 +730,37 @@ module OneM2M_Functions { return lengthof(vc_resourcesList)-1; } + + + /** + * @desc Set Acpid into the requestPrimitive + * @param p_requestPrimitive RequestPrimitive to be modified + * @param p_accessControlPolicyIDs AcpId to be set + * @return + * @verdict + */ + function f_setAcpId(template RequestPrimitive p_requestPrimitive, template AcpType p_accessControlPolicyIDs) runs on CseTester return RequestPrimitive{ + + if (ischosen(p_requestPrimitive.primitiveContent.any_1[0].AE_optional)){ + p_requestPrimitive.primitiveContent.any_1[0].AE_optional.accessControlPolicyIDs := p_accessControlPolicyIDs; + } + else if (ischosen(p_requestPrimitive.primitiveContent.any_1[0].Container_optional)){ + p_requestPrimitive.primitiveContent.any_1[0].Container_optional.accessControlPolicyIDs := p_accessControlPolicyIDs; + } + else if (ischosen(p_requestPrimitive.primitiveContent.any_1[0].Group_optional)){ + p_requestPrimitive.primitiveContent.any_1[0].Group_optional.accessControlPolicyIDs := p_accessControlPolicyIDs; + } + else if (ischosen(p_requestPrimitive.primitiveContent.any_1[0].ServiceSubscribedAppRule_optional)){ + p_requestPrimitive.primitiveContent.any_1[0].ServiceSubscribedAppRule_optional.accessControlPolicyIDs := p_accessControlPolicyIDs; + } + else if (ischosen(p_requestPrimitive.primitiveContent.any_1[0].Subscription_optional)){ + p_requestPrimitive.primitiveContent.any_1[0].Subscription_optional.accessControlPolicyIDs := p_accessControlPolicyIDs; + } + else if (ischosen(p_requestPrimitive.primitiveContent.any_1[0].LocationPolicy_optional)){ + p_requestPrimitive.primitiveContent.any_1[0].LocationPolicy_optional.accessControlPolicyIDs := p_accessControlPolicyIDs; + } + return valueof(p_requestPrimitive); + } }//end group getSetFunctions diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index a2199ae1d73244d2ec2774584fed9d08c31c7133..a7cd27492a0040c54c230aa8812451e914f0c6fd 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -7,7 +7,7 @@ * * @author ETSI * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Templates.ttcn $ - * $Id: OneM2M_Templates.ttcn 144 2016-10-24 10:28:51Z reinaortega $ + * $Id: OneM2M_Templates.ttcn 147 2016-10-25 07:52:22Z carres $ * @desc Module containing templates for oneM2M * */ @@ -387,12 +387,12 @@ module OneM2M_Templates { }; //Added by @Naum - template (value) RequestPrimitive m_createAe(XSD.ID p_appId, template (omit) AcpType p_accessControlPolicyIDs := omit,template (omit) XSD.ID p_from := omit) modifies m_create := { + template (value) RequestPrimitive m_createAe(XSD.ID p_appId, template (omit) AcpType p_accessControlPolicyIDs := omit,template (omit) XSD.ID p_from := omit, template (omit) XSD.NCName p_resourceName := c_aeAuxName, in template (omit) PoaList p_poaList := omit) modifies m_create := { from_ := p_from,//PX_AE_ID_STEM,//TODO We should use omit, "s", or "c" requestIdentifier := "m_createAe" & f_rnd(1, 1000000), resourceType := int2, primitiveContent := { - any_1 := {{AE_optional := m_contentCreateAe(p_accessControlPolicyIDs, c_aeAuxName, p_appId, omit)}} + any_1 := {{AE_optional := m_contentCreateAe(p_accessControlPolicyIDs,p_resourceName, p_appId, p_poaList)}} } }; @@ -611,7 +611,7 @@ module OneM2M_Templates { resultContent := int1 //default }; - + }//end group Create @@ -621,7 +621,7 @@ module OneM2M_Templates { operation := int4, to_ := f_addPrefix(p_resourceAddress), from_ := PX_SUPER_USER, - requestIdentifier := "m_deleteAe" & f_rnd(1, 1000000), + requestIdentifier := "m_deleteResource" & f_rnd(1, 1000000), resourceType := omit, primitiveContent := omit, roleIDs := {"1234abcd@role-issuer.com"},//TODO Find a correct value diff --git a/LibOneM2M/OneM2M_TypesAndValues.ttcn b/LibOneM2M/OneM2M_TypesAndValues.ttcn index a2b3713aca438674ad566a1989a998db04a49741..c51652e2f3d25402bc88a53eda431849e0b8a8ee 100644 --- a/LibOneM2M/OneM2M_TypesAndValues.ttcn +++ b/LibOneM2M/OneM2M_TypesAndValues.ttcn @@ -7,7 +7,7 @@ * * @author ETSI * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_TypesAndValues.ttcn $ - * $Id: OneM2M_TypesAndValues.ttcn 134 2016-10-11 09:33:13Z reinaortega $ + * $Id: OneM2M_TypesAndValues.ttcn 147 2016-10-25 07:52:22Z carres $ * @desc Module containing types and values for oneM2M * */ @@ -90,6 +90,7 @@ module OneM2M_TypesAndValues { const XSD.Integer c_CRUDNDi := 63; type NhURI ParentID; - + type record length(0 .. infinity) of RequestPrimitive RequestPrimitiveList; + type record length(1 .. infinity) of RequestPrimitiveList RequestPrimitiveMatrix; } // end of module diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn index 9b6f187cc539f22d2501453e1ae009f2a5cb08db..647df0f81db4321e31e1909bb462860237868e5d 100644 --- a/OneM2M_Testcases.ttcn +++ b/OneM2M_Testcases.ttcn @@ -7,7 +7,7 @@ * * @author ETSI * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/OneM2M_Testcases.ttcn $ - * $Id: OneM2M_Testcases.ttcn 146 2016-10-24 16:11:32Z reinaortega $ + * $Id: OneM2M_Testcases.ttcn 152 2016-10-26 13:44:06Z carres $ * @desc Module containing test cases for oneM2M * */ @@ -1084,32 +1084,54 @@ module OneM2M_Testcases { // Local variables var template RequestPrimitive v_createRequest := m_createContainerBase; var ResponsePrimitive v_responsePrimitive; + var integer v_sizeResourceTypeList; + var integer i; + var RequestPrimitiveMatrix v_requestPrimitivematrix; + + v_requestPrimitivematrix := { + {}, + {m_createAeAux(omit,omit)}, + {m_createContainerBase} + } + v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix); v_createRequest.primitiveContent.any_1[0].Container_optional.resourceName := omit; - - v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int3, v_createRequest);//Container - log(v_responsePrimitive); - - if(getverdict == pass){ - if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Container_optional.resourceName)){ - setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); - } - } + for (i := 0; i<v_sizeResourceTypeList; i := i+1){ + v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int3, v_createRequest, v_requestPrimitivematrix[i]); + log(v_responsePrimitive); + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Container_optional.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } + } + } } testcase TC_CSE_DMR_CRE_BV_001_02() runs on CseTester system CseSystem { // Local variables var template RequestPrimitive v_createRequest := m_createGroupBase; var ResponsePrimitive v_responsePrimitive; + var RequestPrimitiveMatrix v_requestPrimitivematrix; + var integer v_sizeResourceTypeList; + var integer i; - v_createRequest.primitiveContent.any_1[0].Group_optional.resourceName := omit; + //CSEBase int5, remoteCSE int16, AE int2 + v_requestPrimitivematrix := { + {}, + {m_createAeAux(omit,omit)} + } + v_sizeResourceTypeList := sizeof(v_requestPrimitivematrix); - v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int9, v_createRequest);//Group + v_createRequest.primitiveContent.any_1[0].Group_optional.resourceName := omit; - if(getverdict == pass){ - if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Group_optional.resourceName)){ - setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + for (i := 0; i<v_sizeResourceTypeList; i := i+1){ + v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int3, v_createRequest, v_requestPrimitivematrix[i]); + log(v_responsePrimitive); + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Group_optional.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } } } } @@ -1118,14 +1140,25 @@ module OneM2M_Testcases { // Local variables var template RequestPrimitive v_createRequest := m_createAcpBase; var ResponsePrimitive v_responsePrimitive; + var integer v_sizeResourceTypeList; + var integer i; + var RequestPrimitiveMatrix v_requestPrimitivematrix; + + //CSEBase int5, remoteCSE int16, AE int2 + v_requestPrimitivematrix := { + {}, + {m_createAeAux(omit,omit)} + } + v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix); v_createRequest.primitiveContent.any_1[0].AccessControlPolicy_optional.resourceName := omit; - - v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int1, v_createRequest);//AccessControlPolicy - - if(getverdict == pass){ - if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy_optional.resourceName)){ - setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + + for (i := 0; i<v_sizeResourceTypeList; i := i+1){ + v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int1, v_createRequest, v_requestPrimitivematrix[i]);//AccessControlPolicy + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy_optional.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } } } } @@ -1134,14 +1167,27 @@ module OneM2M_Testcases { // Local variables var template RequestPrimitive v_createRequest := m_createScheduleBase; var ResponsePrimitive v_responsePrimitive; + var integer v_sizeResourceTypeList; + var integer i; + var RequestPrimitiveMatrix v_requestPrimitivematrix; + +// CSEBase int5, remoteCSE int16, AE int2, subscription int23 + v_requestPrimitivematrix := { + {}, + {m_createAeAux(omit,omit)}, + {m_createSubscriptionBase} + } + v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix); v_createRequest.primitiveContent.any_1[0].Schedule_optional.resourceName := omit; - - v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int18, v_createRequest);//Schedule + + for (i := 0; i<v_sizeResourceTypeList; i := i+1){ + v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int18, v_createRequest, v_requestPrimitivematrix[i]);//Schedule - if(getverdict == pass){ - if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Schedule_optional.resourceName)){ - setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Schedule_optional.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } } } } @@ -1150,14 +1196,24 @@ module OneM2M_Testcases { // Local variables var template RequestPrimitive v_createRequest := m_createPollingChannelBase; var ResponsePrimitive v_responsePrimitive; + var integer v_sizeResourceTypeList; + var integer i; + var RequestPrimitiveMatrix v_requestPrimitivematrix; - v_createRequest.primitiveContent.any_1[0].PollingChannel_optional.resourceName := omit; - - v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int15, v_createRequest);//PollingChannel + //remoteCSE int16, AE int2 + v_requestPrimitivematrix := { + {m_createAeAux(omit,omit)} + } + v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix); - if(getverdict == pass){ - if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].PollingChannel_optional.resourceName)){ - setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + v_createRequest.primitiveContent.any_1[0].PollingChannel_optional.resourceName := omit; + + for (i := 0; i<v_sizeResourceTypeList; i := i+1){ + v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int15, v_createRequest, v_requestPrimitivematrix[i]);//PollingChannel + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].PollingChannel_optional.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } } } } @@ -1166,25 +1222,48 @@ module OneM2M_Testcases { // Local variables var template RequestPrimitive v_createRequest := m_createSubscriptionBase; var ResponsePrimitive v_responsePrimitive; + var integer v_sizeResourceTypeList; + var integer i; + var RequestPrimitiveMatrix v_requestPrimitivematrix; + + //accessControlPolicy int1, CSEBase int5, remoteCSE int16, AE int2, container int, schedule int, locationPolicy int, delivery int, request int, group int, mgmtCmd int, + // node int, m2mServiceSubscriptionProfile int, statsConfig int, statsCollect int, serviceSubscribedAppRule int + + // mgmtObj int, execInstance int, serviceSubscribedNode int, pollingChannelURI int (doesn't exist in Release2), eventConfig int, + v_requestPrimitivematrix := { + {}, + {m_createAeAux(omit,omit)}, + {m_createContainerBase}, + {m_createAcpBase}, + {m_createScheduleBase}, + {m_createGroupBase}, + {m_createLocationPolicy(int1,omit,omit,omit,omit)} + //{m_createServiceSubscribedAppRule()} //TODO set correct parameters + } + v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix); v_createRequest.primitiveContent.any_1[0].Subscription_optional.resourceName := omit; - v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int23, v_createRequest);//Subscription - - if(getverdict == pass){ - if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Subscription_optional.resourceName)){ - setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); - } + for (i := 0; i<v_sizeResourceTypeList; i := i+1){ + v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int23, v_createRequest, v_requestPrimitivematrix[i]);//Subscription + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Subscription_optional.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } + } } } - function f_CSE_DMR_CRE_BV_001(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on CseTester return ResponsePrimitive { + function f_CSE_DMR_CRE_BV_001(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive, in RequestPrimitiveList p_requestPrimitiveList) runs on CseTester return ResponsePrimitive { // Local variables var MsgIn v_response; var RequestPrimitive v_request; - - var integer v_aeIndex := -1; + var integer v_sizeResourceTypeList := lengthof(p_requestPrimitiveList); + var integer i; + var integer v_parentIndex := -1; + var integer v_aeAuxIndex := -1; + var integer v_resourceIndex := -1; // Test control @@ -1194,13 +1273,23 @@ module OneM2M_Testcases { // Test adapter configuration // Preamble - v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi); + v_aeAuxIndex := f_cse_preamble_registerAe();//c_CRUDNDi); - + for (i := 0; i<v_sizeResourceTypeList; i := i+1){ + if(match(p_requestPrimitiveList[i].resourceType, int2)){ + v_parentIndex := v_aeAuxIndex; + } + else{ + v_parentIndex := f_cse_createResource(p_requestPrimitiveList[i].resourceType, p_requestPrimitiveList[i], v_parentIndex); + if (i == 0){ + vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_parentIndex}; + } + } + } // Test Body - v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestPrimitive, v_aeIndex); + v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestPrimitive, v_parentIndex); mcaPort.send(m_request(v_request)); tc_ac.start; @@ -1208,6 +1297,10 @@ module OneM2M_Testcases { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { tc_ac.stop; setverdict(pass, testcasename() & ": Resource type " & int2str(enum2int(p_resourceType)) & " created successfuly"); + v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_parentIndex); + if (v_sizeResourceTypeList == 0){ + vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_resourceIndex}; + } } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { tc_ac.stop; @@ -1220,6 +1313,7 @@ module OneM2M_Testcases { // Postamble f_cse_postamble_deleteResources(); + vc_resourcesIndexToBeDeleted := {}; // Tear down f_cf01Down(); @@ -1237,6 +1331,8 @@ module OneM2M_Testcases { // Local variables var ResponsePrimitive v_responsePrimitive; + //CSEBase int5, remoteCSE int16, AE int2, container int3, + v_responsePrimitive := f_CSE_DMR_CRE_BV_002(int3, m_createContainerBase);//container if(getverdict == pass){ @@ -1254,6 +1350,8 @@ module OneM2M_Testcases { // Local variables var ResponsePrimitive v_responsePrimitive; + // CSEBase int5, remoteCSE int16, AE int2 + v_responsePrimitive := f_CSE_DMR_CRE_BV_002(int9, m_createGroupBase);//group if(getverdict == pass){ @@ -3342,9 +3440,9 @@ module OneM2M_Testcases { } // end g_CSE_DMR_UPD_BV_004 - group g_CSE_DMR_UPD_BO_005{ + group g_CSE_DMR_UPD_BI_005{ - testcase TC_CSE_DMR_UPD_BO_005_01() runs on CseTester system CseSystem { + testcase TC_CSE_DMR_UPD_BI_005_01() runs on CseTester system CseSystem { // Local variables var XSD.PositiveInteger v_expirationCounter := 1; var template RequestPrimitive v_updateRequest := m_updateContainerBase; @@ -3353,10 +3451,10 @@ module OneM2M_Testcases { v_updateRequest.primitiveContent.any_1[0].Container_update_invalid.expirationCounter := v_expirationCounter; - f_CSE_DMR_UPD_BO_005(int3, m_createContainerBase, v_updateRequest);//Container + f_CSE_DMR_UPD_BI_005(int3, m_createContainerBase, v_updateRequest);//Container } - testcase TC_CSE_DMR_UPD_BO_005_02() runs on CseTester system CseSystem { + testcase TC_CSE_DMR_UPD_BI_005_02() runs on CseTester system CseSystem { // Local variables var XSD.PositiveInteger v_expirationCounter := 1; var template RequestPrimitive v_updateRequest := m_updateGroupBase; @@ -3365,10 +3463,10 @@ module OneM2M_Testcases { v_updateRequest.primitiveContent.any_1[0].Group_update_invalid.expirationCounter := v_expirationCounter; - f_CSE_DMR_UPD_BO_005(int9, m_createGroupBase, v_updateRequest);//Group + f_CSE_DMR_UPD_BI_005(int9, m_createGroupBase, v_updateRequest);//Group } - testcase TC_CSE_DMR_UPD_BO_005_03() runs on CseTester system CseSystem { + testcase TC_CSE_DMR_UPD_BI_005_03() runs on CseTester system CseSystem { // Local variables var XSD.PositiveInteger v_expirationCounter := 1; var template RequestPrimitive v_updateRequest := m_updateAcpBase; @@ -3377,10 +3475,10 @@ module OneM2M_Testcases { v_updateRequest.primitiveContent.any_1[0].ACP_update_invalid.expirationCounter := v_expirationCounter; - f_CSE_DMR_UPD_BO_005(int1, m_createAcpBase, v_updateRequest);//AccessControlPolicy + f_CSE_DMR_UPD_BI_005(int1, m_createAcpBase, v_updateRequest);//AccessControlPolicy } - testcase TC_CSE_DMR_UPD_BO_005_04() runs on CseTester system CseSystem { + testcase TC_CSE_DMR_UPD_BI_005_04() runs on CseTester system CseSystem { // Local variables var XSD.PositiveInteger v_expirationCounter := 1; var template RequestPrimitive v_updateRequest := m_updateScheduleBase; @@ -3389,10 +3487,10 @@ module OneM2M_Testcases { v_updateRequest.primitiveContent.any_1[0].Schedule_update_invalid.expirationCounter := v_expirationCounter; - f_CSE_DMR_UPD_BO_005(int18, m_createScheduleBase, v_updateRequest);//Schedule + f_CSE_DMR_UPD_BI_005(int18, m_createScheduleBase, v_updateRequest);//Schedule } - testcase TC_CSE_DMR_UPD_BO_005_05() runs on CseTester system CseSystem { + testcase TC_CSE_DMR_UPD_BI_005_05() runs on CseTester system CseSystem { // Local variables var XSD.PositiveInteger v_expirationCounter := 1; var template RequestPrimitive v_updateRequest := m_updatePollingChannelBase; @@ -3401,10 +3499,10 @@ module OneM2M_Testcases { v_updateRequest.primitiveContent.any_1[0].PollingChannel_update_invalid.expirationCounter := v_expirationCounter; - f_CSE_DMR_UPD_BO_005(int15, m_createPollingChannelBase, v_updateRequest);//PollingChannel + f_CSE_DMR_UPD_BI_005(int15, m_createPollingChannelBase, v_updateRequest);//PollingChannel } - testcase TC_CSE_DMR_UPD_BO_005_06() runs on CseTester system CseSystem { + testcase TC_CSE_DMR_UPD_BI_005_06() runs on CseTester system CseSystem { // Local variables var XSD.NonNegativeInteger v_maxNrOfInstances := 5; var template RequestPrimitive v_updateRequest := m_updateSubscriptionBase; @@ -3413,10 +3511,10 @@ module OneM2M_Testcases { v_updateRequest.primitiveContent.any_1[0].Subscription_update_invalid.maxNrOfInstances := v_maxNrOfInstances; - f_CSE_DMR_UPD_BO_005(int23, m_createSubscriptionBase, v_updateRequest);//Subscription - } + f_CSE_DMR_UPD_BI_005(int23, m_createSubscriptionBase, v_updateRequest);//Subscription + } - function f_CSE_DMR_UPD_BO_005(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive) runs on CseTester { + function f_CSE_DMR_UPD_BI_005(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive) runs on CseTester { // Local variables var MsgIn v_response; @@ -3441,7 +3539,7 @@ module OneM2M_Testcases { mcaPort.send(m_request(v_request)); tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int4004))) -> value v_response { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4005))) -> value v_response { tc_ac.stop; setverdict(pass, testcasename() & ": Resource " & c_defaultResourceName & " of type " & int2str(enum2int(p_resourceType)) & " not found"); } @@ -3464,9 +3562,9 @@ module OneM2M_Testcases { // Tear down f_cf01Down(); - }//end f_CSE_DMR_UPD_BO_005 + }//end f_CSE_DMR_UPD_BI_005 - } // end g_CSE_DMR_UPD_BO_005 + } // end g_CSE_DMR_UPD_BI_005 group g_CSE_DMR_UPD_BO_006{ @@ -7102,38 +7200,80 @@ module OneM2M_Testcases { testcase TC_CSE_SUB_BV_004() runs on CseTester system CseSystem { // Local variables + var CseTester notifyHandler := CseTester.create; var MsgIn v_response; var integer v_aeIndex := -1; + var integer v_ae2Index := -1; var template RequestPrimitive v_createRequest := m_createSubscriptionBase; var RequestPrimitive v_request; var ResponsePrimitive v_responsePrimitive; - var template PrimitiveContent v_contentResponse; var template Notification v_notificationRequest := mw_contentNotificationBase; var Notification v_notificationResponse := valueof(mw_contentNotificationAllOmit); + v_responsePrimitive := valueof(m_responseNotification(int4101, v_notificationResponse)); + + // Test control // Test component configuration f_cf01Up(); - + // Test adapter configuration // Preamble - v_aeIndex := f_cse_preamble_registerAe();//c_CUDNDi); + v_aeIndex := f_cse_preamble_registerAe(omit,omit);//c_CUDNDi); // set poa to MTC adress + v_ae2Index := f_cse_createResource(int2, m_createAe(PX_APP_ID, -, PX_AE_ID_STEM, "MyAe2", omit), -1); // set poa to NotifyComponent address - //TODO verify if it is a AE or a CSE who receives the notification request see 7.5.1.2.3 TS0004 v_notificationRequest.verificationRequest := true; v_notificationResponse.creator := f_getResourceAddress(v_aeIndex); - v_notificationResponse.subscriptionReference := "I Don't know which URI is expected"; // TODO set it attribute to the correct value - v_responsePrimitive := valueof(m_responseNotification(int4101, v_notificationResponse)); - + v_notificationResponse.subscriptionReference := "I Don't know which URI is expected"; // TODO mandatory parameter + + // here appID AE1 == appID AE2 + v_request := f_getCreateRequestPrimitive(int23, v_createRequest, v_aeIndex);//Subscription - v_request.primitiveContent.any_1[0].Subscription_optional.notificationURI := {"Not Initialized"};// TODO set notificationURI to AE2 URI + v_request.primitiveContent.any_1[0].Subscription_optional.notificationURI := {f_getResourceAddress(v_ae2Index)}; + + notifyHandler.start(f_CSE_SUB_BV_004(v_notificationRequest, v_responsePrimitive)); mcaPort.send(m_request(v_request)); + tc_ac.start; alt { - [] mcaPort.receive(mw_request(mw_notify_2(v_notificationRequest))) -> value v_response { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4101))) -> value v_response { //SUBSCRIPTION_CREATOR_HAS_NO_PRIVILEGE + tc_ac.stop; + setverdict(pass, testcasename() & ": OK : Subscription creator has no privilege"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while subscribing a ressource"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Subsciption successful whereas subsciption creator has no privilege"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while creating resource"); + } + } + + //Postamble + f_cse_postamble_deleteResources(); + + //Tear down + f_cf01Down(); + + } // end TC_CSE_SUB_BV_004 + + function f_CSE_SUB_BV_004(in template Notification p_notificationRequest, in ResponsePrimitive p_responsePrimitive) runs on CseTester { + // Local variables + var MsgIn v_response; + + map(self:mcaPort, system:mcaPort); + map(self:acPort, system:acPort); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_request(mw_notify_2(p_notificationRequest))) -> value v_response { tc_ac.stop; setverdict(pass, testcasename() & ": Notification received"); } @@ -7149,35 +7289,65 @@ module OneM2M_Testcases { setverdict(inconc, testcasename() & ": No answer while deleting resource type int3 (Container) or None notification received"); } } + + mcaPort.send(m_response(p_responsePrimitive)); // AE2 shall send a response to CSE with responseStatusCode = SUBSCRIPTION_CREATOR_HAS_NO_PRIVILEGE - mcaPort.send(m_response(v_responsePrimitive)); // AE2 shall send a response to CSE with responseStatusCode = SUBSCRIPTION_CREATOR_HAS_NO_PRIVILEGE - + unmap(self:mcaPort, system:mcaPort); + unmap(self:acPort, system:acPort); + + }// end f_CSE_SUB_BV_004 + + function f_registerAe(in template (omit) PoaList p_poaList := omit) runs on CseTester return integer {//c_CRUDNDi + var RequestPrimitive v_request; + var MsgIn v_response; + var integer v_aeIndex := -1; + + if(vc_acpAuxIndex != -1) { + v_request := valueof(m_createAe(PX_APP_ID, {f_getResourceId(vc_resourcesList[vc_acpAuxIndex].resource)}, PX_AE_ID_STEM, "MyAe2", p_poaList)); + //mcaPort.send(m_request(m_createAeAux(p_name, {PX_URI_CSE & PX_CSE_NAME & "/" & PX_ACPAUX_NAME}))); + } else { + v_request := valueof(m_createAe(PX_APP_ID, -, PX_AE_ID_STEM, "MyAe2", p_poaList)); + } + + v_request.to_ := f_addPrefix(f_getResourceAddress()); + mcaPort.send(m_request(v_request)); + tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int4101))) -> value v_response { //SUBSCRIPTION_CREATOR_HAS_NO_PRIVILEGE + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { tc_ac.stop; - setverdict(pass, testcasename() & ": OK : Subscription creator has no privilege"); + log("Preamble: Application registered successfuly"); + if(ischosen(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AE_optional)) { + + v_aeIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent); + vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_aeIndex}; + + if(ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AE_optional.aE_ID)){ + f_sendAcPrimitive("AE-ID_changed", oct2char(unichar2oct(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AE_optional.aE_ID))); + } else { + f_sendAcPrimitive("AE-ID_changed", "0"); + } + }; } - [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while subscribing a ressource"); + setverdict(inconc, "Preamble: Error while registering application"); + stop; } - [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { + [] mcaPort.receive { tc_ac.stop; - setverdict(fail, testcasename() & ": Subsciption successful whereas subsciption creator has no privilege"); + setverdict(inconc, "Preamble: Unexpected message received"); + stop; } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while creating resource"); + setverdict(inconc, "Preamble: No answer while registering resource"); + stop; } - } - - //Postamble - f_cse_postamble_deleteResources(); - - //Tear down - f_cf01Down(); + } + + return v_aeIndex; - } // end TC_CSE_SUB_BV_004 + }// end function }//end group g_CSE_SUB_BV_004