diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index eb65a75716f892b7c04ae09c572a0d215fb4c892..6ac8d050717d20eae31728d126237d1cd72ece0d 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/branches/Release1/ttcn/LibOneM2M/OneM2M_Functions.ttcn $ - * $Id: OneM2M_Functions.ttcn 175 2016-11-22 12:39:39Z reinaortega $ + * $Id: OneM2M_Functions.ttcn 183 2016-11-25 13:31:34Z reinaortega $ * @desc Module containing functions for oneM2M * */ @@ -712,7 +712,7 @@ module OneM2M_Functions { */ function f_getCreateRequestPrimitive(in ResourceType p_resourceType, template RequestPrimitive p_request := m_create, integer p_parentIndex) runs on CseTester return RequestPrimitive { var integer p_locresourceIndex := p_parentIndex; - var template ListOfURIs v_notificationURI := {"Not Initialized"}; + var template ListOfURIs v_defaultListOfURIs := {"Not Initialized"}; p_request.from_ := f_getOriginator(p_parentIndex); p_request.to_ := f_getResourceAddress(p_parentIndex); @@ -721,7 +721,9 @@ module OneM2M_Functions { } if (p_resourceType == int9) {//group - p_request.primitiveContent.any_1[0].Group_optional.memberIDs := {f_getResourceAddress(p_parentIndex)}; + if(match(valueof(p_request.primitiveContent.any_1[0].Group_optional.memberIDs), v_defaultListOfURIs )){ + p_request.primitiveContent.any_1[0].Group_optional.memberIDs := {f_getResourceAddress(p_parentIndex)}; + } } if(p_resourceType == int3){//container @@ -741,7 +743,7 @@ module OneM2M_Functions { } if (p_resourceType == int23) {//subscription - if(match(valueof(p_request.primitiveContent.any_1[0].Subscription_optional.notificationURI), v_notificationURI )){ + if(match(valueof(p_request.primitiveContent.any_1[0].Subscription_optional.notificationURI), v_defaultListOfURIs )){ p_request.primitiveContent.any_1[0].Subscription_optional.notificationURI := {f_getResourceAddress(p_parentIndex)}; } /*if(PX_FROM_IS_AE_ID) { diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index 46bc8acffbe73018972cc7008e795e01da80eff9..64ab4b5a0a2cedad902ed89fe34a919190b033a3 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/branches/Release1/ttcn/LibOneM2M/OneM2M_Templates.ttcn $ - * $Id: OneM2M_Templates.ttcn 175 2016-11-22 12:39:39Z reinaortega $ + * $Id: OneM2M_Templates.ttcn 183 2016-11-25 13:31:34Z reinaortega $ * @desc Module containing templates for oneM2M * */ @@ -473,15 +473,19 @@ module OneM2M_Templates { } }; - template (value) RequestPrimitive m_createGroup(XSD.ID p_parentResourceAddress, in template (omit) XSD.String p_name, in template (omit) AcpType p_accessControlPolicyIDs, in template (value) XSD.AnyURI p_memberId ) modifies m_create := { - to_ := p_parentResourceAddress, - from_ := PX_AE_ID_STEM, - requestIdentifier := "m_createGroup" & f_rnd(1, 1000000), - resourceType := int9, - primitiveContent := { - any_1 := {{Group_optional := m_contentCreateGroup (1, {"/" & PX_CSE_NAME & "/" & valueof(p_memberId)}, p_accessControlPolicyIDs)}} //TODO: p_resourceId - } - }; + template (value) RequestPrimitive m_createGroup(in template (value) XSD.NonNegativeInteger p_maxNrOfMembers, + in template (value) ListOfURIs p_memberIds := {"Not Initialized"}, + in template (omit) AcpType p_accessControlPolicyIDs, + in template (omit) MemberType p_memberType := omit, + in template (omit) ConsistencyStrategy p_consistencyStrategy := omit, + in template (omit) ListOfURIs p_membersAccessControlPolicyIDs := omit, + in template (omit) XSD.String p_name := "MyGroup") modifies m_create := { + requestIdentifier := "m_createGroup" & f_rnd(1, 1000000), + resourceType := int9, + primitiveContent := { + any_1 := {{Group_optional := m_contentCreateGroup (p_maxNrOfMembers, p_memberIds, p_accessControlPolicyIDs, p_memberType, p_consistencyStrategy, p_membersAccessControlPolicyIDs, p_name)}} //TODO: p_resourceId + } + }; /** @@ -820,38 +824,41 @@ module OneM2M_Templates { } /** - * @desc Base primitiveContent for CREATE operation for Group resource - * @param p_maxNrOfMembers Max number of members - * @param p_memberIds Member IDs - * @param p_accessControlPolicyIDs ACP IDs for the Group - * @param p_name Resource name - */ - template (value) Group_optional m_contentCreateGroup ( in template (value) XSD.NonNegativeInteger p_maxNrOfMembers, - in template (value) ListOfURIs p_memberIds, - in template (omit) AcpType p_accessControlPolicyIDs, - in template (omit) XSD.String p_name := c_defaultResourceName) := { - resourceName := p_name,//O - resourceType := omit,//NP - resourceID := omit,//NP - parentID := omit,//NP - creationTime := omit,//NP - lastModifiedTime := omit,//NP - labels := omit,//O - accessControlPolicyIDs := p_accessControlPolicyIDs,//O - expirationTime := omit,//O - announceTo := omit,//O - announcedAttribute := omit,//O - creator := omit,//O - memberType := omit,//O - currentNrOfMembers := omit,//NP - maxNrOfMembers := p_maxNrOfMembers,//M - memberIDs := p_memberIds,//M - membersAccessControlPolicyIDs := omit,//O - memberTypeValidated := omit,//NP - consistencyStrategy := omit,//O - groupName := omit,//O - choice := omit//NP - }; + * @desc Base primitiveContent for CREATE operation for Group resource + * @param p_maxNrOfMembers Max number of members + * @param p_memberIds Member IDs + * @param p_accessControlPolicyIDs ACP IDs for the Group + * @param p_name Resource name + */ + template (value) Group_optional m_contentCreateGroup ( in template (value) XSD.NonNegativeInteger p_maxNrOfMembers, + in template (value) ListOfURIs p_memberIds, + in template (omit) AcpType p_accessControlPolicyIDs, + in template (omit) MemberType p_memberType := omit, + in template (omit) ConsistencyStrategy p_consistencyStrategy := omit, + in template (omit) ListOfURIs p_membersAccessControlPolicyIDs := omit, + in template (omit) XSD.String p_name := c_defaultResourceName) := { + resourceName := p_name,//O + resourceType := omit,//NP + resourceID := omit,//NP + parentID := omit,//NP + creationTime := omit,//NP + lastModifiedTime := omit,//NP + labels := omit,//O + accessControlPolicyIDs := p_accessControlPolicyIDs,//O + expirationTime := omit,//O + announceTo := omit,//O + announcedAttribute := omit,//O + creator := omit,//O + memberType := p_memberType,//O + currentNrOfMembers := omit,//NP + maxNrOfMembers := p_maxNrOfMembers,//M + memberIDs := p_memberIds,//M + membersAccessControlPolicyIDs := p_membersAccessControlPolicyIDs,//O + memberTypeValidated := omit,//NP + consistencyStrategy := p_consistencyStrategy,//O + groupName := omit,//O + choice := omit//NP + }; /** * @desc Base primitiveContent for CREATE operation for PollingChannel resource diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn index ce5457e75bfb7f9c2188030930dec619332798a8..0405b6b4396105bf2b32c45582c3c311752c5305 100644 --- a/OneM2M_Testcases.ttcn +++ b/OneM2M_Testcases.ttcn @@ -7,7 +7,7 @@ * * @author ETSI * @version $URL: https://forge.etsi.org/svn/oneM2M/branches/Release1/ttcn/OneM2M_Testcases.ttcn $ - * $Id: OneM2M_Testcases.ttcn 175 2016-11-22 12:39:39Z reinaortega $ + * $Id: OneM2M_Testcases.ttcn 183 2016-11-25 13:31:34Z reinaortega $ * @desc Module containing test cases for oneM2M * */ @@ -5403,29 +5403,26 @@ module OneM2M_Testcases { group g_CSE_GMG_BV_001 { testcase TC_CSE_GMG_BV_001() runs on CseTester system CseSystem { - - // Local variables - var MsgIn v_response; - var RequestPrimitive v_request; - var integer v_aeIndex := -1; - var integer v_resourceIndex := -1; - - - var template RequestPrimitive v_createRequest := m_createGroupBase; - var ResponsePrimitive v_responsePrimitive; - - //v_createRequest.primitiveContent.any_1[0].Group_optional.currentNrOfMembers := 6; + // Local constants const XSD.AnyURI c_memberResourceAddress1 := "MEMBER_RESOURCE_ADDRESS_1"; const XSD.AnyURI c_memberResourceAddress2 := "MEMBER_RESOURCE_ADDRESS_2"; const XSD.AnyURI c_memberResourceAddress3 := "MEMBER_RESOURCE_ADDRESS_3"; const XSD.AnyURI c_memberResourceAddress4 := "MEMBER_RESOURCE_ADDRESS_4"; const XSD.AnyURI c_memberResourceAddress5 := "MEMBER_RESOURCE_ADDRESS_5"; const XSD.AnyURI c_memberResourceAddress6 := "MEMBER_RESOURCE_ADDRESS_6"; + const XSD.NonNegativeInteger c_maxNrOfMembers := 5; + const ListOfURIs c_memberIDs := {c_memberResourceAddress1, c_memberResourceAddress2, c_memberResourceAddress3, c_memberResourceAddress4, c_memberResourceAddress5, c_memberResourceAddress6}; - v_createRequest.primitiveContent.any_1[0].Group_optional.memberIDs := {c_memberResourceAddress1, c_memberResourceAddress2, c_memberResourceAddress3, c_memberResourceAddress4, c_memberResourceAddress5, c_memberResourceAddress6}; - v_createRequest.primitiveContent.any_1[0].Group_optional.maxNrOfMembers := 5; + // Local variables + var MsgIn v_response; + var integer v_aeIndex := -1; + var integer v_resourceIndex := -1; + var RequestPrimitive v_request; + var template RequestPrimitive v_createRequest; + var ResponsePrimitive v_responsePrimitive; + + v_createRequest := valueof(m_createGroup(c_maxNrOfMembers, c_memberIDs, omit)); - // Test control // Test component configuration @@ -5449,10 +5446,14 @@ module OneM2M_Testcases { } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while creating resource"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error resource created while member ID exceed max number of member"); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while creating resource"); } } @@ -5465,36 +5466,29 @@ module OneM2M_Testcases { } } // end group g_CSE_GMG_BV_001 - - - + // Test objective: // Check that the IUT rejects the creation of the group resource when the memberType cannot // be retrieved due to lack of privilege. group g_CSE_GMG_BV_002 { - testcase TC_CSE_GMG_BV_002() runs on CseTester system CseSystem - { - // Local constants - const ResourceType c_ResourceTypeGroup := int9; // <group> ? - const ResourceType c_ResourceTypeAcp := int1; // <ACP> - const XSD.String c_acpName := "ACP_NAME"; - const ListOfURIs c_acor := {"NA"}; - const AccessControlOperations c_allowedOperations := int63; - + testcase TC_CSE_GMG_BV_002() runs on CseTester system CseSystem { // Local variables var MsgIn v_response; - var RequestPrimitive v_request; var integer v_aeIndex := -1; + var integer v_containerIndex := -1; var integer v_acpIndex := -1; - - - var template RequestPrimitive v_createRequest := m_createGroupBase; - var template RequestPrimitive v_createAcp := m_createAcp(c_acpName, c_acpName, c_acor, c_allowedOperations); - + var RequestPrimitive v_request; + var template RequestPrimitive v_containerCreateRequest := m_createContainerBase; + var template RequestPrimitive v_createRequest; + var template RequestPrimitive v_createAcp := m_createAcp("NotInitialized", "MyACP", -, int61); //c_CUDNDi // Test control + if(not(PICS_ACP_SUPPORT)) { + setverdict(inconc, testcasename() & ": AccessControlPolicy support is required to run this test case"); + stop; + } // Test component configuration f_cf01Up(); @@ -5502,15 +5496,17 @@ module OneM2M_Testcases { // Test adapter configuration // Preamble - v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - v_request := f_getCreateRequestPrimitive(c_ResourceTypeGroup, v_createRequest, v_aeIndex); // creating group - - v_acpIndex := f_cse_createResource(c_ResourceTypeAcp, v_createAcp, v_aeIndex); - v_request.primitiveContent.any_1[0].Group_optional.accessControlPolicyIDs := {f_getResourceAddress(v_acpIndex)}; - + + v_aeIndex := f_cse_preamble_registerAe(-, -); //c_CRUDNDi + v_acpIndex := f_cse_createResource(int1, v_createAcp, v_aeIndex); // AE child resource + v_containerCreateRequest.primitiveContent.any_1[0].Container_optional.accessControlPolicyIDs := {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}; + v_containerIndex := f_cse_createResource(int3, v_containerCreateRequest, v_aeIndex); // AE child resource + + v_createRequest := m_createGroup(1, {f_getResourceAddress(v_containerIndex)}, omit, int3); + v_request := f_getCreateRequestPrimitive(int9, v_createRequest, v_aeIndex); // creating group + // Test Body - mcaPort.send(m_request(v_request)); tc_ac.start; alt { @@ -5520,7 +5516,11 @@ module OneM2M_Testcases { } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while creating resource"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error creation successful while doesn't have privileges for retrieving resource"); } [] tc_ac.timeout { setverdict(inconc, testcasename() & ": No answer while retrieving resource"); @@ -5535,76 +5535,75 @@ module OneM2M_Testcases { } } // end group g_CSE_GMG_BV_002 - - + // Test objective: // Check that the IUT rejects the update of the group resource when the // memberType cannot be retrieved due to lack of privilege. group g_CSE_GMG_BV_003 { - testcase TC_CSE_GMG_BV_003() runs on CseTester system CseSystem - { - // Local constants - const ResourceType c_ResourceTypeGroup := int9; // <group> ? - const ResourceType c_ResourceTypeAcp := int1; // <ACP> - const XSD.String c_acpName := "ACP_NAME"; - const ListOfURIs c_acor := {"NA"}; - const AccessControlOperations c_allowedOperations := int63; - + testcase TC_CSE_GMG_BV_003() runs on CseTester system CseSystem { // Local variables var MsgIn v_response; - var RequestPrimitive v_request; var integer v_aeIndex := -1; + var integer v_containerIndex1 := -1; + var integer v_containerIndex2 := -1; var integer v_acpIndex := -1; - var integer v_groupResourceIndex := -1; - - - var template RequestPrimitive v_createRequest := m_createGroupBase; + var integer v_groupIndex := -1; + var RequestPrimitive v_request; + var template RequestPrimitive v_containerCreateRequest := m_createContainer("NotInitialized", "MyContainer2"); var template RequestPrimitive v_updateRequest := m_updateGroupBase; - var template RequestPrimitive v_createAcp := m_createAcp(c_acpName, c_acpName, c_acor, c_allowedOperations); - - + var template RequestPrimitive v_createAcp := m_createAcp("NotInitialized", "MyACP", -, int61); //c_CUDNDi + // Test control - + if(not(PICS_ACP_SUPPORT)) { + setverdict(inconc, testcasename() & ": AccessControlPolicy support is required to run this test case"); + stop; + } + // Test component configuration f_cf01Up(); - + // Test adapter configuration - + // Preamble - v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - v_groupResourceIndex := f_cse_createResource(c_ResourceTypeGroup, v_createRequest, v_aeIndex); // create group resource - - v_acpIndex := f_cse_createResource(c_ResourceTypeAcp, v_createAcp, v_groupResourceIndex); - - + v_aeIndex := f_cse_preamble_registerAe(-, -); //c_CRUDNDi + v_acpIndex := f_cse_createResource(int1, v_createAcp, v_aeIndex); // AE child resource + v_containerCreateRequest.primitiveContent.any_1[0].Container_optional.accessControlPolicyIDs := {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}; + v_containerIndex1 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer1"), v_aeIndex); // AE child resource + v_containerIndex2 := f_cse_createResource(int3, v_containerCreateRequest, v_aeIndex); // AE child resource + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, {f_getResourceAddress(v_containerIndex1)}, omit, int3), v_aeIndex); + + v_updateRequest.primitiveContent.any_1[0].Group_optional.memberIDs := {f_getResourceAddress(v_containerIndex2)}; + v_request := f_getUpdateRequestPrimitive(int9, v_groupIndex, v_updateRequest); // creating group + // Test Body - v_request := f_getUpdateRequestPrimitive(int9, v_groupResourceIndex, v_updateRequest); - v_request.primitiveContent.any_1[0].Group_optional.accessControlPolicyIDs := {f_getResourceAddress(v_acpIndex)}; - - + mcaPort.send(m_request(v_request)); tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int5105))) -> value v_response { tc_ac.stop; - setverdict(pass, testcasename() & ": creation failed due to lack of privilege"); + setverdict(pass, testcasename() & ": Update failed due to lack of privilege"); } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while updating resource"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error update successful while doesn't have privileges for retrieving resource"); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while updating resource"); } } - + // Postamble f_cse_postamble_deleteResources(); - + // Tear down - f_cf01Down(); + f_cf01Down(); } } // end group g_CSE_GMG_BV_003 @@ -5614,18 +5613,8 @@ module OneM2M_Testcases { // resource when member ID exceed max number of members. group g_CSE_GMG_BV_004 { - testcase TC_CSE_GMG_BV_004() runs on CseTester system CseSystem - { - - var MsgIn v_response; - var RequestPrimitive v_request; - var integer v_aeIndex := -1; - var integer v_resourceIndex := -1; - - var template RequestPrimitive v_createRequest := m_createGroupBase; - var template RequestPrimitive v_updateRequest := m_updateGroupBase; - - //v_updateRequest.primitiveContent.any_1[0].Group_optional.currentNrOfMembers := 6; + testcase TC_CSE_GMG_BV_004() runs on CseTester system CseSystem { + // Local constants const XSD.AnyURI c_memberResourceAddress1 := "MEMBER_RESOURCE_ADDRESS_1"; const XSD.AnyURI c_memberResourceAddress2 := "MEMBER_RESOURCE_ADDRESS_2"; const XSD.AnyURI c_memberResourceAddress3 := "MEMBER_RESOURCE_ADDRESS_3"; @@ -5633,10 +5622,16 @@ module OneM2M_Testcases { const XSD.AnyURI c_memberResourceAddress5 := "MEMBER_RESOURCE_ADDRESS_5"; const XSD.AnyURI c_memberResourceAddress6 := "MEMBER_RESOURCE_ADDRESS_6"; + // Local variables + var MsgIn v_response; + var integer v_aeIndex := -1; + var integer v_resourceIndex := -1; + var RequestPrimitive v_request; + var template RequestPrimitive v_createRequest := m_createGroup(5, -, omit); + var template RequestPrimitive v_updateRequest := m_updateGroupBase; + v_updateRequest.primitiveContent.any_1[0].Group_optional.memberIDs := {c_memberResourceAddress1, c_memberResourceAddress2, c_memberResourceAddress3, c_memberResourceAddress4, c_memberResourceAddress5, c_memberResourceAddress6}; - v_updateRequest.primitiveContent.any_1[0].Group_optional.maxNrOfMembers := 5; - - + // Test control // Test component configuration @@ -5655,7 +5650,7 @@ module OneM2M_Testcases { mcaPort.send(m_request(v_request)); tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int4005))) -> value v_response { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int6010))) -> value v_response { tc_ac.stop; setverdict(pass, testcasename() & ": Update failed because member ID exceed max number of member"); } @@ -5663,6 +5658,10 @@ module OneM2M_Testcases { tc_ac.stop; setverdict(fail, testcasename() & ": Error while retrieving resource"); } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error resource updated while member ID exceed max number of member"); + } [] tc_ac.timeout { setverdict(inconc, testcasename() & ": No answer while retrieving resource"); } @@ -5683,27 +5682,17 @@ module OneM2M_Testcases { // fanOutPoint in group resource. group g_CSE_GMG_BV_005 { - testcase TC_CSE_GMG_BV_005() runs on CseTester system CseSystem - { - - // TODO: use right values for c_fanoutPointAddress and c_RessourceType1 - var XSD.AnyURI c_fanoutPointAddress := "FANOUTPOINT_ADDRESS"; - var ResourceType c_RessourceType1 := int1; - + testcase TC_CSE_GMG_BV_005() runs on CseTester system CseSystem { // Local variables var MsgIn v_response; - var RequestPrimitive v_request; + var RequestPrimitive v_createRequest := valueof(m_createContainerBase); var integer v_aeIndex := -1; - var integer v_resourceIndex := -1; - - - var RequestPrimitive v_createRequest := valueof(m_createGroupBase); - - - //v_createRequest.primitiveContent.any_1[0].Group_optional.fanOutPoint := c_fanoutPointAddress; TODO <--------------------------------------- - v_createRequest.primitiveContent.any_1[0].Group_optional.resourceType := c_RessourceType1; - - + var integer v_containerIndex1 := -1; + var integer v_containerIndex2 := -1; + var integer v_groupIndex := -1; + var ListOfURIs v_memberIDs; + var integer i; + // Test control // Test component configuration @@ -5712,11 +5701,15 @@ module OneM2M_Testcases { // Test adapter configuration // Preamble - v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - //v_resourceIndex := f_cse_createResource(int9, v_createRequest, v_aeIndex); // not used anymore -> Issue #4 + v_aeIndex := f_cse_preamble_registerAe(-, -); //c_CRUDNDi + v_containerIndex1 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer1"), v_aeIndex); // AE child resource + v_containerIndex2 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer2"), v_aeIndex); // AE child resource + v_memberIDs := {f_getResourceAddress(v_containerIndex1), f_getResourceAddress(v_containerIndex2)}; + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, v_memberIDs, omit, int3), v_aeIndex); // AE child resource - v_request := f_getCreateRequestPrimitive(int9, v_createRequest, v_aeIndex); - + v_createRequest.to_ := f_getResourceAddress(v_groupIndex) & "/fopt"; // short name of fanOutPoint + v_createRequest.from_ := f_getOriginator(v_groupIndex); + // Test Body mcaPort.send(m_request(v_createRequest)); @@ -5728,14 +5721,21 @@ module OneM2M_Testcases { if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list)){ setverdict(fail, testcasename(), ": Error, aggregatedResponse attribute not provided"); - } + } + else { + for(i:=0; i<lengthof(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list); i := i+1){ + if(not match(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list[i], mw_responsePrimitiveOK)){ + setverdict(fail, testcasename(), ": Error, one responsePrimitve of aggregatedResponse_list is not successful"); + } + } + } } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while creating resource"); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while creating resource"); } } @@ -5754,27 +5754,16 @@ module OneM2M_Testcases { // fanOutPoint in group resource. group g_CSE_GMG_BV_006 { - testcase TC_CSE_GMG_BV_006() runs on CseTester system CseSystem - { - - - - // TODO: use right values for c_fanoutPointAddress and c_RessourceType1 - var XSD.AnyURI c_fanoutPointAddress := "FANOUTPOINT_ADDRESS"; - var ResourceType c_RessourceType1 := int1; - - // Local variables - var XSD.ID v_resourceId := "NonExisting"; - var RequestPrimitive v_request := valueof(m_createGroupBase); + testcase TC_CSE_GMG_BV_006() runs on CseTester system CseSystem { var MsgIn v_response; var integer v_aeIndex := -1; - var integer v_resourceIndex := -1; - - - - //v_request.primitiveContent.any_1[0].Group_optional.fanOutPoint := c_fanoutPointAddress; TODO <--------------------------------------- - - + var integer v_containerIndex1 := -1; + var integer v_containerIndex2 := -1; + var integer v_groupIndex := -1; + var XSD.AnyURI v_fanoutPointAddress; + var ListOfURIs v_memberIDs; + var integer i; + // Test control // Test component configuration @@ -5783,12 +5772,16 @@ module OneM2M_Testcases { // Test adapter configuration // Preamble - v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - v_resourceIndex := f_cse_createResource(int9, v_request, v_aeIndex); - + v_aeIndex := f_cse_preamble_registerAe(-, -); //c_CRUDNDi + v_containerIndex1 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer1"), v_aeIndex); // AE child resource + v_containerIndex2 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer2"), v_aeIndex); // AE child resource + v_memberIDs := {f_getResourceAddress(v_containerIndex1), f_getResourceAddress(v_containerIndex2)}; + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, v_memberIDs, omit, int3), v_aeIndex); // AE child resource + + v_fanoutPointAddress := f_getResourceAddress(v_groupIndex) & "/fopt"; // short name of fanOutPoint + // Test Body - v_request := valueof(m_retrieveResource(f_getResourceAddress(v_resourceIndex) & "/" & v_resourceId, f_getOriginator(v_resourceIndex))); - mcaPort.send(m_request(valueof(v_request))); + mcaPort.send(m_request(m_retrieveResource(v_fanoutPointAddress, f_getOriginator(v_groupIndex)))); tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int2000))) -> value v_response { @@ -5798,7 +5791,14 @@ module OneM2M_Testcases { if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list)){ setverdict(fail, testcasename(), ": Error, aggregatedResponse attribute not provided"); } - } + else { + for(i:=0; i<lengthof(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list); i := i+1){ + if(not match(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list[i], mw_responsePrimitiveOK)){ + setverdict(fail, testcasename(), ": Error, one responsePrimitve of aggregatedResponse_list is not successful"); + } + } + } + } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; setverdict(fail, testcasename() & ": Error while retrieving resource"); @@ -5823,27 +5823,20 @@ module OneM2M_Testcases { // fanOutPoint in group resource. group g_CSE_GMG_BV_007 { - testcase TC_CSE_GMG_BV_007() runs on CseTester system CseSystem - { - - const ResourceType c_RessourceType1 := int9; // <group> ? - + testcase TC_CSE_GMG_BV_007() runs on CseTester system CseSystem { // Local variables var MsgIn v_response; - var RequestPrimitive v_request; + var RequestPrimitive v_updateRequest := valueof(m_updateContainerBase); var integer v_aeIndex := -1; - var integer v_resourceIndex := -1; - - var template RequestPrimitive v_createRequest := m_createGroupBase; - var template RequestPrimitive v_updateRequest := m_updateGroupBase; - - const XSD.AnyURI c_memberRessourceAddress1 := "MEMBER_RESSOURCE_ADDRESS_1"; - const XSD.AnyURI c_memberRessourceAddress2 := "MEMBER_RESSOURCE_ADDRESS_2"; - const XSD.AnyURI c_memberRessourceAddress3 := "MEMBER_RESSOURCE_ADDRESS_3"; - const XSD.AnyURI c_memberRessourceAddress4 := "MEMBER_RESSOURCE_ADDRESS_4"; - const XSD.AnyURI c_memberRessourceAddress5 := "MEMBER_RESSOURCE_ADDRESS_5"; - const XSD.AnyURI c_memberRessourceAddress6 := "MEMBER_RESSOURCE_ADDRESS_6"; - + var integer v_containerIndex1 := -1; + var integer v_containerIndex2 := -1; + var integer v_groupIndex := -1; + var ListOfURIs v_memberIDs; + var Labels v_labels_1:= {"VALUE_1"}; + var integer i; + + v_updateRequest.primitiveContent.any_1[0].Container_optional.labels := v_labels_1; + // Test control // Test component configuration @@ -5852,27 +5845,33 @@ module OneM2M_Testcases { // Test adapter configuration // Preamble + v_aeIndex := f_cse_preamble_registerAe(-, -); //c_CRUDNDi + v_containerIndex1 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer1"), v_aeIndex); // AE child resource + v_containerIndex2 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer2"), v_aeIndex); // AE child resource + v_memberIDs := {f_getResourceAddress(v_containerIndex1), f_getResourceAddress(v_containerIndex2)}; + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, v_memberIDs, omit, int3), v_aeIndex); // AE child resource + + v_updateRequest.to_ := f_getResourceAddress(v_groupIndex) & "/fopt"; // short name of fanOutPoint + v_updateRequest.from_ := f_getOriginator(v_groupIndex); - //var XSD.AnyURI c_memberRessourceAddress6 := "MEMBER_RESSOURCE_ADDRESS_6"; - v_createRequest.primitiveContent.any_1[0].Group_optional.memberIDs := {c_memberRessourceAddress1, c_memberRessourceAddress2, c_memberRessourceAddress3, c_memberRessourceAddress4, c_memberRessourceAddress5, c_memberRessourceAddress6}; - - v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - v_resourceIndex := f_cse_createResource(int9, v_createRequest, v_aeIndex); - - // Test Body - v_request := f_getUpdateRequestPrimitive(int9, v_resourceIndex, v_updateRequest); - - - mcaPort.send(m_request(v_request)); + // Test Body + mcaPort.send(m_request(v_updateRequest)); tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value v_response { tc_ac.stop; - setverdict(pass, testcasename() & ": update successfull by using fanOutPoint in group resource"); + setverdict(pass, testcasename() & ": update successful by using fanOutPoint in group resource"); if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list)){ setverdict(fail, testcasename(), ": Error, aggregatedResponse attribute not provided"); - } + } + else { + for(i:=0; i<lengthof(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list); i := i+1){ + if(not match(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list[i], mw_responsePrimitiveOK)){ + setverdict(fail, testcasename(), ": Error, one responsePrimitve of aggregatedResponse_list is not successful"); + } + } + } } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; @@ -5898,26 +5897,17 @@ module OneM2M_Testcases { // fanOutPoint in group resource. group g_CSE_GMG_BV_008 { - testcase TC_CSE_GMG_BV_008() runs on CseTester system CseSystem - { - // TODO: use right values for c_fanoutPointAddress and c_deleteAddress - var XSD.AnyURI c_fanoutPointAddress := "FANOUTPOINT_ADDRESS"; - var XSD.ID c_deleteAddress := "DELETE"; - + testcase TC_CSE_GMG_BV_008() runs on CseTester system CseSystem { //Local variables - var RequestPrimitive v_request; - var integer v_aeIndex := -1; - var integer v_resourceIndex := -1; var MsgIn v_response; - - - var template RequestPrimitive v_createRequest := m_createGroupBase; - var template RequestPrimitive v_deleteRequest := m_deleteRequest(c_deleteAddress); - + var integer v_aeIndex := -1; + var integer v_containerIndex1 := -1; + var integer v_containerIndex2 := -1; + var integer v_groupIndex := -1; + var XSD.AnyURI v_fanoutPointAddress; + var ListOfURIs v_memberIDs; + var integer i; - //v_deleteRequest.primitiveContent.any_1[0].Group_optional.fanOutPoint := c_fanoutPointAddress; TODO <--------------------------------------- - - // Test control // Test component configuration @@ -5926,30 +5916,39 @@ module OneM2M_Testcases { // Test adapter configuration // Preamble - v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - v_resourceIndex := f_cse_createResource(int9, v_createRequest, v_aeIndex); - - // Test Body - v_request := f_getUpdateRequestPrimitive(int9, v_resourceIndex, v_deleteRequest); - - - mcaPort.send(m_request(v_request)); + v_aeIndex := f_cse_preamble_registerAe(-, -); //c_CRUDNDi + v_containerIndex1 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer1"), v_aeIndex); // AE child resource + v_containerIndex2 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer2"), v_aeIndex); // AE child resource + v_memberIDs := {f_getResourceAddress(v_containerIndex1), f_getResourceAddress(v_containerIndex2)}; + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, v_memberIDs, omit, int3), v_aeIndex); // AE child resource + + v_fanoutPointAddress := f_getResourceAddress(v_groupIndex) & "/fopt"; // short name of fanOutPoint + + // Test Body + mcaPort.send(m_request(m_deleteRequest(v_fanoutPointAddress))); //TODO see if we set AE_ID or PX_SUPER_USER to from_ attribute tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int2002))) -> value v_response { tc_ac.stop; - setverdict(pass, testcasename() & ": delete successfull by using fanOutPoint in group resource"); + setverdict(pass, testcasename() & ": delete successful by using fanOutPoint in group resource"); if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list)){ setverdict(fail, testcasename(), ": Error, aggregatedResponse attribute not provided"); } + else { + for(i:=0; i<lengthof(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list); i := i+1){ + if(not match(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list[i], mw_responsePrimitiveOK)){ + setverdict(fail, testcasename(), ": Error, one responsePrimitve of aggregatedResponse_list is not successful"); + } + } + } } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while deleting resource"); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while deleting resource"); } } @@ -5968,17 +5967,13 @@ module OneM2M_Testcases { // group resource and removes the duplicate member IDs prior to creation of the group resource. group g_CSE_GMG_BV_009 { - testcase TC_CSE_GMG_BV_009() runs on CseTester system CseSystem - { - - // TODO: use right values for c_memberRessourceAddress - var XSD.AnyURI c_memberRessourceAddress := "MEMBER_RESSOURCE_ADDRESS"; - + testcase TC_CSE_GMG_BV_009() runs on CseTester system CseSystem { // Local variables var MsgIn v_response; var integer v_aeIndex := -1; - var integer v_resourceIndex := -1; - var template RequestPrimitive v_createRequest := m_createGroupBase; + var integer v_containerIndex := -1; + var RequestPrimitive v_createRequest; + var XSD.AnyURI v_memberID; // Test control @@ -5988,28 +5983,26 @@ module OneM2M_Testcases { // Test adapter configuration // Preamble - v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - + v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi. + v_containerIndex := f_cse_createResource(int3, m_createContainerBase, v_aeIndex); // AE child resource + v_memberID := f_getResourceAddress(v_containerIndex); + v_createRequest := valueof(m_createGroup(2, {v_memberID, v_memberID}, omit, int3)); v_createRequest := f_getCreateRequestPrimitive(int9, v_createRequest, v_aeIndex); - - v_createRequest.primitiveContent.any_1[0].Group_optional := m_contentCreateGroup (1, {c_memberRessourceAddress, c_memberRessourceAddress}, omit); - - mcaPort.send(m_request(valueof(v_createRequest))); + + // Test Body + mcaPort.send(m_request(v_createRequest)); tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value v_response { tc_ac.stop; setverdict(pass, testcasename() & ": Resource created successfuly"); - - if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs)){ - setverdict(fail, testcasename(), ": Error, memberID attribute not provided"); - } else { - if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs[0] != c_memberRessourceAddress){ - setverdict(fail, testcasename(), ": Error, memberIDs attribute not correct"); - } + + if(not match({v_memberID}, v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs)){ + setverdict(fail, testcasename(), ": Error, presence of duplicate member IDs "); } - - + if(lengthof(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs) != 1) { + setverdict(fail, testcasename() & ": Error, wrong number of memberIDs attribute"); + } } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { tc_ac.stop; @@ -6035,24 +6028,13 @@ module OneM2M_Testcases { // group resource when memberType attribute is not ‘mixed’. group g_CSE_GMG_BV_010 { - testcase TC_CSE_GMG_BV_010() runs on CseTester system CseSystem - { -// Local variables + testcase TC_CSE_GMG_BV_010() runs on CseTester system CseSystem { + // Local variables var MsgIn v_response; - var RequestPrimitive v_request; + var RequestPrimitive v_createRequest; var integer v_aeIndex := -1; - var integer v_resourceIndex := -1; - - - // TODO: use right values for c_RessourceType1 - var ResourceType c_RessourceType1 := int1; - - var ResponsePrimitive.primitiveContent v_responsePrimitive; - - var template RequestPrimitive v_createRequest := m_createGroupBase; + var integer v_containerIndex := -1; - - // Test control // Test component configuration @@ -6062,29 +6044,25 @@ module OneM2M_Testcases { // Preamble v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - - - v_request := f_getCreateRequestPrimitive(int9, v_createRequest, v_aeIndex); - - v_request.primitiveContent.any_1[0].Group_optional.resourceType := c_RessourceType1; - - - - mcaPort.send(m_request(v_request)); + v_containerIndex := f_cse_createResource(int3, m_createContainerBase, v_aeIndex); // AE child resource + v_createRequest := valueof(m_createGroup(2, {f_getResourceAddress(v_containerIndex)}, omit, int3)); //Member type is set to Container + v_createRequest := f_getCreateRequestPrimitive(int9, v_createRequest, v_aeIndex); + + // Test Body + mcaPort.send(m_request(v_createRequest)); tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value v_response { tc_ac.stop; setverdict(pass, testcasename() & ": Resource created successfuly"); - if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated)){ setverdict(fail, testcasename(), ": Error, memberTypeValidated attribute not provided"); - } else { - if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated == false){ + } + else { + if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated == false){ setverdict(fail, testcasename(), ": Error, memberTypeValidated attribute not correct"); } - } - + } } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { tc_ac.stop; @@ -6110,22 +6088,13 @@ module OneM2M_Testcases { // group resource when memberType attribute is not ‘mixed’ and the consistencyStrategy attribute is SET_MIXED. group g_CSE_GMG_BV_011 { - testcase TC_CSE_GMG_BV_011() runs on CseTester system CseSystem - { - - // TODO: use right values for c_RessourceType1 and c_RessourceType2 - var MemberType c_RessourceType1 := int1; - var MemberType c_RessourceType2 := int2; - - // Local variables - var ResponsePrimitive.primitiveContent v_responsePrimitive; + testcase TC_CSE_GMG_BV_011() runs on CseTester system CseSystem { + //Local variables var MsgIn v_response; + var RequestPrimitive v_createRequest; var integer v_aeIndex := -1; - var integer v_resourceIndex := -1; - var RequestPrimitive v_request; - - var template RequestPrimitive v_createRequest := m_createGroupBase; - + var integer v_containerIndex := -1; + // Test control // Test component configuration @@ -6135,27 +6104,23 @@ module OneM2M_Testcases { // Preamble v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - - - - v_request := f_getCreateRequestPrimitive(int9, v_createRequest, v_aeIndex); - - v_request.primitiveContent.any_1[0].Group_optional.memberType := c_RessourceType2; - v_request.primitiveContent.any_1[0].Group_optional.consistencyStrategy := int3; // MIXED - - - mcaPort.send(m_request(v_request)); + v_containerIndex := f_cse_createResource(int3, m_createContainerBase, v_aeIndex); // AE child resource + v_createRequest := valueof(m_createGroup(2, {f_getResourceAddress(v_containerIndex)}, omit, int2, int3)); //Member type is set to AE and consistencyStrategy is set to MIXED + v_createRequest := f_getCreateRequestPrimitive(int9, v_createRequest, v_aeIndex); + + // Test Body + mcaPort.send(m_request(v_createRequest)); tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value v_response { tc_ac.stop; setverdict(pass, testcasename() & ": Resource created successfuly"); - - + // check for memberTypeValidated if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated)){ setverdict(fail, testcasename(), ": Error, memberTypeValidated attribute not provided"); - } else { + } + else { if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated != false){ setverdict(fail, testcasename(), ": Error, memberTypeValidated attribute not correct"); } @@ -6163,12 +6128,12 @@ module OneM2M_Testcases { // check for memberType (MIXED) if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberType)){ setverdict(fail, testcasename(), ": Error, memberType attribute not provided"); - } else { - if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberType != int3){ + } + else { + if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberType != int0){ //Mixed is int0 in release 2 and int24 in release 1 setverdict(fail, testcasename(), ": Error, memberType attribute not correct"); } } - } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { tc_ac.stop; @@ -6194,22 +6159,15 @@ module OneM2M_Testcases { // ABANDON_MEMBER,. group g_CSE_GMG_BV_012 { - testcase TC_CSE_GMG_BV_012() runs on CseTester system CseSystem - { - - // TODO: use right values for c_RessourceType1 and c_RessourceType2 and c_memberRessourceAddress1 and c_memberRessourceAddress2 - var MemberType c_RessourceType1 := int1; - var MemberType c_RessourceType2 := int2; - var XSD.AnyURI c_memberRessourceAddress1 := "MEMBER_RESSOURCE_ADDRESS_1"; - var XSD.AnyURI c_memberRessourceAddress2 := "MEMBER_RESSOURCE_ADDRESS_2"; - -// Local variables + testcase TC_CSE_GMG_BV_012() runs on CseTester system CseSystem { + //Local variables var MsgIn v_response; + var RequestPrimitive v_createRequest; var integer v_aeIndex := -1; - var integer v_resourceIndex := -1; - var template RequestPrimitive v_createRequest := m_createGroupBase; - //var ResponsePrimitive.primitiveContent v_responsePrimitive; // not used anymore -> issue #5 - + var integer v_containerIndex := -1; + var integer v_groupIndex := -1; + var ListOfURIs v_memberIDs; + // Test control // Test component configuration @@ -6219,19 +6177,21 @@ module OneM2M_Testcases { // Preamble v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - - v_createRequest := f_getCreateRequestPrimitive(int9, v_createRequest, v_aeIndex); - v_createRequest.primitiveContent.any_1[0].Group_optional.memberType := c_RessourceType1; - v_createRequest.primitiveContent.any_1[0].Group_optional.consistencyStrategy := int1; // ABANDON_MEMBER - - mcaPort.send(m_request(valueof(v_createRequest))); + v_containerIndex := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer"), v_aeIndex); + v_groupIndex := f_cse_createResource(int9, m_createGroupBase, v_aeIndex); + v_memberIDs := {f_getResourceAddress(v_groupIndex), f_getResourceAddress(v_containerIndex)}; + v_createRequest := valueof(m_createGroup(2, v_memberIDs, omit, int3, omit)); //Member type is set to container and consistencyStrategy is set to ABANDON MEMBER (default value) + v_createRequest := f_getCreateRequestPrimitive(int9, v_createRequest, v_aeIndex); + + // Test Body + mcaPort.send(m_request(v_createRequest)); tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value v_response { tc_ac.stop; setverdict(pass, testcasename() & ": Resource created successfuly"); - -// check for memberTypeValidated + + // check for memberTypeValidated if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated)){ setverdict(fail, testcasename(), ": Error, memberTypeValidated attribute not provided"); } else { @@ -6242,9 +6202,10 @@ module OneM2M_Testcases { // check for membersId if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs)){ setverdict(fail, testcasename(), ": Error, memberIDs attribute not provided"); - } else { - if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs[0] != c_memberRessourceAddress1){ - setverdict(fail, testcasename(), ": Error, memberTypeValidated attribute not correct"); + } + else { + if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs[0] != f_getResourceAddress(v_containerIndex)){ + setverdict(fail, testcasename(), ": Error, memberIDs attribute not correct"); } } } @@ -6273,53 +6234,48 @@ module OneM2M_Testcases { // ABANDON_GROUP. group g_CSE_GMG_BV_013 { - testcase TC_CSE_GMG_BV_013() runs on CseTester system CseSystem - { - - - // TODO: use right values for c_RessourceType1 and c_RessourceType2 and c_memberRessourceAddress1 and c_memberRessourceAddress2 - var MemberType c_RessourceType1 := int1; - var MemberType c_RessourceType2 := int2; - var XSD.AnyURI c_memberRessourceAddress1 := "MEMBER_RESSOURCE_ADDRESS_1"; - var XSD.AnyURI c_memberRessourceAddress2 := "MEMBER_RESSOURCE_ADDRESS_2"; - -// Local variables + testcase TC_CSE_GMG_BV_013() runs on CseTester system CseSystem { + //Local variables var MsgIn v_response; - var RequestPrimitive v_request; + var RequestPrimitive v_createRequest; var integer v_aeIndex := -1; - var integer v_resourceIndex := -1; - - var template RequestPrimitive v_createRequest := m_createGroupBase; - - + var integer v_containerIndex := -1; + var integer v_groupIndex := -1; + var ListOfURIs v_memberIDs; + // Test control - + // Test component configuration f_cf01Up(); - + // Test adapter configuration - + // Preamble v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - - v_createRequest := f_getCreateRequestPrimitive(int9, v_createRequest, v_aeIndex); - v_createRequest.primitiveContent.any_1[0].Group_optional := m_contentCreateGroup (1, {c_memberRessourceAddress1, c_memberRessourceAddress2}, omit); - v_createRequest.primitiveContent.any_1[0].Group_optional.memberType := c_RessourceType1; - v_createRequest.primitiveContent.any_1[0].Group_optional.consistencyStrategy := int2; // ABANDON_GROUP - - mcaPort.send(m_request(valueof(v_createRequest))); + v_containerIndex := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer"), v_aeIndex); + v_groupIndex := f_cse_createResource(int9, m_createGroupBase, v_aeIndex); + v_memberIDs := {f_getResourceAddress(v_groupIndex), f_getResourceAddress(v_containerIndex)}; + v_createRequest := valueof(m_createGroup(2, v_memberIDs, omit, int3, int2)); //Member type is set to container and consistencyStrategy is set to ABANDON GROUP + v_createRequest := f_getCreateRequestPrimitive(int9, v_createRequest, v_aeIndex); + + // Test Body + mcaPort.send(m_request(v_createRequest)); tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int4110))) -> value v_response {//TODO Double check ResponseStatusCode tc_ac.stop; setverdict(pass, testcasename() & ": unsuccessful validation of the resource type during the creation of the group"); } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error create succesfull while the operation should be aborted"); + } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while creating resource"); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while creating resource"); } } @@ -6337,26 +6293,17 @@ module OneM2M_Testcases { // Check that the IUT detects the presence of duplicate member IDs during the creation of the // group resource and removes the duplicate member IDs prior to updating of the group resource. group g_CSE_GMG_BV_014 { - testcase TC_CSE_GMG_BV_014() runs on CseTester system CseSystem - { - //Local constants - const ResourceType c_ResourceTypeGroup := int9; // "group": TS-0004, Table 6.3.4.2.1-1 - const ResourceType c_ResourceType1 := int4; // "contentInstance": TS-0004, Table 6.3.4.2.1-1 - const XSD.String c_primitiveContent := "any content instance value"; // embedded value of a contentInstance -// const XSD.AnyURI c_targetResourceAddress := "TARGET_RESOURCE_ADDRESS"; // resource type can be <CSEBase>, <AE>, <remoteCSE> - const XSD.AnyURI c_memberResourceAddress1 := "MEMBER_RESSOURCE_ADDRESS_1"; // any resource type - const XSD.AnyURI c_memberResourceAddress2 := "MEMBER_RESSOURCE_ADDRESS_2"; // any resource type - + testcase TC_CSE_GMG_BV_014() runs on CseTester system CseSystem { // Local variables var MsgIn v_response; - var RequestPrimitive v_request; - var integer v_aeIndex := -1; // initialization with dummy value - var integer v_groupIndex := -1; // initialization with dummy value - - var template RequestPrimitive v_createRequest := m_createGroupBase; - var template RequestPrimitive v_updateRequest := m_updateGroupBase; - var template RequestPrimitive v_createMember; - + var integer v_aeIndex := -1; + var integer v_containerIndex1 := -1; + var integer v_containerIndex2 := -1; + var integer v_groupIndex := -1; + var RequestPrimitive v_updateRequest := valueof(m_updateGroupBase); + var XSD.AnyURI v_memberID1; + var XSD.AnyURI v_memberID2; + // Test control // Test component configuration @@ -6365,61 +6312,43 @@ module OneM2M_Testcases { // Test adapter configuration // Preamble + v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi + v_containerIndex1 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer1"), v_aeIndex); // AE child resource + v_containerIndex2 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer2"), v_aeIndex); // AE child resource + v_memberID1 := f_getResourceAddress(v_containerIndex1); + v_memberID2 := f_getResourceAddress(v_containerIndex2); + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, {v_memberID1, v_memberID2}, omit, int3), v_aeIndex); // AE child resource + + v_updateRequest.primitiveContent.any_1[0].Group_optional.memberIDs := {v_memberID2, v_memberID2}; + v_updateRequest := f_getUpdateRequestPrimitive(int9, v_groupIndex, v_updateRequest); - // and the IUT having registered the AE - v_aeIndex := f_cse_preamble_registerAe(); // create auxiliar AE - - // and the IUT having a resource at TARGET_RESOURCE_ADDRESS of type <group> - // containing memberIDs attribute - // set to MEMBER_RESOURCE_ADDRESS_1 - // and the AE having privileges to perform UPDATE operation on the TARGET_RESOURCE_ADDRESS - v_createRequest := f_getCreateRequestPrimitive(c_ResourceTypeGroup, v_createRequest, v_aeIndex); // build request primitive - v_createRequest.primitiveContent.any_1[0].Group_optional := m_contentCreateGroup(1, {c_memberResourceAddress1}, omit); - v_groupIndex := f_cse_createResource(c_ResourceTypeGroup, v_createRequest, v_aeIndex); // create resource - - // and the IUT having a resource at MEMBER_RESOURCE_ADDRESS_1 - // having resourceType attribute RESOURCE_TYPE_1 - // and the IUT having a resource at MEMBER_RESOURCE_ADDRESS_2 - // having resourceType attribute RESOURCE_TYPE_1 - v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_1"); // build request primitive - f_cse_createResource(c_ResourceType1, v_createMember, v_aeIndex); // request new member - v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_2"); // build request primitive - f_cse_createResource(c_ResourceType1, v_createMember, v_aeIndex); // request new member - - //Test Body - v_request := f_getUpdateRequestPrimitive(c_ResourceTypeGroup, v_groupIndex, v_updateRequest); -// v_request.to_ := c_targetResourceAddress; - v_request.primitiveContent.any_1[0].Group_optional := valueof(m_contentCreateGroup(2, {c_memberResourceAddress2, c_memberResourceAddress2}, omit)); - - mcaPort.send(m_request(v_request)); + mcaPort.send(m_request(v_updateRequest)); tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value v_response { tc_ac.stop; setverdict(pass, testcasename() & ": update successful"); - - + // check for membersId if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs)){ setverdict(fail, testcasename(), ": Error, memberIDs attribute not provided"); - } else { - + } + else { if(lengthof(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs) != 1) { setverdict(fail, testcasename() & ": Error, wrong number of memberIDs attribute"); } - if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs[0] != c_memberResourceAddress2){ + if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs[0] != v_memberID2){ setverdict(fail, testcasename(), ": Error, memberIDs attribute not correct"); } } - } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while updating resource"); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while updating resource"); } } @@ -6431,68 +6360,36 @@ module OneM2M_Testcases { } } // end group g_CSE_GMG_BV_014 - /** - * @desc Check that the IUT validates the resource type during an UPDATE of the <group> resource when memberType attribute is not ‘mixed’. - */ + //Test objective: + //Check that the IUT validates the resource type during an UPDATE of the <group> resource when memberType attribute is not ‘mixed’. group g_CSE_GMG_BV_015 { - testcase TC_CSE_GMG_BV_015() runs on CseTester system CseSystem - { - //Local constants - const ResourceType c_ResourceTypeGroup := int9; - const ResourceType c_ResourceType1 := int4; - const MemberType c_memberType1 := int4; // should be set same type as c_ResourceType1 - const XSD.String c_primitiveContent := "any content instance value"; // embedded value of a contentInstance -// const XSD.AnyURI c_targetResourceAddress := "TARGET_RESOURCE_ADDRESS"; - const XSD.AnyURI c_memberResourceAddress1 := "MEMBER_RESSOURCE_ADDRESS_1"; - const XSD.AnyURI c_memberResourceAddress2 := "MEMBER_RESSOURCE_ADDRESS_2"; - + testcase TC_CSE_GMG_BV_015() runs on CseTester system CseSystem { // Local variables var MsgIn v_response; - var RequestPrimitive v_request; var integer v_aeIndex := -1; + var integer v_containerIndex1 := -1; + var integer v_containerIndex2 := -1; var integer v_groupIndex := -1; - - var template RequestPrimitive v_createRequest := m_createGroupBase; - var template RequestPrimitive v_updateRequest := m_updateGroupBase; - var template RequestPrimitive v_createMember; - + var RequestPrimitive v_updateRequest := valueof(m_updateGroupBase); + // Test control - + // Test component configuration f_cf01Up(); - + // Test adapter configuration - + // Preamble v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - - // and the IUT having a resource at TARGET_RESOURCE_ADDRESS of type <group> - // containing - // memberIDs attribute set to MEMBER_RESOURCE_ADDRESS_1 - // memberType attribute set to RESOURCE_TYPE_1 - // and the AE having privileges to perform UPDATE operation on the TARGET_RESOURCE_ADDRESS - v_createRequest := f_getCreateRequestPrimitive(c_ResourceTypeGroup, v_createRequest, v_aeIndex); - v_createRequest.primitiveContent.any_1[0].Group_optional := m_contentCreateGroup(1, {c_memberResourceAddress1}, omit); - v_createRequest.primitiveContent.any_1[0].Group_optional.memberType := c_memberType1; - v_groupIndex := f_cse_createResource(c_ResourceTypeGroup, v_createRequest, v_aeIndex); - - - // and the IUT having a resource at MEMBER_RESOURCE_ADDRESS_1 - // having resourceType attribute RESOURCE_TYPE_1 - // and the IUT having a resource at MEMBER_RESOURCE_ADDRESS_2 - // having resourceType attribute RESOURCE_TYPE_1 - v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_1"); - f_cse_createResource(c_ResourceType1, v_createMember, v_aeIndex); - v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_2"); - f_cse_createResource(c_ResourceType1, v_createMember, v_aeIndex); - - - //Test Body - v_request := f_getUpdateRequestPrimitive(c_ResourceTypeGroup, v_groupIndex, v_updateRequest); -// v_request.to_ := c_targetResourceAddress; - v_request.primitiveContent.any_1[0].Group_optional := valueof(m_contentCreateGroup(1, {c_memberResourceAddress2}, omit)); - - mcaPort.send(m_request(v_request)); + v_containerIndex1 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer1"), v_aeIndex); // AE child resource + v_containerIndex2 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer2"), v_aeIndex); // AE child resource + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, {f_getResourceAddress(v_containerIndex1)}, omit, int3), v_aeIndex); + + v_updateRequest.primitiveContent.any_1[0].Group_optional.memberIDs := {f_getResourceAddress(v_containerIndex2)}; + v_updateRequest := f_getUpdateRequestPrimitive(int9, v_groupIndex, v_updateRequest); + + // Test Body + mcaPort.send(m_request(v_updateRequest));// TODO see if the memberTypeValidated is present in the update response tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value v_response { @@ -6501,7 +6398,8 @@ module OneM2M_Testcases { if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated)) { setverdict(fail, testcasename(), ": Error, memberTypeValidated attribute not provided"); - } else { + } + else { if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated == false) { setverdict(fail, testcasename(), ": Error, memberTypeValidated wrong value"); } @@ -6509,10 +6407,10 @@ module OneM2M_Testcases { } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while updating resource"); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while updating resource"); } } @@ -6524,33 +6422,21 @@ module OneM2M_Testcases { } } // end group g_CSE_GMG_BV_015 + //Test objective: + //Check that the IUT handles unsuccessful validation of the resource type during an UPDATE of the <group> resource when memberType attribute is not ‘mixed’ and the consistencyStrategy attribute is SET_MIXED. group g_CSE_GMG_BV_016 { - // Check that the IUT handles unsuccessful validation of the resource type during an UPDATE of the <group> resource when memberType attribute is not ‘mixed’ and the consistencyStrategy attribute is SET_MIXED. - testcase TC_CSE_GMG_BV_016() runs on CseTester system CseSystem - { - //Local constants - const ResourceType c_ResourceTypeGroup := int9; - const ResourceType c_ResourceType1 := int4; - const ResourceType c_ResourceType2 := int5; - const MemberType c_memberType1 := int4; // should be set same type as c_ResourceType1 - const MemberType c_memberType2 := int5; // should be set same type as c_ResourceType2 - const MemberType c_memberType_MIXED := int0; // "mixed": TS-0004, Table 6.3.4.2.11-1 - const XSD.String c_primitiveContent := "any embedded primitive_content"; - const ConsistencyStrategy c_consistentcyStrategy := int3; // "SET_MIXED": TS-0004, Table 6.3.4.2.12-1 -// const XSD.AnyURI c_targetResourceAddress := "TARGET_RESOURCE_ADDRESS"; - const XSD.AnyURI c_memberResourceAddress1 := "MEMBER_RESSOURCE_ADDRESS_1"; - const XSD.AnyURI c_memberResourceAddress2 := "MEMBER_RESSOURCE_ADDRESS_2"; - + + testcase TC_CSE_GMG_BV_016() runs on CseTester system CseSystem { // Local variables var MsgIn v_response; - var RequestPrimitive v_request; + var RequestPrimitive v_updateRequest := valueof(m_updateGroupBase); var integer v_aeIndex := -1; + var integer v_containerIndex := -1; var integer v_groupIndex := -1; - - var template RequestPrimitive v_createRequest := m_createGroupBase; - var template RequestPrimitive v_updateRequest := m_updateGroupBase; - var template RequestPrimitive v_createMember; - + var integer v_subGroupIndex := -1; + var XSD.AnyURI v_memberID1; + var XSD.AnyURI v_memberID2; + // Test control // Test component configuration @@ -6560,45 +6446,17 @@ module OneM2M_Testcases { // Preamble v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - - // and the IUT having a resource at TARGET_RESOURCE_ADDRESS of type <group> - // containing - // memberIDs attribute set to MEMBER_RESOURCE_ADDRESS_1 - // memberType attribute set to RESOURCE_TYPE_1 - // memberTypeValidated attribute set to TRUE - // consistencyStrategy attribute set to SET_MIXED - // and the AE having privileges to perform UPDATE operation on the TARGET_RESOURCE_ADDRESS - v_createRequest := f_getCreateRequestPrimitive(c_ResourceTypeGroup, v_createRequest, v_aeIndex); - v_createRequest.primitiveContent.any_1[0].Group_optional := m_contentCreateGroup(1, {c_memberResourceAddress1}, omit); - v_createRequest.primitiveContent.any_1[0].Group_optional.memberType := c_memberType1; - v_createRequest.primitiveContent.any_1[0].Group_optional.memberTypeValidated := true; - v_createRequest.primitiveContent.any_1[0].Group_optional.consistencyStrategy := c_consistentcyStrategy; - v_groupIndex := f_cse_createResource(c_ResourceTypeGroup, v_createRequest, v_aeIndex); - - // and the IUT having a resource at MEMBER_RESOURCE_ADDRESS_1 - // having resourceType attribute RESOURCE_TYPE_1 - // and the IUT having a resource at MEMBER_RESOURCE_ADDRESS_2 - // having resourceType attribute RESOURCE_TYPE_2 - v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_1"); - f_cse_createResource(c_ResourceType1, v_createMember, v_aeIndex); - v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_2"); - f_cse_createResource(c_ResourceType2, v_createMember, v_aeIndex); - - - //Test Body - - // the IUT receives an valid UPDATE request from AE containing - // To set to TARGET_RESOURCE_ADDRESS and - // From set to AE-ID and - // Content set to <group> resource containing - // memberIDs attribute set to - // MEMBER_RESOURCE_ADDRESS_1, - // MEMBER_RESOURCE_ADDRESS_2 - v_request := f_getUpdateRequestPrimitive(c_ResourceTypeGroup, v_groupIndex, v_updateRequest); -// v_request.to_ := c_targetResourceAddress; - v_request.primitiveContent.any_1[0].Group_optional := valueof(m_contentCreateGroup(2, {c_memberResourceAddress1, c_memberResourceAddress2}, omit)); - - mcaPort.send(m_request(v_request)); + v_containerIndex := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer"), v_aeIndex); + v_subGroupIndex := f_cse_createResource(int9, m_createGroupBase, v_aeIndex); + v_memberID1 := f_getResourceAddress(v_containerIndex); + v_memberID2 := f_getResourceAddress(v_subGroupIndex); + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, {v_memberID1}, omit, int3, int3), v_aeIndex); //Member type is set to Container (int3) and consistencyStrategy is set to MIXED (int3) + + v_updateRequest.primitiveContent.any_1[0].Group_optional.memberIDs := {v_memberID1, v_memberID2}; + v_updateRequest := f_getUpdateRequestPrimitive(int9, v_groupIndex, v_updateRequest); + + // Test Body + mcaPort.send(m_request(v_updateRequest));// TODO see if the memberTypeValidated is present in the update response tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value v_response { @@ -6606,30 +6464,34 @@ module OneM2M_Testcases { setverdict(pass, testcasename() & ": update successful"); //memberTypeValidated attribute set to FALSE - if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated)) { + if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated)) { setverdict(fail, testcasename(), ": Error, memberTypeValidated attribute not provided"); - } else { + } + else { if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated != false) { setverdict(fail, testcasename(), ": Error, memberTypeValidated must be FALSE"); - }} + } + } //memberType attribute set to MIXED - if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberType)) { + if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberType)) { setverdict(fail, testcasename(), ": Error, memberType attribute not provided"); - } else { - if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberType != c_memberType_MIXED) { + } + else { + if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberType != int0) { //Mixed is int0 in release 2 and int24 in release 1 setverdict(fail, testcasename(), ": Error, memberType was not set to MIXED"); - }} + } + } - } - [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { - tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); - } - [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); - } - } + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while retrieving resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + } + } //Postamble f_cse_postamble_deleteResources(); @@ -6638,33 +6500,21 @@ module OneM2M_Testcases { f_cf01Down(); } } // end group g_CSE_GMG_BV_016 - + + //Test objective: Check that the IUT handles unsuccessful validation of the resource type during an UPDATE of the <group> resource when memberType attribute is not ‘mixed’ and the consistencyStrategy attribute is ABANDON_MEMBER. group g_CSE_GMG_BV_017 { - // Test objective: Check that the IUT handles unsuccessful validation of the resource type during an UPDATE of the <group> resource when memberType attribute is not ‘mixed’ and the consistencyStrategy attribute is ABANDON_MEMBER. - testcase TC_CSE_GMG_BV_017() runs on CseTester system CseSystem - { - //Local constants - const ResourceType c_ResourceTypeGroup := int9; - const ResourceType c_ResourceType1 := int4; - const ResourceType c_ResourceType2 := int5; - const MemberType c_memberType1 := int4; // should be set same type as c_ResourceType1 - const MemberType c_memberType2 := int5; // should be set same type as c_ResourceType2 - const XSD.String c_primitiveContent := "primitive_content"; - const ConsistencyStrategy c_consistentcyStrategy := int1; // ABANDOND_MEMBER: TS-0004, Table 6.3.4.2.12-1 -// const XSD.AnyURI c_targetResourceAddress := "TARGET_RESOURCE_ADDRESS"; - const XSD.AnyURI c_memberResourceAddress1 := "MEMBER_RESSOURCE_ADDRESS_1"; - const XSD.AnyURI c_memberResourceAddress2 := "MEMBER_RESSOURCE_ADDRESS_2"; - + + testcase TC_CSE_GMG_BV_017() runs on CseTester system CseSystem { // Local variables var MsgIn v_response; - var RequestPrimitive v_request; + var RequestPrimitive v_updateRequest := valueof(m_updateGroupBase); var integer v_aeIndex := -1; + var integer v_containerIndex := -1; var integer v_groupIndex := -1; - - var template RequestPrimitive v_createRequest := m_createGroupBase; - var template RequestPrimitive v_updateRequest := m_updateGroupBase; - var template RequestPrimitive v_createMember; - + var integer v_subGroupIndex := -1; + var XSD.AnyURI v_memberID1; + var XSD.AnyURI v_memberID2; + // Test control // Test component configuration @@ -6674,38 +6524,18 @@ module OneM2M_Testcases { // Preamble v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - - // and the IUT having a resource at TARGET_RESOURCE_ADDRESS of type <group> - // containing - // memberIDs attribute set to MEMBER_RESOURCE_ADDRESS_1 - // memberType attribute set to RESOURCE_TYPE_1 - // memberTypeValidated attribute set to TRUE - // consistencyStrategy attribute set to ABANDON_MEMBER - // and the AE having privileges to perform UPDATE operation on the TARGET_RESOURCE_ADDRESS - v_createRequest := f_getCreateRequestPrimitive(c_ResourceTypeGroup, v_createRequest, v_aeIndex); - v_createRequest.primitiveContent.any_1[0].Group_optional := m_contentCreateGroup(1, {c_memberResourceAddress1}, omit); - v_createRequest.primitiveContent.any_1[0].Group_optional.memberType := c_memberType1; - v_createRequest.primitiveContent.any_1[0].Group_optional.memberTypeValidated := true; - v_createRequest.primitiveContent.any_1[0].Group_optional.consistencyStrategy := c_consistentcyStrategy; - v_groupIndex := f_cse_createResource(c_ResourceTypeGroup, v_createRequest, v_aeIndex); - - - // and the IUT having a resource at MEMBER_RESOURCE_ADDRESS_1 - // having resourceType attribute RESOURCE_TYPE_1 - // and the IUT having a resource at MEMBER_RESOURCE_ADDRESS_2 - // having resourceType attribute RESOURCE_TYPE_2 - v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_1"); - f_cse_createResource(c_ResourceType1, v_createMember, v_aeIndex); - v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_2"); - f_cse_createResource(c_ResourceType2, v_createMember, v_aeIndex); - - + v_containerIndex := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer"), v_aeIndex); + v_subGroupIndex := f_cse_createResource(int9, m_createGroupBase, v_aeIndex); + v_memberID1 := f_getResourceAddress(v_containerIndex); + v_memberID2 := f_getResourceAddress(v_subGroupIndex); + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, {v_memberID1}, omit, int3, omit), v_aeIndex); //Member type is set to Container (int3) and consistencyStrategy is set to ABANDON MEMBER (default value) + + v_updateRequest.primitiveContent.any_1[0].Group_optional.memberIDs := {v_memberID2, v_memberID1}; + v_updateRequest := f_getUpdateRequestPrimitive(int9, v_groupIndex, v_updateRequest); + //Test Body - v_request := f_getUpdateRequestPrimitive(c_ResourceTypeGroup, v_groupIndex, v_updateRequest); -// v_request.to_ := c_targetResourceAddress; - v_request.primitiveContent.any_1[0].Group_optional := valueof(m_contentCreateGroup(2, {c_memberResourceAddress1, c_memberResourceAddress2}, omit)); - - mcaPort.send(m_request(v_request)); + + mcaPort.send(m_request(v_updateRequest)); tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value v_response { @@ -6713,33 +6543,34 @@ module OneM2M_Testcases { setverdict(pass, testcasename() & ": update successful"); //memberTypeValidated attribute set to TRUE - if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated)) { + if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated)) { setverdict(fail, testcasename(), ": Error, memberTypeValidated attribute not provided"); - } else { + } + else { if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated != true) { setverdict(fail, testcasename(), ": Error, memberTypeValidated must be TRUE"); - }} + } + } - //memberIDs attribute set to - // MEMBER_RESOURCE_ADDRESS_1 + //memberIDs attribute set to v_memberID1 if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs)){ setverdict(fail, testcasename(), ": Error, memberIDs attribute not provided"); - } else { + } + else { if(lengthof(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs) != 1) { setverdict(fail, testcasename() & ": Error, wrong number of memberIDs attribute"); } - if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs[0] != c_memberResourceAddress1){ + if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs[0] != v_memberID1){ setverdict(fail, testcasename(), ": Error, memberIDs attribute not correct"); } } - } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while updating resource"); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while updating resource"); } } @@ -6751,87 +6582,58 @@ module OneM2M_Testcases { } } // end group g_CSE_GMG_BV_017 + //Test objective: Check that the IUT handles unsuccessful validation of the resource type during an update of the <group> resource when memberType attribute is not ‘mixed’ and the consistencyStrategy attribute is ABANDON_GROUP. group g_CSE_GMG_BV_018 { - // Test objective: Check that the IUT handles unsuccessful validation of the resource type during the creation of the <group> resource when memberType attribute is not ‘mixed’ and the consistencyStrategy attribute is ABANDON_GROUP. - testcase TC_CSE_GMG_BV_018() runs on CseTester system CseSystem - { - //Local constants - const ResourceType c_ResourceTypeGroup := int9; - const ResourceType c_ResourceType1 := int4; - const ResourceType c_ResourceType2 := int5; - const MemberType c_memberType1 := int4; // should be set same type as c_ResourceType1 - const MemberType c_memberType2 := int5; // should be set same type as c_ResourceType2 - const XSD.String c_primitiveContent := "primitive_contet"; - const ConsistencyStrategy c_consistentcyStrategy := int2; // ABANDOND_GROUP -// const XSD.AnyURI c_targetResourceAddress := "TARGET_RESOURCE_ADDRESS"; - const XSD.AnyURI c_memberResourceAddress1 := "MEMBER_RESSOURCE_ADDRESS_1"; - const XSD.AnyURI c_memberResourceAddress2 := "MEMBER_RESSOURCE_ADDRESS_2"; - + + testcase TC_CSE_GMG_BV_018() runs on CseTester system CseSystem { // Local variables var MsgIn v_response; - var RequestPrimitive v_request; + var RequestPrimitive v_updateRequest := valueof(m_updateGroupBase); var integer v_aeIndex := -1; + var integer v_containerIndex := -1; var integer v_groupIndex := -1; - - var template RequestPrimitive v_createRequest := m_createGroupBase; - var template RequestPrimitive v_updateRequest := m_updateGroupBase; - var template RequestPrimitive v_createMember; - + var integer v_subGroupIndex := -1; + var XSD.AnyURI v_memberID1; + var XSD.AnyURI v_memberID2; + // Test control - + // Test component configuration f_cf01Up(); - + // Test adapter configuration - + // Preamble v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi - - // and the IUT having a resource at TARGET_RESOURCE_ADDRESS of type <group> - // containing - // memberIDs attribute set to MEMBER_RESOURCE_ADDRESS_1 - // memberType attribute set to RESOURCE_TYPE_1 - // memberTypeValidated attribute set to TRUE - // consistencyStrategy attribute set to # (ABANDON_GROUP) - // and the AE having privileges to perform UPDATE operation on the - // TARGET_RESOURCE_ADDRESS - v_createRequest := f_getCreateRequestPrimitive(c_ResourceTypeGroup, v_createRequest, v_aeIndex); - v_createRequest.primitiveContent.any_1[0].Group_optional := m_contentCreateGroup(1, {c_memberResourceAddress1}, omit); - v_createRequest.primitiveContent.any_1[0].Group_optional.memberType := c_memberType1; - v_createRequest.primitiveContent.any_1[0].Group_optional.memberTypeValidated := true; - v_createRequest.primitiveContent.any_1[0].Group_optional.consistencyStrategy := c_consistentcyStrategy; - v_groupIndex := f_cse_createResource(c_ResourceTypeGroup, v_createRequest, v_aeIndex); - - // and the IUT having a resource at MEMBER_RESOURCE_ADDRESS_1 - // having resourceType attribute RESOURCE_TYPE_1 - // and the IUT having a resource at MEMBER_RESOURCE_ADDRESS_2 - // having resourceType attribute RESOURCE_TYPE_2 - v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_1"); - f_cse_createResource(c_ResourceType1, v_createMember, v_aeIndex); - v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_2"); - f_cse_createResource(c_ResourceType2, v_createMember, v_aeIndex); - - + v_containerIndex := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer"), v_aeIndex); + v_subGroupIndex := f_cse_createResource(int9, m_createGroupBase, v_aeIndex); + v_memberID1 := f_getResourceAddress(v_containerIndex); + v_memberID2 := f_getResourceAddress(v_subGroupIndex); + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, {v_memberID1}, omit, int3, int2), v_aeIndex); //Member type is set to Container(int3) and consistencyStrategy is set to ABANDON GROUP (default value) + + v_updateRequest.primitiveContent.any_1[0].Group_optional.memberIDs := {v_memberID2, v_memberID1}; + v_updateRequest := f_getUpdateRequestPrimitive(int9, v_groupIndex, v_updateRequest); + //Test Body - v_request := f_getUpdateRequestPrimitive(c_ResourceTypeGroup, v_groupIndex, v_updateRequest); -// v_request.to_ := c_targetResourceAddress; - v_request.primitiveContent.any_1[0].Group_optional := valueof(m_contentCreateGroup(2, {c_memberResourceAddress1, c_memberResourceAddress2}, omit)); - - mcaPort.send(m_request(v_request)); + mcaPort.send(m_request(v_updateRequest)); tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int2002))) -> value v_response { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4110))) -> value v_response { tc_ac.stop; - setverdict(pass, testcasename() & ": deleted successful"); + setverdict(pass, testcasename() & ": unsuccessful validation of the resource type during the creation of the group"); } - [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { - tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); - } - [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); - } - } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error create succesfull while the operation should be aborted"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while creating resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while creating resource"); + } + } //Postamble f_cse_postamble_deleteResources(); @@ -6929,19 +6731,80 @@ module OneM2M_Testcases { } } // end group g_CSE_GMG_BV_019 + // Test objective: Check that the IUT detects when the value provided for maxNrOfMembers attribute is less than the value of the currentNrOfMembers attribute. group g_CSE_GMG_BV_020 { - // Test objective: Check that the IUT detects when the value provided for maxNrOfMembers attribute is less than the value of the currentNrOfMembers attribute. - testcase TC_CSE_GMG_BV_020() runs on CseTester system CseSystem + + testcase TC_CSE_GMG_BV_020() runs on CseTester system CseSystem { + // Local variables + var MsgIn v_response; + var RequestPrimitive v_updateRequest := valueof(m_updateGroupBase); + var integer v_aeIndex := -1; + var integer v_containerIndex1 := -1; + var integer v_containerIndex2 := -1; + var integer v_groupIndex := -1; + var ListOfURIs v_memberIDs; + var XSD.PositiveInteger v_maxNrOfMembers:= 1; + + v_updateRequest.primitiveContent.any_1[0].Group_optional.maxNrOfMembers := v_maxNrOfMembers; + + // Test control + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + v_aeIndex := f_cse_preamble_registerAe(-, -); //c_CRUDNDi + v_containerIndex1 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer1"), v_aeIndex); // AE child resource + v_containerIndex2 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer2"), v_aeIndex); // AE child resource + v_memberIDs := {f_getResourceAddress(v_containerIndex1), f_getResourceAddress(v_containerIndex2)}; + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, v_memberIDs, omit, int3), v_aeIndex); + + v_updateRequest := f_getUpdateRequestPrimitive(int9, v_groupIndex, v_updateRequest); + + //Test Body + mcaPort.send(m_request(v_updateRequest)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int6010))) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": max number of member exceeded"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while updating resource"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error update successful while operation is not allowed"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while updating resource"); + } + } + + //Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + } // end group g_CSE_GMG_BV_020 + + group g_CSE_GMG_BV_021 { + // Test objective: Check that the IUT handles validation of the resource type during an UPDATE of the <group> resource when memberIDs contains a sub-group on a temporarily unreachable Hosting CSE. + testcase TC_CSE_GMG_BV_021() runs on CseTester system CseSystem { //Local constants const ResourceType c_ResourceTypeGroup := int9; const ResourceType c_ResourceType1 := int4; const MemberType c_memberType1 := int4; // should be set same type as c_ResourceType1 const XSD.String c_primitiveContent := "primitive_contet"; + const ConsistencyStrategy c_consistentcyStrategy := int1; // ABANDOND_MEMBER // const XSD.AnyURI c_targetResourceAddress := "TARGET_RESOURCE_ADDRESS"; const XSD.AnyURI c_memberResourceAddress1 := "MEMBER_RESSOURCE_ADDRESS_1"; const XSD.AnyURI c_memberResourceAddress2 := "MEMBER_RESSOURCE_ADDRESS_2"; - const XSD.AnyURI c_memberResourceAddress3 := "MEMBER_RESSOURCE_ADDRESS_3"; // Local variables var MsgIn v_response; @@ -6962,44 +6825,52 @@ module OneM2M_Testcases { // Preamble v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi +// TODO: -> register IUT to the remoteCSE - // and the IUT having a resource at TARGET_RESOURCE_ADDRESS of type <group> - // containing - // memberIDs attribute set to MEMBER_RESOURCE_ADDRESS_1, - // MEMBER_RESOURCE_ADDRESS_2 - // maxNrOfMembers attribute set to 2 - // and the AE having privileges to perform UPDATE operation on the TARGET_RESOURCE_ADDRESS v_createRequest := f_getCreateRequestPrimitive(c_ResourceTypeGroup, v_createRequest, v_aeIndex); - v_createRequest.primitiveContent.any_1[0].Group_optional := m_contentCreateGroup(3, {c_memberResourceAddress1, c_memberResourceAddress2, c_memberResourceAddress3}, omit); - v_createRequest.primitiveContent.any_1[0].Group_optional.maxNrOfMembers := 3; + v_createRequest.primitiveContent.any_1[0].Group_optional := m_contentCreateGroup(1, {c_memberResourceAddress1}, omit); + v_createRequest.primitiveContent.any_1[0].Group_optional.memberType := c_memberType1; + v_createRequest.primitiveContent.any_1[0].Group_optional.memberTypeValidated := true; + v_createRequest.primitiveContent.any_1[0].Group_optional.consistencyStrategy := c_consistentcyStrategy; v_groupIndex := f_cse_createResource(c_ResourceTypeGroup, v_createRequest, v_aeIndex); - - // and the IUT having a resource at MEMBER_RESOURCE_ADDRESS_1 - // having resourceType attribute RESOURCE_TYPE_1 - // and the IUT having a resource at MEMBER_RESOURCE_ADDRESS_2 - // having resourceType attribute RESOURCE_TYPE_1 - // and the IUT having a resource at MEMBER_RESOURCE_ADDRESS_3 - // having resourceType attribute RESOURCE_TYPE_1 + // TODO: -> do the resources actually need to be created? + // TODO: choose the right template for member resource v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_1"); f_cse_createResource(c_ResourceType1, v_createMember, v_aeIndex); - v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_2"); - f_cse_createResource(c_ResourceType1, v_createMember, v_aeIndex); - v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_3"); - f_cse_createResource(c_ResourceType1, v_createMember, v_aeIndex); + + // TODO: create resource of type <group> at c_memberResourceAddress2 on remoteCSE + // TODO: set onlineStatus to false on remoteCSE //Test Body v_request := f_getUpdateRequestPrimitive(c_ResourceTypeGroup, v_groupIndex, v_updateRequest); // v_request.to_ := c_targetResourceAddress; - v_request.primitiveContent.any_1[0].Group_optional.maxNrOfMembers := 2; + v_createRequest.primitiveContent.any_1[0].Group_optional := m_contentCreateGroup(2, {c_memberResourceAddress1, c_memberResourceAddress2}, omit); mcaPort.send(m_request(v_request)); tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int4005))) -> value v_response { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value v_response { tc_ac.stop; - setverdict(pass, testcasename() & ": operation is not allowed"); + + if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated)) { + setverdict(fail, testcasename(), ": Error, memberTypeValidated attribute not provided"); + } else { + if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated == false) { + if(lengthof(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs) != 2) { + setverdict(fail, testcasename() & ": Error, wrong number of memberIDs attribute"); + } else { + if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs[0] == c_memberResourceAddress1 and v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs[1] == c_memberResourceAddress2) { + setverdict(pass, testcasename() & ": update successful"); + } else { + setverdict(fail, testcasename(), ": Error, wrong memberIDs"); + } + } + } else { + setverdict(fail, testcasename(), ": Error, memberTypeValidated must be set to FALSE"); + } + } } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; @@ -7016,11 +6887,11 @@ module OneM2M_Testcases { // Tear down f_cf01Down(); } - } // end group g_CSE_GMG_BV_020 + } // end group g_CSE_GMG_BV_021 - group g_CSE_GMG_BV_021 { - // Test objective: Check that the IUT handles validation of the resource type during an UPDATE of the <group> resource when memberIDs contains a sub-group on a temporarily unreachable Hosting CSE. - testcase TC_CSE_GMG_BV_021() runs on CseTester system CseSystem + group g_CSE_GMG_BV_022 { + // Test objective: Check that the IUT handles validation of the resource type during an UPDATE of the <group> resource when memberIDs contains a sub-group on a a previously unreachable Hosting CSE that has become reachable + testcase TC_CSE_GMG_BV_022() runs on CseTester system CseSystem { //Local constants const ResourceType c_ResourceTypeGroup := int9; @@ -7036,6 +6907,7 @@ module OneM2M_Testcases { var MsgIn v_response; var RequestPrimitive v_request; var integer v_aeIndex := -1; + var integer v_remoteCSEIndex := -1; var integer v_groupIndex := -1; var template RequestPrimitive v_createRequest := m_createGroupBase; @@ -7052,14 +6924,17 @@ module OneM2M_Testcases { // Preamble v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi // TODO: -> register IUT to the remoteCSE + //v_remoteCSEIndex := ... v_createRequest := f_getCreateRequestPrimitive(c_ResourceTypeGroup, v_createRequest, v_aeIndex); - v_createRequest.primitiveContent.any_1[0].Group_optional := m_contentCreateGroup(1, {c_memberResourceAddress1}, omit); + v_createRequest.primitiveContent.any_1[0].Group_optional := m_contentCreateGroup(2, {c_memberResourceAddress1, c_memberResourceAddress2}, omit); v_createRequest.primitiveContent.any_1[0].Group_optional.memberType := c_memberType1; - v_createRequest.primitiveContent.any_1[0].Group_optional.memberTypeValidated := true; + v_createRequest.primitiveContent.any_1[0].Group_optional.memberTypeValidated := false; v_createRequest.primitiveContent.any_1[0].Group_optional.consistencyStrategy := c_consistentcyStrategy; v_groupIndex := f_cse_createResource(c_ResourceTypeGroup, v_createRequest, v_aeIndex); + // TODO: -> the AE having a subscription to c_targetResourceAddress + // TODO: -> do the resources actually need to be created? // TODO: choose the right template for member resource v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_1"); @@ -7071,135 +6946,697 @@ module OneM2M_Testcases { //Test Body v_request := f_getUpdateRequestPrimitive(c_ResourceTypeGroup, v_groupIndex, v_updateRequest); -// v_request.to_ := c_targetResourceAddress; - v_createRequest.primitiveContent.any_1[0].Group_optional := m_contentCreateGroup(2, {c_memberResourceAddress1, c_memberResourceAddress2}, omit); + //v_request.from_ := CSE-ID + v_request.to_ := f_getResourceAddress(v_remoteCSEIndex); + //Content set to <remoteCSE> resource containing onlineStatus := false; mcaPort.send(m_request(v_request)); tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value v_response { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value v_response { + tc_ac.stop; + + + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while retrieving resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + } + } + + //Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + } // end group g_CSE_GMG_BV_022 + + + group g_CSE_GMG_BV_023 { + + testcase TC_CSE_GMG_BV_023_01() runs on CseTester system CseSystem { //Create + f_CSE_GMG_BV_023(m_createContainerBase); + }//end TC_CSE_GMG_BV_023_01 + + testcase TC_CSE_GMG_BV_023_02() runs on CseTester system CseSystem { //Update + var template RequestPrimitive v_updateRequest := m_updateContainerBase; + var Labels v_labels_1:= {"VALUE_1"}; + v_updateRequest.primitiveContent.any_1[0].Container_optional.labels := v_labels_1; + f_CSE_GMG_BV_023(v_updateRequest); + }//end TC_CSE_GMG_BV_023_02 + + testcase TC_CSE_GMG_BV_023_03() runs on CseTester system CseSystem { //Retrieve + f_CSE_GMG_BV_023(m_retrieveResource("Temporary", "Temporary")); + }//end TC_CSE_GMG_BV_023_03 + + testcase TC_CSE_GMG_BV_023_04() runs on CseTester system CseSystem { //Delete + f_CSE_GMG_BV_023(m_deleteRequest("Temporary")); + }//end TC_CSE_GMG_BV_023_04 + + function f_CSE_GMG_BV_023(template RequestPrimitive p_requestPrimitive) runs on CseTester { + // Local variables + var MsgIn v_response; + var integer v_aeIndex := -1; + var integer v_acpIndex := -1; + var integer v_containerIndex1 := -1; + var integer v_containerIndex2 := -1; + var integer v_groupIndex := -1; + var integer i; + var ListOfURIs v_memberIDs; + var ListOfURIs v_membersACPIDs; + var template RequestPrimitive v_createAcp := m_createAcp("NotInitialized", "MyACP", -, -); + + // Test control + if(not(PICS_ACP_SUPPORT)) { + setverdict(inconc, testcasename() & ": AccessControlPolicy support is required to run this test case"); + stop; + } + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + v_aeIndex := f_cse_preamble_registerAe(-, -); //c_CRUDNDi + v_acpIndex := f_cse_createResource(int1, v_createAcp, v_aeIndex); // AE child resource + v_containerIndex1 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer1"), v_aeIndex); // AE child resource + v_containerIndex2 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer2"), v_aeIndex); // AE child resource + v_memberIDs := {f_getResourceAddress(v_containerIndex1), f_getResourceAddress(v_containerIndex2)}; + v_membersACPIDs := {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}; + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, v_memberIDs, omit, int3, -, v_membersACPIDs), v_aeIndex); // AE child resource + + p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt"; + p_requestPrimitive.from_ := f_getOriginator(v_groupIndex); + + // Test Body + + mcaPort.send(m_request(valueof(p_requestPrimitive))); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": creation successfull by using fanOutPoint in group resource"); + + if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list)){ + setverdict(fail, testcasename(), ": Error, aggregatedResponse attribute not provided"); + } + else { + for(i:=0; i<lengthof(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list); i := i+1){ + if(not match(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list[i], mw_responsePrimitiveOK)){ + setverdict(fail, testcasename(), ": Error, one responsePrimitve of aggregatedResponse_list is not successful"); + } + } + } + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while creating resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while creating resource"); + } + } + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + + } // end f_CSE_GMG_BV_023 + + } // end group g_CSE_GMG_BV_023 + + group g_CSE_GMG_BO_024 { + + testcase TC_CSE_GMG_BO_024_01() runs on CseTester system CseSystem { //Create + f_CSE_GMG_BO_024(m_createContainerBase, int62); //c_RUDNDi + }//end TC_CSE_GMG_BO_024_01 + + testcase TC_CSE_GMG_BO_024_02() runs on CseTester system CseSystem { //Update + var template RequestPrimitive v_updateRequest := m_updateContainerBase; + var Labels v_labels_1:= {"VALUE_1"}; + v_updateRequest.primitiveContent.any_1[0].Container_optional.labels := v_labels_1; + f_CSE_GMG_BO_024(v_updateRequest, int59);//c_CRDNDi + }//end TC_CSE_GMG_BO_024_02 + + testcase TC_CSE_GMG_BO_024_03() runs on CseTester system CseSystem { //Retrieve + f_CSE_GMG_BO_024(m_retrieveResource("Temporary", "Temporary"), int61);//c_CUDNDi + }//end TC_CSE_GMG_BO_024_03 + + testcase TC_CSE_GMG_BO_024_04() runs on CseTester system CseSystem { //Delete + f_CSE_GMG_BO_024(m_deleteRequest("Temporary"), int55); //c_CRUNDi + }//end TC_CSE_GMG_BO_024_04 + + function f_CSE_GMG_BO_024(template RequestPrimitive p_requestPrimitive, in AccessControlOperations p_accessControlOperations) runs on CseTester { + // Local variables + var MsgIn v_response; + var integer v_aeIndex := -1; + var integer v_acpIndex := -1; + var integer v_containerIndex1 := -1; + var integer v_containerIndex2 := -1; + var integer v_groupIndex := -1; + var ListOfURIs v_memberIDs; + var ListOfURIs v_membersACPIDs; + var template RequestPrimitive v_createAcp := m_createAcp("NotInitialized", "MyACP", -, p_accessControlOperations); + + // Test control + if(not(PICS_ACP_SUPPORT)) { + setverdict(inconc, testcasename() & ": AccessControlPolicy support is required to run this test case"); + stop; + } + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + v_aeIndex := f_cse_preamble_registerAe(-, -); //c_CRUDNDi + v_acpIndex := f_cse_createResource(int1, v_createAcp, v_aeIndex); // AE child resource + v_containerIndex1 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer1"), v_aeIndex); // AE child resource + v_containerIndex2 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer2"), v_aeIndex); // AE child resource + v_memberIDs := {f_getResourceAddress(v_containerIndex1), f_getResourceAddress(v_containerIndex2)}; + v_membersACPIDs := {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}; + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, v_memberIDs, omit, int3, -, v_membersACPIDs), v_aeIndex); // AE child resource + + p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt"; + p_requestPrimitive.from_ := f_getOriginator(v_groupIndex); + + // Test Body + + mcaPort.send(m_request(valueof(p_requestPrimitive))); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4103))) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": Update failed due to lack of privilege"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while operation"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error operation successful while doesn't have privileges"); + } + [] mcaPort.receive{ + tc_ac.stop; + setverdict(fail, testcasename() & ": Error, unexpected message received"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while executing operation"); + } + } + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + + } // end f_CSE_GMG_BO_024 + + } // end group g_CSE_GMG_BO_024 + + group g_CSE_GMG_BV_025 { + + testcase TC_CSE_GMG_BV_025_01() runs on CseTester system CseSystem { //Create + f_CSE_GMG_BV_025(m_createContainerBase); + }//end TC_CSE_GMG_BV_025_01 + + testcase TC_CSE_GMG_BV_025_02() runs on CseTester system CseSystem { //Update + var template RequestPrimitive v_updateRequest := m_updateContainerBase; + var Labels v_labels_1:= {"VALUE_1"}; + v_updateRequest.primitiveContent.any_1[0].Container_optional.labels := v_labels_1; + f_CSE_GMG_BV_025(v_updateRequest); + }//end TC_CSE_GMG_BV_025_02 + + testcase TC_CSE_GMG_BV_025_03() runs on CseTester system CseSystem { //Retrieve + f_CSE_GMG_BV_025(m_retrieveResource("Temporary", "Temporary")); + }//end TC_CSE_GMG_BV_025_03 + + testcase TC_CSE_GMG_BV_025_04() runs on CseTester system CseSystem { //Delete + f_CSE_GMG_BV_025(m_deleteRequest("Temporary")); + }//end TC_CSE_GMG_BV_025_04 + + function f_CSE_GMG_BV_025(template RequestPrimitive p_requestPrimitive) runs on CseTester { + // Local variables + var MsgIn v_response; + var integer v_aeIndex := -1; + var integer v_acpIndex := -1; + var integer v_containerIndex1 := -1; + var integer v_containerIndex2 := -1; + var integer v_groupIndex := -1; + var integer i; + var ListOfURIs v_memberIDs; + var AcpType v_acpIDs; + var template RequestPrimitive v_createAcp := m_createAcp("NotInitialized", "MyACP", -, -); + + // Test control + if(not(PICS_ACP_SUPPORT)) { + setverdict(inconc, testcasename() & ": AccessControlPolicy support is required to run this test case"); + stop; + } + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + v_aeIndex := f_cse_preamble_registerAe(-, -); //c_CRUDNDi + v_acpIndex := f_cse_createResource(int1, v_createAcp, v_aeIndex); // AE child resource + v_containerIndex1 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer1"), v_aeIndex); // AE child resource + v_containerIndex2 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer2"), v_aeIndex); // AE child resource + v_memberIDs := {f_getResourceAddress(v_containerIndex1), f_getResourceAddress(v_containerIndex2)}; + v_acpIDs := {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}; + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, v_memberIDs, v_acpIDs, int3), v_aeIndex); // AE child resource + + p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt"; + p_requestPrimitive.from_ := f_getOriginator(v_groupIndex); + + // Test Body + + mcaPort.send(m_request(valueof(p_requestPrimitive))); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": creation successfull by using fanOutPoint in group resource"); + + if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list)){ + setverdict(fail, testcasename(), ": Error, aggregatedResponse attribute not provided"); + } + else { + for(i:=0; i<lengthof(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list); i := i+1){ + if(not match(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list[i], mw_responsePrimitiveOK)){ + setverdict(fail, testcasename(), ": Error, one responsePrimitve of aggregatedResponse_list is not successful"); + } + } + } + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while creating resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while creating resource"); + } + } + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + + } // end f_CSE_GMG_BV_025 + + } // end group g_CSE_GMG_BV_025 + + group g_CSE_GMG_BO_026 { + + testcase TC_CSE_GMG_BO_026_01() runs on CseTester system CseSystem { //Create + f_CSE_GMG_BO_026(m_createContainerBase, int62); //c_RUDNDi + }//end TC_CSE_GMG_BO_026_01 + + testcase TC_CSE_GMG_BO_026_02() runs on CseTester system CseSystem { //Update + var template RequestPrimitive v_updateRequest := m_updateContainerBase; + var Labels v_labels_1:= {"VALUE_1"}; + v_updateRequest.primitiveContent.any_1[0].Container_optional.labels := v_labels_1; + f_CSE_GMG_BO_026(v_updateRequest, int59);//c_CRDNDi + }//end TC_CSE_GMG_BO_026_02 + + testcase TC_CSE_GMG_BO_026_03() runs on CseTester system CseSystem { //Retrieve + f_CSE_GMG_BO_026(m_retrieveResource("Temporary", "Temporary"), int61);//c_CUDNDi + }//end TC_CSE_GMG_BO_026_03 + + testcase TC_CSE_GMG_BO_026_04() runs on CseTester system CseSystem { //Delete + f_CSE_GMG_BO_026(m_deleteRequest("Temporary"), int55); //c_CRUNDi + }//end TC_CSE_GMG_BO_026_04 + + function f_CSE_GMG_BO_026(template RequestPrimitive p_requestPrimitive, in AccessControlOperations p_accessControlOperations) runs on CseTester { + // Local variables + var MsgIn v_response; + var integer v_aeIndex := -1; + var integer v_acpIndex := -1; + var integer v_containerIndex1 := -1; + var integer v_containerIndex2 := -1; + var integer v_groupIndex := -1; + var ListOfURIs v_memberIDs; + var AcpType v_acpIDs; + var template RequestPrimitive v_createAcp := m_createAcp("NotInitialized", "MyACP", -, p_accessControlOperations); + + // Test control + if(not(PICS_ACP_SUPPORT)) { + setverdict(inconc, testcasename() & ": AccessControlPolicy support is required to run this test case"); + stop; + } + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + v_aeIndex := f_cse_preamble_registerAe(-, -); //c_CRUDNDi + v_acpIndex := f_cse_createResource(int1, v_createAcp, v_aeIndex); // AE child resource + v_containerIndex1 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer1"), v_aeIndex); // AE child resource + v_containerIndex2 := f_cse_createResource(int3, m_createContainer("NotInitialized", "MyContainer2"), v_aeIndex); // AE child resource + v_memberIDs := {f_getResourceAddress(v_containerIndex1), f_getResourceAddress(v_containerIndex2)}; + v_acpIDs := {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}; + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, v_memberIDs, v_acpIDs, int3), v_aeIndex); // AE child resource + + p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt"; + p_requestPrimitive.from_ := f_getOriginator(v_groupIndex); + + // Test Body + + mcaPort.send(m_request(valueof(p_requestPrimitive))); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4103))) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": Update failed due to lack of privilege"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while operation"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error operation successful while doesn't have privileges"); + } + [] mcaPort.receive{ + tc_ac.stop; + setverdict(fail, testcasename() & ": Error, unexpected message received"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while executing operation"); + } + } + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + + } // end f_CSE_GMG_BO_026 + + } // end group g_CSE_GMG_BO_026 + + group g_CSE_GMG_BV_027 { + + testcase TC_CSE_GMG_BV_027_01() runs on CseTester system CseSystem { //Create + var template PrimitiveContent v_contentResponse; + v_contentResponse.any_1[0].Container_optional := mw_contentContainer_rc1; + + f_CSE_GMG_BV_027(m_createContainerBase, v_contentResponse); + }//end TC_CSE_GMG_BV_027_01 + + testcase TC_CSE_GMG_BV_027_02() runs on CseTester system CseSystem { //Update + var template RequestPrimitive v_updateRequest := m_updateAeBase; + var template PrimitiveContent v_contentResponse; + var Labels v_labels_1:= {"VALUE_1"}; + v_contentResponse.any_1[0].AE_optional := mw_contentAe_allOmit; // TODO make a new template with all attributes set to * for exemple + v_contentResponse.any_1[0].AE_optional.labels := ?; + v_updateRequest.primitiveContent.any_1[0].AE_optional.labels := v_labels_1; + + f_CSE_GMG_BV_027(v_updateRequest, v_contentResponse); + }//end TC_CSE_GMG_BV_027_02 + + testcase TC_CSE_GMG_BV_027_03() runs on CseTester system CseSystem { //Retrieve + var template PrimitiveContent v_contentResponse; + v_contentResponse.any_1[0].AE_optional := mw_contentAeBase; + + f_CSE_GMG_BV_027(m_retrieveResource("Temporary", "Temporary"), v_contentResponse); + }//end TC_CSE_GMG_BV_027_03 + + testcase TC_CSE_GMG_BV_027_04() runs on CseTester system CseSystem { //Delete + var template PrimitiveContent v_contentResponse; + v_contentResponse.any_1[0].AE_optional := mw_contentAeBase;// TODO see with wath should it be matched + + f_CSE_GMG_BV_027(m_deleteRequest("Temporary"), v_contentResponse); + }//end TC_CSE_GMG_BV_027_04 + + function f_CSE_GMG_BV_027(template RequestPrimitive p_requestPrimitive, template PrimitiveContent p_contentResponse) runs on CseTester { + //Local constants + const integer c_numberOfResponsePrimitive := 2; + + // Local variables + var MsgIn v_response; + var integer v_aeIndex1 := -1; + var integer v_aeIndex2 := -1; + var integer v_groupIndex := -1; + var ListOfURIs v_memberIDs; + var integer i; + + // Test control + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + v_aeIndex1 := f_cse_preamble_registerAe(-, -); //c_CRUDNDi + v_aeIndex2 := f_cse_createResource(int2, m_createAe(PX_APP_ID, -, PX_AE_ID_STEM, "MyAe2", omit), -1); // AE2 is registred + v_memberIDs := {f_getResourceAddress(v_aeIndex1), f_getResourceAddress(v_aeIndex2)}; + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, v_memberIDs, omit, int2), -1); + + p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt"; + p_requestPrimitive.from_ := f_getOriginator(v_aeIndex1); //TODO see if it is correct or if we have to use PX_SUPER_ADMIN + + // Test Body + + mcaPort.send(m_request(valueof(p_requestPrimitive))); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": creation successfull by using fanOutPoint in group resource"); + + if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list)){ + setverdict(fail, testcasename(), ": Error, aggregatedResponse attribute not provided"); + } + else{ + if(lengthof(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list) != c_numberOfResponsePrimitive){ + setverdict(fail, testcasename(), ": Error, length of aggregatedResponse is not valid"); + } + else{ + for(i:=0; i<c_numberOfResponsePrimitive; i:=i+1){ + if(not match(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list[i].primitiveContent, p_contentResponse)){ + setverdict(fail, testcasename(), ": Error, aggregatedResponse doesn't match with template expected"); + } + } + } + } + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while creating resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while creating resource"); + } + } + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + + } // end f_CSE_GMG_BV_027 + + } // end group g_CSE_GMG_BV_027 + + group g_CSE_GMG_BV_028 { + + testcase TC_CSE_GMG_BV_028() runs on CseTester system CseSystem { + //Local constants + const integer c_numberOfResponsePrimitive := 2; + + // Local variables + var MsgIn v_response; + var integer v_aeIndex1 := -1; + var integer v_aeIndex2 := -1; + var integer v_acpIndex := -1; + var integer v_containerIndex1 := -1; + var integer v_containerIndex2 := -1; + var integer v_groupIndex := -1; + var integer i; + var ListOfURIs v_memberIDs; + var ListOfURIs v_membersACPIDs; + var RequestPrimitive v_createRequest := valueof(m_createContentInstance("NotInitialized", "Value1")); + var template RequestPrimitive v_createAcp := m_createAcp("NotInitialized", "MyACP", -, -); + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].ContentInstance_optional := mw_contentContentInstanceBase; + + // Test control + if(not(PICS_ACP_SUPPORT)) { + setverdict(inconc, testcasename() & ": AccessControlPolicy support is required to run this test case"); + stop; + } + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + v_aeIndex1 := f_cse_preamble_registerAe(-, -); //c_CRUDNDi + v_aeIndex2 := f_cse_createResource(int2, m_createAe(PX_APP_ID, -, PX_AE_ID_STEM, "MyAe2", omit), -1); // AE2 is registred + v_acpIndex := f_cse_createResource(int1, v_createAcp, -1); // AE child resource + v_containerIndex1 := f_cse_createResource(int3, m_createContainer("NotInitialized", "myCon"), v_aeIndex1); // AE1 child resource + v_containerIndex2 := f_cse_createResource(int3, m_createContainer("NotInitialized", "myCon"), v_aeIndex2); // AE2 child resource + v_memberIDs := {f_getResourceAddress(v_aeIndex1), f_getResourceAddress(v_aeIndex2)}; + v_membersACPIDs := {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}; + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, v_memberIDs, omit, int2, -, v_membersACPIDs), -1); + + v_createRequest.to_ := f_getResourceAddress(v_groupIndex) & "/fopt" & "/myCon"; + v_createRequest.from_ := f_getOriginator(v_aeIndex1); //TODO see if it is correct or if we have to use PX_SUPER_ADMIN + + // Test Body + + mcaPort.send(m_request(v_createRequest)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { tc_ac.stop; - - if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated)) { - setverdict(fail, testcasename(), ": Error, memberTypeValidated attribute not provided"); - } else { - if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberTypeValidated == false) { - if(lengthof(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs) != 2) { - setverdict(fail, testcasename() & ": Error, wrong number of memberIDs attribute"); - } else { - if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs[0] == c_memberResourceAddress1 and v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Group_optional.memberIDs[1] == c_memberResourceAddress2) { - setverdict(pass, testcasename() & ": update successful"); - } else { - setverdict(fail, testcasename(), ": Error, wrong memberIDs"); + setverdict(pass, testcasename() & ": creation successfull by using fanOutPoint in group resource"); + + if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list)){ + setverdict(fail, testcasename(), ": Error, aggregatedResponse attribute not provided"); + } + else{ + if(lengthof(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list) != c_numberOfResponsePrimitive){ + setverdict(fail, testcasename(), ": Error, length of aggregatedResponse is not valid"); + } + else{ + for(i:=0; i<c_numberOfResponsePrimitive; i:=i+1){ + if(not match(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list[i].primitiveContent, v_contentResponse)){ + setverdict(fail, testcasename(), ": Error, aggregatedResponse doesn't match with template expected"); } } - } else { - setverdict(fail, testcasename(), ": Error, memberTypeValidated must be set to FALSE"); - } + } } } - [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { - tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); - } - [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); - } - } - - //Postamble + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while creating resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while creating resource"); + } + } + + // Postamble f_cse_postamble_deleteResources(); - + // Tear down - f_cf01Down(); - } - } // end group g_CSE_GMG_BV_021 + f_cf01Down(); - group g_CSE_GMG_BV_022 { - // Test objective: Check that the IUT handles validation of the resource type during an UPDATE of the <group> resource when memberIDs contains a sub-group on a a previously unreachable Hosting CSE that has become reachable - testcase TC_CSE_GMG_BV_022() runs on CseTester system CseSystem - { + } // end f_CSE_GMG_BV_028 + + } // end group g_CSE_GMG_BV_028 + + group g_CSE_GMG_BV_029 { + + testcase TC_CSE_GMG_BV_029() runs on CseTester system CseSystem { //Local constants - const ResourceType c_ResourceTypeGroup := int9; - const ResourceType c_ResourceType1 := int4; - const MemberType c_memberType1 := int4; // should be set same type as c_ResourceType1 - const XSD.String c_primitiveContent := "primitive_contet"; - const ConsistencyStrategy c_consistentcyStrategy := int1; // ABANDOND_MEMBER -// const XSD.AnyURI c_targetResourceAddress := "TARGET_RESOURCE_ADDRESS"; - const XSD.AnyURI c_memberResourceAddress1 := "MEMBER_RESSOURCE_ADDRESS_1"; - const XSD.AnyURI c_memberResourceAddress2 := "MEMBER_RESSOURCE_ADDRESS_2"; - + const integer c_numberOfResponsePrimitive := 2; + // Local variables var MsgIn v_response; - var RequestPrimitive v_request; - var integer v_aeIndex := -1; - var integer v_remoteCSEIndex := -1; + var integer v_aeIndex1 := -1; + var integer v_aeIndex2 := -1; + var integer v_acpIndex := -1; + var integer v_containerIndex1 := -1; + var integer v_containerIndex2 := -1; var integer v_groupIndex := -1; - - var template RequestPrimitive v_createRequest := m_createGroupBase; - var template RequestPrimitive v_updateRequest := m_updateGroupBase; - var template RequestPrimitive v_createMember; - + var integer i; + var ListOfURIs v_memberIDs; + var ListOfURIs v_membersACPIDs; + var template RequestPrimitive v_createAcp := m_createAcp("NotInitialized", "MyACP", -, -); + var template PrimitiveContent v_contentResponse; + var XSD.AnyURI v_fanoutPointAddress; + + v_contentResponse.any_1[0].Container_optional := mw_contentContainerBase; + // Test control - + if(not(PICS_ACP_SUPPORT)) { + setverdict(inconc, testcasename() & ": AccessControlPolicy support is required to run this test case"); + stop; + } + // Test component configuration f_cf01Up(); - + // Test adapter configuration - + // Preamble - v_aeIndex := f_cse_preamble_registerAe(); //c_CRUDNDi -// TODO: -> register IUT to the remoteCSE - //v_remoteCSEIndex := ... - - v_createRequest := f_getCreateRequestPrimitive(c_ResourceTypeGroup, v_createRequest, v_aeIndex); - v_createRequest.primitiveContent.any_1[0].Group_optional := m_contentCreateGroup(2, {c_memberResourceAddress1, c_memberResourceAddress2}, omit); - v_createRequest.primitiveContent.any_1[0].Group_optional.memberType := c_memberType1; - v_createRequest.primitiveContent.any_1[0].Group_optional.memberTypeValidated := false; - v_createRequest.primitiveContent.any_1[0].Group_optional.consistencyStrategy := c_consistentcyStrategy; - v_groupIndex := f_cse_createResource(c_ResourceTypeGroup, v_createRequest, v_aeIndex); - - // TODO: -> the AE having a subscription to c_targetResourceAddress - - // TODO: -> do the resources actually need to be created? - // TODO: choose the right template for member resource - v_createMember := m_createContentInstance(f_getResourceAddress(v_aeIndex), c_primitiveContent & "_1"); - f_cse_createResource(c_ResourceType1, v_createMember, v_aeIndex); - - // TODO: create resource of type <group> at c_memberResourceAddress2 on remoteCSE - // TODO: set onlineStatus to false on remoteCSE - - - //Test Body - v_request := f_getUpdateRequestPrimitive(c_ResourceTypeGroup, v_groupIndex, v_updateRequest); - //v_request.from_ := CSE-ID - v_request.to_ := f_getResourceAddress(v_remoteCSEIndex); - //Content set to <remoteCSE> resource containing onlineStatus := false; - - mcaPort.send(m_request(v_request)); + v_aeIndex1 := f_cse_preamble_registerAe(-, -); //c_CRUDNDi + v_aeIndex2 := f_cse_createResource(int2, m_createAe(PX_APP_ID, -, PX_AE_ID_STEM, "MyAe2", omit), -1); // AE2 is registred + v_acpIndex := f_cse_createResource(int1, v_createAcp, -1); // AE child resource + v_containerIndex1 := f_cse_createResource(int3, m_createContainer("NotInitialized", "myCon"), v_aeIndex1); // AE1 child resource + v_containerIndex2 := f_cse_createResource(int3, m_createContainer("NotInitialized", "myCon"), v_aeIndex2); // AE2 child resource + v_memberIDs := {f_getResourceAddress(v_aeIndex1), f_getResourceAddress(v_aeIndex2)}; + v_membersACPIDs := {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}; + v_groupIndex := f_cse_createResource(int9, m_createGroup(2, v_memberIDs, omit, int2, -, v_membersACPIDs), -1); + + v_fanoutPointAddress := f_getResourceAddress(v_groupIndex) & "/fopt" & "/myCon" & "/la"; + + // Test Body + mcaPort.send(m_request(m_retrieveResource(v_fanoutPointAddress, f_getOriginator(v_aeIndex1)))); //TODO see if it is correct or if we have to use PX_SUPER_ADMIN tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value v_response { + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { tc_ac.stop; - - + setverdict(pass, testcasename() & ": creation successfull by using fanOutPoint in group resource"); + + if(not ispresent(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list)){ + setverdict(fail, testcasename(), ": Error, aggregatedResponse attribute not provided"); + } + else{ + if(lengthof(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list) != c_numberOfResponsePrimitive){ + setverdict(fail, testcasename(), ": Error, length of aggregatedResponse is not valid"); + } + else{ + for(i:=0; i<c_numberOfResponsePrimitive; i:=i+1){ + if(not match(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AggregatedResponse.responsePrimitive_list[i].primitiveContent, v_contentResponse)){ + setverdict(fail, testcasename(), ": Error, aggregatedResponse doesn't match with template expected"); + } + } + } + } } - [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { - tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); - } - [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); - } - } - - //Postamble + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while creating resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while creating resource"); + } + } + + // Postamble f_cse_postamble_deleteResources(); - + // Tear down - f_cf01Down(); - } - } // end group g_CSE_GMG_BV_022 + f_cf01Down(); + + } // end f_CSE_GMG_BV_029 + + } // end group g_CSE_GMG_BV_029 } // end group Group_Managment @@ -7649,7 +8086,9 @@ module OneM2M_Testcases { v_request:= f_getCreateRequestPrimitive(int3, m_createContainerBase, v_aeIndex); - f_is_component_done(v_notifyHandler); + if(v_notifyHandler.running) { + v_notifyHandler.stop; + }; // Test Body v_notifyHandler.start(f_cse_notifyProcedure(v_contentResponse)); // check if the notification is well received and if its content matchs @@ -7673,6 +8112,8 @@ module OneM2M_Testcases { setverdict(inconc, testcasename() & ": No answer while creating resource type int3 (Container)"); } } + + f_is_component_done(v_notifyHandler); //Postamble f_cse_postamble_deleteResources(); @@ -7716,7 +8157,9 @@ module OneM2M_Testcases { v_deleteRequest:= valueof(m_deleteRequest(f_getResourceAddress(v_aeIndex))); // Ae delete request - f_is_component_done(v_notifyHandler); + if(v_notifyHandler.running) { + v_notifyHandler.stop; + }; //Test Body v_notifyHandler.start(f_CSE_SUB_BV_008(v_contentResponse)); // check if the notification is well received and if its content matchs @@ -7740,6 +8183,8 @@ module OneM2M_Testcases { setverdict(inconc, testcasename() & ": No answer while deleting resource type int2 (AE)"); } } + + f_is_component_done(v_notifyHandler); //Postamble f_cse_postamble_deleteResources(); @@ -7820,7 +8265,9 @@ module OneM2M_Testcases { v_deleteRequest := valueof(m_deleteRequest(f_getResourceAddress(v_containerResourceIndex)));// Container deletion request - f_is_component_done(v_notifyHandler); + if(v_notifyHandler.running) { + v_notifyHandler.stop; + }; //Test Body v_notifyHandler.start(f_cse_notifyProcedure(v_contentResponse)); // check if the notification is well received and if its content matchs @@ -7845,6 +8292,8 @@ module OneM2M_Testcases { } } + f_is_component_done(v_notifyHandler); + //Postamble f_cse_postamble_deleteResources(); @@ -7900,7 +8349,9 @@ module OneM2M_Testcases { v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); - f_is_component_done(v_notifyHandler); + if(v_notifyHandler.running) { + v_notifyHandler.stop; + }; // Test Body v_notifyHandler.start(f_cse_notifyProcedure(v_contentResponse)); // check if the notification is well received and if its content matchs @@ -7926,6 +8377,8 @@ module OneM2M_Testcases { } } + f_is_component_done(v_notifyHandler); + //Postamble f_cse_postamble_deleteResources(); @@ -8041,7 +8494,9 @@ module OneM2M_Testcases { v_resourceIndex := f_cse_createResource(int23, v_createRequest, v_aeIndex); // Subscription - f_is_component_done(v_notifyHandler); + if(v_notifyHandler.running) { + v_notifyHandler.stop; + }; // Test Body v_notifyHandler.start(f_cse_notifyProcedure(v_contentResponse)); // check if the notification is well received and if its content matchs @@ -8077,6 +8532,8 @@ module OneM2M_Testcases { setverdict(inconc, testcasename() & ": No answer while retrieving resource"); } } + + f_is_component_done(v_notifyHandler); //Postamble f_cse_postamble_deleteResources(); @@ -8122,12 +8579,12 @@ module OneM2M_Testcases { v_resourceIndex := f_cse_createResource(int23, v_createRequest, v_aeIndex);// Subscription - f_is_component_done(v_notifyHandler); + if(v_notifyHandler.running) { + v_notifyHandler.stop; + }; // Test Body - v_notifyHandler.start(f_cse_notifyProcedure(v_contentResponse)); // check if the notification is well received and if its content matchs - v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // AE update request f_cse_updateResource(v_request); // AE update @@ -8154,6 +8611,8 @@ module OneM2M_Testcases { setverdict(inconc, testcasename() & ": No answer while retrieving Subscription Resource"); } } + + f_is_component_done(v_notifyHandler); //Postamble f_cse_postamble_deleteResources(); @@ -8202,7 +8661,9 @@ module OneM2M_Testcases { v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // Update request - f_is_component_done(v_notifyHandler); + if(v_notifyHandler.running) { + v_notifyHandler.stop; + }; // Test Body v_notifyHandler.start(f_cse_notifyProcedure(v_contentResponse)); // check if the notification is well received and if its content matchs @@ -8226,6 +8687,8 @@ module OneM2M_Testcases { setverdict(inconc, testcasename() & ": No answer while updating resource type int2 (Ae) or None notification received"); } } + + f_is_component_done(v_notifyHandler); //Postamble f_cse_postamble_deleteResources(); @@ -8272,7 +8735,9 @@ module OneM2M_Testcases { v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // Update request - f_is_component_done(v_notifyHandler); + if(v_notifyHandler.running) { + v_notifyHandler.stop; + }; // Test Body v_notifyHandler.start(f_CSE_SUB_BV_016()); // check that no notification is received @@ -8293,6 +8758,8 @@ module OneM2M_Testcases { } } + f_is_component_done(v_notifyHandler); + //Postamble f_cse_postamble_deleteResources(); @@ -8355,7 +8822,9 @@ module OneM2M_Testcases { v_request := valueof(m_deleteRequest(f_getResourceAddress(v_resourceIndex))); // Subscription resource deletion request - f_is_component_done(v_notifyHandler); + if(v_notifyHandler.running) { + v_notifyHandler.stop; + }; // Test Body v_notifyHandler.start(f_CSE_SUB_BV_017(f_getResourceAddress(v_resourceIndex))); // check that no notification is received @@ -8378,6 +8847,8 @@ module OneM2M_Testcases { setverdict(inconc, testcasename() & ": No answer while deleting resource type int23 (Subscription)"); } } + + f_is_component_done(v_notifyHandler); //Postamble f_cse_postamble_deleteResources(); @@ -8458,7 +8929,9 @@ module OneM2M_Testcases { v_resourceIndex := f_cse_createResource(int23, v_createRequest, v_aeIndex);//Subscription - f_is_component_done(v_notifyHandler); + if(v_notifyHandler.running) { + v_notifyHandler.stop; + }; // Test Body v_notifyHandler.start(f_CSE_SUB_BV_018(v_contentResponse, numberOfAggregatedNotification)); // check that no notification is received @@ -8475,6 +8948,8 @@ module OneM2M_Testcases { v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // Update request 3 f_cse_updateResource(v_request); + f_is_component_done(v_notifyHandler); + //Postamble f_cse_postamble_deleteResources(); @@ -8557,7 +9032,9 @@ module OneM2M_Testcases { v_resourceIndex := f_cse_createResource(int23, v_createRequest, v_aeIndex);//Subscription - f_is_component_done(v_notifyHandler); + if(v_notifyHandler.running) { + v_notifyHandler.stop; + }; // Test Body v_notifyHandler.start(f_CSE_SUB_BV_018(v_contentResponse, 2)); // check that no notification is received @@ -8570,6 +9047,8 @@ module OneM2M_Testcases { v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // Update request 2 f_cse_updateResource(v_request); + f_is_component_done(v_notifyHandler); + //Postamble f_cse_postamble_deleteResources(); @@ -8620,7 +9099,9 @@ module OneM2M_Testcases { v_resourceIndex := f_cse_createResource(int23, v_createRequest, v_aeIndex);//Subscription - f_is_component_done(v_notifyHandler); + if(v_notifyHandler.running) { + v_notifyHandler.stop; + }; // Test Body v_notifyHandler.start(f_cse_notifyProcedure(v_contentResponse)); // check if the notification is well received and if its content matchs @@ -8637,6 +9118,8 @@ module OneM2M_Testcases { v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // Update request 3 f_cse_updateResource(v_request); + f_is_component_done(v_notifyHandler); + //Postamble f_cse_postamble_deleteResources();