diff --git a/OneM2M_Functions.ttcn b/OneM2M_Functions.ttcn index b8e94d70f70287bcdc14f23a3d350b08b1d3d016..9b08ae0837a9baa8c4d73c6cdb9df74c9fafabbb 100644 --- a/OneM2M_Functions.ttcn +++ b/OneM2M_Functions.ttcn @@ -7,7 +7,7 @@ * * @author ETSI * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/OneM2M_Functions.ttcn $ - * $Id: OneM2M_Functions.ttcn 43 2016-04-13 12:16:12Z reinaortega $ + * $Id: OneM2M_Functions.ttcn 76 2016-04-29 14:15:01Z berge $ * @desc Module containing functions for oneM2M * */ @@ -33,6 +33,7 @@ module OneM2M_Functions { // Map map(self:mcaPort, system:mcaPort); + map(self:acPort, system:acPort); activate(a_default()); // Connect @@ -52,7 +53,7 @@ module OneM2M_Functions { var XSD.ID v_acpId; - v_acpId := f_createAccessControlPolicyAux(p_allowedOperations); + v_acpId := f_createAccessControlPolicyAux(p_allowedOperations := p_allowedOperations); mcaPort.send(m_request(m_createAeAux(p_name, {v_acpId}))); tc_ac.start; @@ -62,6 +63,7 @@ module OneM2M_Functions { log("Preamble: Application registered successfuly"); if(ischosen(v_response.responsePrimitive_.primitiveContent.any_1[0].AE)) { vc_ae := v_response.responsePrimitive_.primitiveContent.any_1[0].AE; + f_sendAcPrimitive("AE-ID_changed", vc_ae.aE_ID); } } [] mcaPort.receive(mw_responseKO) { @@ -91,7 +93,7 @@ module OneM2M_Functions { var M2MResponsePrimitive v_response; if (PX_RUN_POSTAMBLE) { - mcaPort.send(m_request(m_deleteAe("/" & PX_CSE_NAME & "/" & valueof(p_aeName)))); + mcaPort.send(m_request(m_deleteAe(PX_URI_CSE & PX_CSE_NAME & "/" & valueof(p_aeName)))); tc_ac.start; alt { [] mcaPort.receive(mw_responseOK) { @@ -107,7 +109,7 @@ module OneM2M_Functions { } } - mcaPort.send(m_request(m_deleteAcp("/" & PX_CSE_NAME & "/MyAcp"))); + mcaPort.send(m_request(m_deleteAcp(PX_URI_CSE & PX_CSE_NAME & "/MyAcp"))); tc_ac.start; alt { [] mcaPort.receive(mw_responseOK) { @@ -122,6 +124,8 @@ module OneM2M_Functions { log("Postamble: No answer while deleting resource"); } } + + } f_postamble_default(); @@ -130,7 +134,8 @@ module OneM2M_Functions { function f_postamble_default() runs on M2M { unmap(self:mcaPort, system:mcaPort); - stop; + unmap(self:acPort, system:acPort); + //stop; } }//end group postambleFunctions @@ -164,9 +169,6 @@ module OneM2M_Functions { if (p_resourceType == int1) {//AccessControlPolicy - if(isvalue(p_allowedOperations)){ - p_request.primitiveContent.any_1[0].ACP_create := valueof(m_contentCreateAcp (c_defaultResourceName, p_allowedOperations)); - } } if (p_resourceType == int9) {//group p_request.primitiveContent.any_1[0].Group_create := m_contentCreateGroup (1, {"/" & PX_CSE_NAME & "/" & vc_ae.resourceID}, omit); @@ -218,12 +220,25 @@ module OneM2M_Functions { return "1"; } + + function f_getAttribute(in MyAttributeList p_attributeList, in XSD.NCName p_attributeName) return Attribute { + var integer i; + var Attribute v_attribute := {-, -}; + + for (i:=0; i < lengthof(p_attributeList); i := i + 1){ + if(p_attributeList[i].name == p_attributeName){ + } + } + + return v_attribute; + + } }//end group getSetFunctions group helpingFunctions { - function f_createResource(in ResourceType p_resourceType, XSD.ID p_parentResourceAddress, template RequestPrimitive p_requestPrimitive) runs on M2M { + function f_createResource(in ResourceType p_resourceType, XSD.ID p_parentResourceAddress, template RequestPrimitive p_requestPrimitive) runs on M2M return RequestPrimitive { var M2MResponsePrimitive v_response; var RequestPrimitive v_request; @@ -249,39 +264,100 @@ module OneM2M_Functions { setverdict(inconc, "f_createResource: No answer while creating resource type " & int2str(enum2int(p_resourceType))); } } + + return v_request; } - function f_createAccessControlPolicyAux(in template (value) AccessControlOperations p_allowedOperations) runs on M2M return XSD.ID{ + function f_createAccessControlPolicyAux(in template (value) XSD.String p_acpName := "MyAcp", in template (value) AccessControlOperations p_allowedOperations := int63) runs on M2M return XSD.ID{ + + var M2MResponsePrimitive v_response; + var XSD.ID v_acpId; + + mcaPort.send(m_request(m_createAcpAux(p_acpName := p_acpName, p_allowedOperations := p_allowedOperations))); + tc_ac.start; + alt { + [] mcaPort.receive(mw_responseOK) -> value v_response { + tc_ac.stop; + setverdict(pass, "f_createAccessControlPolicy: Resource type " & int2str(1) & " created successfuly"); + v_acpId := f_getResourceId(v_response.responsePrimitive_.primitiveContent); + return v_acpId; + } + [] mcaPort.receive(mw_responseKO) { + tc_ac.stop; + setverdict(inconc, "f_createAccessControlPolicy: Error while creating resource type " & int2str(1)); + } + [] mcaPort.receive { + tc_ac.stop; + setverdict(inconc, "f_createAccessControlPolicy: Unexpected message received"); + } + [] tc_ac.timeout { + setverdict(inconc, "f_createAccessControlPolicy: No answer while creating resource type " & int2str(1)); + } + } - var M2MResponsePrimitive v_response; - var XSD.ID v_acpId; + return "0"; + + } - mcaPort.send(m_request(m_createAcpAux(p_allowedOperations))); - tc_ac.start; - alt { - [] mcaPort.receive(mw_responseOK) -> value v_response { - tc_ac.stop; - setverdict(pass, "f_createAccessControlPolicy: Resource type " & int2str(1) & " created successfuly"); - v_acpId := f_getResourceId(v_response.responsePrimitive_.primitiveContent); - return v_acpId; - } - [] mcaPort.receive(mw_responseKO) { - tc_ac.stop; - setverdict(inconc, "f_createAccessControlPolicy: Error while creating resource type " & int2str(1)); - } - [] mcaPort.receive { - tc_ac.stop; - setverdict(inconc, "f_createAccessControlPolicy: Unexpected message received"); - } - [] tc_ac.timeout { - setverdict(inconc, "f_createAccessControlPolicy: No answer while creating resource type " & int2str(1)); - } - } - return "0"; + function f_createContainerResourceAux (XSD.ID p_parentResourceAddress) runs on M2M return RequestPrimitive { + + var M2MResponsePrimitive v_response; + var RequestPrimitive v_request; + var XSD.ID v_acpId; + + v_acpId := f_createAccessControlPolicyAux(p_acpName := "MyAcp_2"); + + v_request := valueof(m_createContainerBase); + v_request.primitiveContent.any_1[0].Container_create.accessControlPolicyIDs := {v_acpId}; + v_request.primitiveContent.any_1[0].Container_create.resourceName := "MyContainerAux"; + + f_createResource(int3, p_parentResourceAddress, v_request ); + + return v_request; - } + } + + function f_updateAcpAuxResource (XSD.ID p_acpAddress, in template (value) AccessControlOperations p_allowedOperations) runs on M2M { + var RequestPrimitive v_request; + + v_request := valueof(m_updateAcpBase); + + v_request.to_ := p_acpAddress; + v_request.primitiveContent.any_1[0].ACP_update.privileges.accessControlRule_list := { + { + accessControlOriginators := {"admin:admin"}, + accessControlOperations := p_allowedOperations, + accessControlContexts_list := omit + } + }; + + mcaPort.send(m_request(v_request)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_responseOK) { + tc_ac.stop; + setverdict(pass, "f_updateAcpAuxResource: " & p_acpAddress & " resource updated successfuly"); + //TODO: Check that name attribute is provided + } + [] mcaPort.receive(mw_responseKO) { + tc_ac.stop; + setverdict(fail, "f_updateAcpAuxResource: Error while updating " & p_acpAddress & " resource"); + } + [] tc_ac.timeout { + setverdict(inconc, "f_updateAcpAuxResource: No answer while updating " & p_acpAddress & " resource" ); + } + } + } + + function f_sendAcPrimitive(in charstring event, in charstring data) runs on M2M { + + var charstring v_data := "" & data; // clear encoding rules (ttwb issue ?) + acPort.send(AcRequestPrimitive:{event, {charstring := v_data}}); + + } + }//end group helpingFunctions diff --git a/OneM2M_Pixits.ttcn b/OneM2M_Pixits.ttcn index 54f2f05f7817cd99195df02a3f7c797483e20943..7d62acc00646ca1f516f9608314f62a505dc923d 100644 --- a/OneM2M_Pixits.ttcn +++ b/OneM2M_Pixits.ttcn @@ -7,7 +7,7 @@ * * @author ETSI * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/OneM2M_Pixits.ttcn $ - * $Id: OneM2M_Pixits.ttcn 39 2016-04-08 12:34:02Z berge $ + * $Id: OneM2M_Pixits.ttcn 49 2016-04-25 08:29:23Z reinaortega $ * @desc Module containing Pixits for oneM2M * */ @@ -35,7 +35,7 @@ module OneM2M_Pixits { modulepar boolean PX_RUN_POSTAMBLE := true; - modulepar charstring PX_SERIALIZATION := "XML"; + modulepar charstring PX_SERIALIZATION := "JSON"; modulepar charstring PX_PROTOCOL_BINDING := "HTTP"; diff --git a/OneM2M_Templates.ttcn b/OneM2M_Templates.ttcn index 6c06e6df375d67010d966f40debb7f6b295c01c8..4f351f7faecbecd5eebc9bed169c892c6f9590bb 100644 --- a/OneM2M_Templates.ttcn +++ b/OneM2M_Templates.ttcn @@ -7,7 +7,7 @@ * * @author ETSI * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/OneM2M_Templates.ttcn $ - * $Id: OneM2M_Templates.ttcn 43 2016-04-13 12:16:12Z reinaortega $ + * $Id: OneM2M_Templates.ttcn 69 2016-04-28 07:49:58Z reinaortega $ * @desc Module containing templates for oneM2M * */ @@ -26,12 +26,13 @@ module OneM2M_Templates { * @desc * @param p_requestPrimitive */ - template (value) M2MRequestPrimitive m_request(in template (value) RequestPrimitive p_requestPrimitive ) := { + template (value) M2MRequestPrimitive m_request(in template (value) RequestPrimitive p_requestPrimitive, in template (omit) AttributeList_1 p_nullFields := omit ) := { requestPrimitive_ := p_requestPrimitive, host := PX_HOST_ADDRESS, xmlNamespace := PX_XML_NAMESPACE, protocolBinding := PX_PROTOCOL_BINDING, - serialization := PX_SERIALIZATION + serialization := PX_SERIALIZATION, + nullFields := p_nullFields }; @@ -397,7 +398,7 @@ module OneM2M_Templates { requestIdentifier := "m_createAcp", resourceType := int1, primitiveContent := { - any_1 := {{ACP_create := m_contentCreateAcp (omit, int63)}} + any_1 := {{ACP_create := m_contentCreateAcp ()}} }, role := omit, originatingTimestamp := omit, @@ -415,14 +416,14 @@ module OneM2M_Templates { }; - template (value) RequestPrimitive m_createAcp(XSD.ID p_aeResourceAddress, in template (omit) XSD.String p_name, in template (value) AccessControlOperations p_allowedOperations ) := { + template (value) RequestPrimitive m_createAcp(XSD.ID p_parentResourceAddress, in template (omit) XSD.String p_name := c_defaultResourceName, in template (value) AccessControlOperations p_allowedOperations := int63) := { operation := int1, - to_ := p_aeResourceAddress, + to_ := p_parentResourceAddress, from_ := PX_AE_ID_STEM, requestIdentifier := "m_createAcp", resourceType := int1, primitiveContent := { - any_1 := {{ACP_create := m_contentCreateAcp (omit, p_allowedOperations)}} + any_1 := {{ACP_create := m_contentCreateAcp (p_name, p_allowedOperations)}} }, role := omit, originatingTimestamp := omit, @@ -440,14 +441,14 @@ module OneM2M_Templates { }; - template (value) RequestPrimitive m_createAcpAux(in template (value) AccessControlOperations p_allowedOperations ) := { + template (value) RequestPrimitive m_createAcpAux(in template (value) XSD.String p_acpName := "MyAcp", in template (value) AccessControlOperations p_allowedOperations := int63 ) := { operation := int1, to_ := PX_URI_CSE & PX_CSE_NAME, from_ := PX_AE_ID_STEM, requestIdentifier := "m_createAcp", resourceType := int1, primitiveContent := { - any_1 := {{ACP_create := m_contentCreateAcp ("MyAcp", p_allowedOperations)}} + any_1 := {{ACP_create := m_contentCreateAcp (p_acpName, p_allowedOperations)}} }, role := omit, originatingTimestamp := omit, @@ -491,9 +492,9 @@ module OneM2M_Templates { }; - template (value) RequestPrimitive m_createContainer(XSD.ID p_aeResourceAddress, in template (omit) XSD.String p_resourceName) := { + template (value) RequestPrimitive m_createContainer(XSD.ID p_parentResourceAddress, in template (omit) XSD.String p_resourceName) := { operation := int1, - to_ := p_aeResourceAddress, + to_ := p_parentResourceAddress, from_ := PX_AE_ID_STEM, requestIdentifier := "m_createContainer", resourceType := int3, @@ -516,9 +517,9 @@ module OneM2M_Templates { }; - template (value) RequestPrimitive m_createContentInstance(XSD.ID p_resourceId, XSD.String p_primitiveContent) := { + template (value) RequestPrimitive m_createContentInstance(XSD.ID p_parentResourceAddress, XSD.String p_primitiveContent) := { operation := int1, - to_ := p_resourceId, + to_ := p_parentResourceAddress, from_ := "admin:admin", requestIdentifier := "m_createContentInstance", resourceType := int4, @@ -566,9 +567,9 @@ module OneM2M_Templates { }; - template (value) RequestPrimitive m_createGroup(XSD.ID p_aeResourceAddress, in template (omit) XSD.String p_name, in template (omit) AcpType p_accessControlPolicyIDs, in template (value) XSD.AnyURI p_memberId ) := { + 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 ) := { operation := int1, - to_ := p_aeResourceAddress, + to_ := p_parentResourceAddress, from_ := PX_AE_ID_STEM, requestIdentifier := "m_createGroup", resourceType := int9, @@ -616,9 +617,9 @@ module OneM2M_Templates { }; - template (value) RequestPrimitive m_createPollingChannel(XSD.ID p_aeResourceAddress, in template (value)XSD.ID p_originatorId, in template (omit) AcpType p_accessControlPolicyIDs ) := { + template (value) RequestPrimitive m_createPollingChannel(XSD.ID p_parentResourceAddress, in template (value)XSD.ID p_originatorId, in template (omit) AcpType p_accessControlPolicyIDs ) := { operation := int1, - to_ := p_aeResourceAddress, + to_ := p_parentResourceAddress, from_ := p_originatorId, requestIdentifier := "m_createPollingChannel", resourceType := int15, @@ -668,9 +669,9 @@ module OneM2M_Templates { }; - template (value) RequestPrimitive m_createSchedule(XSD.ID p_aeResourceAddress, in template (omit) XSD.String p_name, in template (value) ScheduleEntries p_scheduleElement ) := { + template (value) RequestPrimitive m_createSchedule(XSD.ID p_parentResourceAddress, in template (omit) XSD.String p_name, in template (value) ScheduleEntries p_scheduleElement ) := { operation := int1, - to_ := p_aeResourceAddress, + to_ := p_parentResourceAddress, from_ := PX_AE_ID_STEM, requestIdentifier := "m_createSchedule", resourceType := int18, @@ -718,9 +719,9 @@ module OneM2M_Templates { }; - template (value) RequestPrimitive m_createSubscription(XSD.ID p_aeResourceAddress, in template (omit) XSD.String p_name, in template (value) ListOfURIs p_notificationURI ) := { + template (value) RequestPrimitive m_createSubscription(XSD.ID p_parentResourceAddress, in template (omit) XSD.String p_name, in template (value) ListOfURIs p_notificationURI ) := { operation := int1, - to_ := p_aeResourceAddress, + to_ := p_parentResourceAddress, from_ := PX_AE_ID_STEM, requestIdentifier := "m_createSubscription", resourceType := int23, @@ -810,7 +811,7 @@ module OneM2M_Templates { requestReachability := false }; - template (value) ACP_create m_contentCreateAcp (in template (omit) XSD.String p_name, in template (value) AccessControlOperations p_allowedOperations ) := { + template (value) ACP_create m_contentCreateAcp (in template (omit) XSD.String p_name := c_defaultResourceName, in template (value) AccessControlOperations p_allowedOperations := int63 ) := { resourceName := p_name, labels := omit, expirationTime := omit, @@ -1017,11 +1018,425 @@ module OneM2M_Templates { ontologyRef := omit }; }//end group ContentUpdate + + group responseContent { + + template AE mw_contentAeBase := { + resourceName := ?, + resourceType := ?, + resourceID := ?, + parentID := ?, + creationTime := ?, + lastModifiedTime := ?, + labels := *, + accessControlPolicyIDs := *, + expirationTime := ?, + announceTo := *, + announcedAttribute := ?, + appName := *, + app_ID := ?, + aE_ID := ?, + pointOfAccess := *, + ontologyRef := *, + nodeLink := *, + requestReachability := ?, + contentSerialization := *, + choice := * + }; + + template AccessControlPolicy mw_contentAcpBase := { + resourceName := ?, + resourceType := ?, + resourceID := ?, + parentID := ?, + creationTime := ?, + lastModifiedTime := ?, + labels := *, + expirationTime := ?, + announceTo := *, + announcedAttribute := ?, + privileges := ?, + selfPrivileges := ?, + choice := * + }; + + template AccessControlPolicy mw_contentAcp_rc1 modifies mw_contentAcpBase := { + choice := omit + } + + //TODO + template AccessControlPolicy mw_contentAcp_rc2 modifies mw_contentAcpBase := { + choice := omit + } + + template AccessControlPolicy mw_contentAcp_rc3 modifies mw_contentAcpBase := { + choice := omit + } + + template AccessControlPolicy mw_contentAcp_rc4 modifies mw_contentAcpBase := { + choice := omit + } + + template AccessControlPolicy mw_contentAcp_rc5 modifies mw_contentAcpBase := { + choice := omit + } + + template AccessControlPolicy mw_contentAcp_rc6 modifies mw_contentAcpBase := { + choice := omit + } + + template AccessControlPolicy mw_contentAcp_rc7 modifies mw_contentAcpBase := { + choice := omit + } + + template Group mw_contentGroupBase := { + resourceName := ?, + resourceType := ?, + resourceID := ?, + parentID := ?, + creationTime := ?, + lastModifiedTime := ?, + labels := *, + accessControlPolicyIDs := *, + expirationTime := ?, + announceTo := *, + announcedAttribute := ?, + creator := *, + memberType := ?, + currentNrOfMembers := ?, + maxNrOfMembers := ?, + memberIDs := ?, + membersAccessControlPolicyIDs := *, + memberTypeValidated := ?, + consistencyStrategy := *, + groupName := *, + fanOutPoint := ?, + choice := * + }; + + template Group mw_contentGroup_rc1 modifies mw_contentGroupBase := { + choice := omit + } + + template Group mw_contentGroup_rc2 modifies mw_contentGroupBase := { + choice := omit + } + + template Group mw_contentGroup_rc3 modifies mw_contentGroupBase := { + choice := omit + } + + template Group mw_contentGroup_rc4 modifies mw_contentGroupBase := { + choice := omit + } + + template Group mw_contentGroup_rc5 modifies mw_contentGroupBase := { + choice := omit + } + + template Group mw_contentGroup_rc6 modifies mw_contentGroupBase := { + choice := omit + } + + template Group mw_contentGroup_rc7 modifies mw_contentGroupBase := { + choice := omit + } + + template PollingChannel mw_contentPollingChannelBase := { + resourceName := ?, + resourceType := ?, + resourceID := ?, + parentID := ?, + creationTime := ?, + lastModifiedTime := ?, + labels := *, + accessControlPolicyIDs := *, + expirationTime := ?, + pollingChannelURI := ? + }; + + template Schedule mw_contentScheduleBase := { + resourceName := ?, + resourceType := ?, + resourceID := ?, + parentID := ?, + creationTime := ?, + lastModifiedTime := ?, + labels := *, + expirationTime := ?, + announceTo := *, + announcedAttribute := ?, + scheduleElement := ?, + choice := * + }; + + template Schedule mw_contentSchedule_rc1 modifies mw_contentScheduleBase := { + choice := omit + } + + template Schedule mw_contentSchedule_rc2 modifies mw_contentScheduleBase := { + choice := omit + } + + template Schedule mw_contentSchedule_rc3 modifies mw_contentScheduleBase := { + choice := omit + } + + template Schedule mw_contentSchedule_rc4 modifies mw_contentScheduleBase := { + choice := omit + } + + template Schedule mw_contentSchedule_rc5 modifies mw_contentScheduleBase := { + choice := omit + } + + template Schedule mw_contentSchedule_rc6 modifies mw_contentScheduleBase := { + choice := omit + } + + template Schedule mw_contentSchedule_rc7 modifies mw_contentScheduleBase := { + choice := omit + } + + template Subscription mw_contentSubscriptionBase := { + resourceName := ?, + resourceType := ?, + resourceID := ?, + parentID := ?, + creationTime := ?, + lastModifiedTime := ?, + labels := *, + accessControlPolicyIDs := *, + expirationTime := ?, + eventNotificationCriteria := *, + expirationCounter := *, + notificationURI := ?, + groupID := *, + notificationForwardingURI := *, + batchNotify := *, + rateLimit := *, + preSubscriptionNotify := *, + pendingNotification := *, + notificationStoragePriority := *, + latestNotify := *, + notificationContentType := ?, + notificationEventCat := *, + creator := *, + subscriberURI := *, + choice := * + }; + + template Subscription mw_contentSubscription_rc1 modifies mw_contentSubscriptionBase := { + choice := omit + } + + template Subscription mw_contentSubscription_rc2 modifies mw_contentSubscriptionBase := { + choice := omit + } + + template Subscription mw_contentSubscription_rc3 modifies mw_contentSubscriptionBase := { + choice := omit + } + + template Subscription mw_contentSubscription_rc4 modifies mw_contentSubscriptionBase := { + choice := omit + } + + template Subscription mw_contentSubscription_rc5 modifies mw_contentSubscriptionBase := { + choice := omit + } + + template Subscription mw_contentSubscription_rc6 modifies mw_contentSubscriptionBase := { + choice := omit + } + + template Subscription mw_contentSubscription_rc7 modifies mw_contentSubscriptionBase := { + choice := omit + } + + template ContentInstance mw_contentContentInstanceBase := { + resourceName := ?, + resourceType := ?, + resourceID := ?, + parentID := ?, + creationTime := ?, + lastModifiedTime := ?, + labels := *, + expirationTime := ?, + announceTo := *, + announcedAttribute := ?, + stateTag := ?, + creator := *, + contentInfo := *, + contentSize := ?, + ontologyRef := *, + content := ? + }; + + template Container mw_contentContainerBase := { + resourceName := ?, + resourceType := ?, + resourceID := ?, + parentID := ?, + creationTime := ?, + lastModifiedTime := ?, + labels := *, + accessControlPolicyIDs := *, + expirationTime := ?, + announceTo := *, + announcedAttribute := ?, + stateTag := ?, + creator := ?, + maxNrOfInstances := *, + maxByteSize := *, + maxInstanceAge := *, + currentNrOfInstances := ?, + currentByteSize := ?, + locationID := *, + ontologyRef := *, + latest := ?, + oldest := ?, + choice := * + }; + + template Container mw_contentContainer_rc1 modifies mw_contentContainerBase := { + choice := omit + } + + template Container mw_contentContainer_rc2 modifies mw_contentContainerBase := { + choice := omit + } + + template Container mw_contentContainer_rc3 modifies mw_contentContainerBase := { + choice := omit + } + + template Container mw_contentContainer_rc4 modifies mw_contentContainerBase := { + choice := omit + } + + template Container mw_contentContainer_rc5 modifies mw_contentContainerBase := { + choice := omit + } + + template Container mw_contentContainer_rc6 modifies mw_contentContainerBase := { + choice := omit + } + + template Container mw_contentContainer_rc7 modifies mw_contentContainerBase := { + choice := omit + } + }//end group responseContent group SpecialContents { + + template (value) AE_update_invalid m_contentUpdateAe_invalid := { + labels := omit, + accessControlPolicyIDs := omit, + creationTime := omit, + expirationTime := omit, + announceTo := omit, + announcedAttribute := omit, + appName := omit, + pointOfAccess := omit, + ontologyRef := omit, + requestReachability := omit + }; + + template (value) ACP_update_invalid m_contentUpdateAcp_invalid := { + labels := omit, + creationTime := omit, + expirationCounter := omit, + expirationTime := omit, + announceTo := omit, + announcedAttribute := omit, + privileges := omit, + selfPrivileges := omit + }; + + template (value) Group_update_invalid m_contentUpdateGroup_invalid := { + labels := omit, + accessControlPolicyIDs := omit, + creationTime := omit, + expirationCounter := omit, + expirationTime := omit, + announceTo := omit, + announcedAttribute := omit, + maxNrOfMembers := omit, + memberIDs := omit, + membersAccessControlPolicyIDs := omit, + groupName := omit + }; + + template (value) PollingChannel_update_invalid m_contentUpdatePollingChannel_invalid := { + labels := omit, + accessControlPolicyIDs := omit, + creationTime := omit, + expirationCounter := omit, + expirationTime := omit, + pollingChannelURI := omit + }; + + template (value) Schedule_update_invalid m_contentUpdateSchedule_invalid := { + labels := omit, + creationTime := omit, + expirationCounter := omit, + expirationTime := omit, + announceTo := omit, + announcedAttribute := omit, + scheduleElement := omit + }; + + template (value) Subscription_update_invalid m_contentUpdateSubscription_invalid := { + labels := omit, + accessControlPolicyIDs := omit, + creationTime := omit, + maxNrOfInstances := omit, + expirationTime := omit, + eventNotificationCriteria := omit, + expirationCounter := omit, + notificationURI := omit, + groupID := omit, + notificationForwardingURI := omit, + batchNotify := omit, + rateLimit := omit, + pendingNotification := omit, + notificationStoragePriority := omit, + latestNotify := omit, + notificationContentType := omit, + notificationEventCat := omit + }; + + template (value) ContentInstance_update_invalid m_contentUpdateContentInstance_invalid(XSD.String p_primitiveContent) := { + labels := omit, + creationTime := omit, + announceTo := omit, + contentInfo := omit, + contentSize := omit, + ontologyRef := omit, + content_ := { + embed_values := {p_primitiveContent}, + attr := omit, + elem_list := {} + } + }; + template (value) Container_update_invalid m_contentUpdateContainer_invalid := { + labels := omit, + accessControlPolicyIDs := omit, + creationTime := omit, + expirationCounter := omit, + expirationTime := omit, + announceTo := omit, + announcedAttribute := omit, + maxNrOfInstances := omit, + maxByteSize := omit, + maxInstanceAge := omit, + locationID := omit, + ontologyRef := omit + }; - }//end gropu SpecialContents + }//end group SpecialContents group ResponsePrimitives { template M2MResponsePrimitive mw_response(ResponseStatusCode p_statusCode) := { @@ -1037,11 +1452,11 @@ module OneM2M_Templates { } }; - template M2MResponsePrimitive mw_responseOK := { + template M2MResponsePrimitive mw_responseOK(in template PrimitiveContent p_content := *) := { responsePrimitive_ := { responseStatusCode := (int2000, int2001, int2002, int2004), requestIdentifier := ?, - primitiveContent := *, + primitiveContent := p_content, to_ := *, from_ := *, originatingTimestamp := *, @@ -1049,6 +1464,7 @@ module OneM2M_Templates { eventCategory := * } }; + template M2MResponsePrimitive mw_responseKO := { responsePrimitive_ := { diff --git a/OneM2M_TestSystem.ttcn b/OneM2M_TestSystem.ttcn index 58f1fb0e29f885d2a5f1b470eaa19fc0257c4d4b..98a0c997f6ec45e330ba8335930fff4b43d31a3c 100644 --- a/OneM2M_TestSystem.ttcn +++ b/OneM2M_TestSystem.ttcn @@ -7,7 +7,7 @@ * * @author ETSI * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/OneM2M_TestSystem.ttcn $ - * $Id: OneM2M_TestSystem.ttcn 23 2016-03-17 10:02:44Z reinaortega $ + * $Id: OneM2M_TestSystem.ttcn 76 2016-04-29 14:15:01Z berge $ * @desc Test System module for oneM2M * */ @@ -24,11 +24,19 @@ module OneM2M_TestSystem { out M2MRequestPrimitive, M2MResponsePrimitive; } + + type port AdapterControlPort message { + in + AcResponsePrimitive; + out + AcRequestPrimitive; + } /* Components */ type component M2M { port OneM2MPort mcaPort; //port OneM2MPort mccPort; + port AdapterControlPort acPort; //timers timer tc_ac := PX_TAC; timer tc_wait; @@ -41,6 +49,7 @@ module OneM2M_TestSystem { type component M2MSystem { port OneM2MPort mcaPort; //port OneM2MPort mccPort; + port AdapterControlPort acPort; } /* Primitives */ @@ -49,11 +58,28 @@ module OneM2M_TestSystem { charstring host, charstring xmlNamespace, charstring protocolBinding optional, - charstring serialization optional + charstring serialization optional, + AttributeList_1 nullFields optional } type record M2MResponsePrimitive { ResponsePrimitive responsePrimitive_ } + + type record AcRequestPrimitive { + charstring event, + anytype data + } + with { + encode "adapter"; + } + + type record AcResponsePrimitive { + charstring event, + anytype data + } + with { + encode "adapter"; + } }// end of module diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn index 99d098f9dddb648aafc8fd7709b1fc7f2fd48ff8..896019053a7e92f68955235b833825e1ec9e483a 100644 --- a/OneM2M_Testcases.ttcn +++ b/OneM2M_Testcases.ttcn @@ -7,7 +7,7 @@ * * @author ETSI * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/OneM2M_Testcases.ttcn $ - * $Id: OneM2M_Testcases.ttcn 43 2016-04-13 12:16:12Z reinaortega $ + * $Id: OneM2M_Testcases.ttcn 69 2016-04-28 07:49:58Z reinaortega $ * @desc Module containing test cases for oneM2M * */ @@ -321,7 +321,724 @@ module OneM2M_Testcases { group CSE { group Data_Management_and_Repository { + + group g_CSE_DMR_BV_001 { + + testcase TC_CSE_DMR_BV_001_01() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_BV_001(int3, m_createContainerBase);//Container + } + + testcase TC_CSE_DMR_BV_001_02() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_BV_001(int9, m_createGroupBase);//Group + } + + testcase TC_CSE_DMR_BV_001_03() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_BV_001(int1, m_createAcpBase);//AccessControlPolicy + } + + testcase TC_CSE_DMR_BV_001_04() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_BV_001(int18, m_createScheduleBase);//Schedule + } + + testcase TC_CSE_DMR_BV_001_05() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_BV_001(int15, m_createPollingChannelBase);//PollingChannel + } + + testcase TC_CSE_DMR_BV_001_06() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_BV_001(int23, m_createSubscriptionBase);//Subscription + } + + function f_CSE_DMR_BV_001(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { + + // Local variables + var M2MResponsePrimitive v_response; + var RequestPrimitive v_request; + var XSD.String v_aeName := "ae_test"; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; + + // Test control + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); + f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); + + // Test Body + v_request := m_retrieveResource(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName); + v_request.resultContent := int0;//Nothing + mcaPort.send(m_request(v_request)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_responseOK) -> value v_response { + tc_ac.stop; + if(ispresent(v_response.responsePrimitive_.primitiveContent)){ + setverdict(fail, testcasename() & ": Providing content when RC set to 0"); + } else { + setverdict(pass, testcasename() & ": No content provided with RC set to 0"); + } + } + [] mcaPort.receive(mw_responseKO) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while retrieving resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + } + } + + // Postamble + f_postamble_deleteResources(v_aeName); + + }//end f_CSE_DMR_BV_001 + + } // end g_CSE_DMR_BV_001 + + group g_CSE_DMR_BV_002 { + + testcase TC_CSE_DMR_BV_002_01() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Container := mw_contentContainer_rc1; + + f_CSE_DMR_BV_002(int3, m_createContainerBase, v_contentResponse);//Container + } + + testcase TC_CSE_DMR_BV_002_02() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Group := mw_contentGroup_rc1; + + f_CSE_DMR_BV_002(int9, m_createGroupBase, v_contentResponse);//Group + } + + testcase TC_CSE_DMR_BV_002_03() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].AccessControlPolicy := mw_contentAcp_rc1; + + f_CSE_DMR_BV_002(int1, m_createAcpBase,v_contentResponse);//AccessControlPolicy + } + + testcase TC_CSE_DMR_BV_002_04() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Schedule := mw_contentSchedule_rc1; + + f_CSE_DMR_BV_002(int18, m_createScheduleBase, v_contentResponse);//Schedule + } + + testcase TC_CSE_DMR_BV_002_05() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].PollingChannel := mw_contentPollingChannelBase;//FIXME + + f_CSE_DMR_BV_002(int15, m_createPollingChannelBase, v_contentResponse);//PollingChannel + } + + testcase TC_CSE_DMR_BV_002_06() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Subscription := mw_contentSubscription_rc1; + + f_CSE_DMR_BV_002(int23, m_createSubscriptionBase, v_contentResponse);//Subscription + } + + function f_CSE_DMR_BV_002(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive, template PrimitiveContent p_contentResponse) runs on M2M { + + // Local variables + var M2MResponsePrimitive v_response; + var RequestPrimitive v_request; + var XSD.String v_aeName := "ae_test"; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; + + // Test control + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); + f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); + + // Test Body + v_request := m_retrieveResource(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName); + v_request.resultContent := int1;//Attributes + mcaPort.send(m_request(v_request)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_responseOK(p_contentResponse)) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": No child resources provided with RC set to 1"); + } + [] mcaPort.receive(mw_responseOK()) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Child resources provided with RC set to 1"); + } + [] mcaPort.receive(mw_responseKO) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while retrieving resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + } + } + + // Postamble + f_postamble_deleteResources(v_aeName); + + }//end f_CSE_DMR_BV_002 + + } // end g_CSE_DMR_BV_002 + group g_CSE_DMR_BV_003 { + + testcase TC_CSE_DMR_BV_003_01() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Container := mw_contentContainer_rc2; + + f_CSE_DMR_BV_003(int3, m_createContainerBase, v_contentResponse);//Container + } + + testcase TC_CSE_DMR_BV_003_02() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Group := mw_contentGroup_rc2; + + f_CSE_DMR_BV_003(int9, m_createGroupBase, v_contentResponse);//Group + } + + testcase TC_CSE_DMR_BV_003_03() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].AccessControlPolicy := mw_contentAcp_rc2; + + f_CSE_DMR_BV_003(int1, m_createAcpBase,v_contentResponse);//AccessControlPolicy + } + + testcase TC_CSE_DMR_BV_003_04() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Schedule := mw_contentSchedule_rc2; + + f_CSE_DMR_BV_003(int18, m_createScheduleBase, v_contentResponse);//Schedule + } + + testcase TC_CSE_DMR_BV_003_05() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].PollingChannel := mw_contentPollingChannelBase;//FIXME + + f_CSE_DMR_BV_003(int15, m_createPollingChannelBase, v_contentResponse);//PollingChannel + } + + testcase TC_CSE_DMR_BV_003_06() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Subscription := mw_contentSubscription_rc2; + + f_CSE_DMR_BV_003(int23, m_createSubscriptionBase, v_contentResponse);//Subscription + } + + function f_CSE_DMR_BV_003(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive, template PrimitiveContent p_contentResponse) runs on M2M { + + // Local variables + var M2MResponsePrimitive v_response; + var RequestPrimitive v_request; + var XSD.String v_aeName := "ae_test"; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; + + // Test control + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); + f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); + + // Test Body + v_request := m_retrieveResource(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName); + v_request.resultContent := int2;//Attributes + mcaPort.send(m_request(v_request)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_responseOK(p_contentResponse)) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": No child resources provided with RC set to 1"); + } + [] mcaPort.receive(mw_responseOK()) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Child resources provided with RC set to 1"); + } + [] mcaPort.receive(mw_responseKO) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while retrieving resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + } + } + + // Postamble + f_postamble_deleteResources(v_aeName); + + }//end f_CSE_DMR_BV_003 + + } // end g_CSE_DMR_BV_003 + + group g_CSE_DMR_BV_004 { + + testcase TC_CSE_DMR_BV_004_01() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Container := mw_contentContainer_rc3; + + f_CSE_DMR_BV_004(int3, m_createContainerBase, v_contentResponse);//Container + } + + testcase TC_CSE_DMR_BV_004_02() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Group := mw_contentGroup_rc3; + + f_CSE_DMR_BV_004(int9, m_createGroupBase, v_contentResponse);//Group + } + + testcase TC_CSE_DMR_BV_004_03() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].AccessControlPolicy := mw_contentAcp_rc3; + + f_CSE_DMR_BV_004(int1, m_createAcpBase,v_contentResponse);//AccessControlPolicy + } + + testcase TC_CSE_DMR_BV_004_04() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Schedule := mw_contentSchedule_rc3; + + f_CSE_DMR_BV_004(int18, m_createScheduleBase, v_contentResponse);//Schedule + } + + testcase TC_CSE_DMR_BV_004_05() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].PollingChannel := mw_contentPollingChannelBase;//FIXME + + f_CSE_DMR_BV_004(int15, m_createPollingChannelBase, v_contentResponse);//PollingChannel + } + + testcase TC_CSE_DMR_BV_004_06() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Subscription := mw_contentSubscription_rc3; + + f_CSE_DMR_BV_004(int23, m_createSubscriptionBase, v_contentResponse);//Subscription + } + + function f_CSE_DMR_BV_004(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive, template PrimitiveContent p_contentResponse) runs on M2M { + + // Local variables + var M2MResponsePrimitive v_response; + var RequestPrimitive v_request; + var XSD.String v_aeName := "ae_test"; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; + + // Test control + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); + f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); + + // Test Body + v_request := m_retrieveResource(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName); + v_request.resultContent := int1;//Attributes + mcaPort.send(m_request(v_request)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_responseOK(p_contentResponse)) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": No child resources provided with RC set to 1"); + } + [] mcaPort.receive(mw_responseOK()) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Child resources provided with RC set to 1"); + } + [] mcaPort.receive(mw_responseKO) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while retrieving resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + } + } + + // Postamble + f_postamble_deleteResources(v_aeName); + + }//end f_CSE_DMR_BV_004 + + } // end g_CSE_DMR_BV_004 + + group g_CSE_DMR_BV_005 { + + testcase TC_CSE_DMR_BV_005_01() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Container := mw_contentContainer_rc4; + + f_CSE_DMR_BV_005(int3, m_createContainerBase, v_contentResponse);//Container + } + + testcase TC_CSE_DMR_BV_005_02() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Group := mw_contentGroup_rc4; + + f_CSE_DMR_BV_005(int9, m_createGroupBase, v_contentResponse);//Group + } + + testcase TC_CSE_DMR_BV_005_03() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].AccessControlPolicy := mw_contentAcp_rc4; + + f_CSE_DMR_BV_005(int1, m_createAcpBase,v_contentResponse);//AccessControlPolicy + } + + testcase TC_CSE_DMR_BV_005_04() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Schedule := mw_contentSchedule_rc4; + + f_CSE_DMR_BV_005(int18, m_createScheduleBase, v_contentResponse);//Schedule + } + + testcase TC_CSE_DMR_BV_005_05() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].PollingChannel := mw_contentPollingChannelBase;//FIXME + + f_CSE_DMR_BV_005(int15, m_createPollingChannelBase, v_contentResponse);//PollingChannel + } + + testcase TC_CSE_DMR_BV_005_06() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Subscription := mw_contentSubscription_rc4; + + f_CSE_DMR_BV_005(int23, m_createSubscriptionBase, v_contentResponse);//Subscription + } + + function f_CSE_DMR_BV_005(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive, template PrimitiveContent p_contentResponse) runs on M2M { + + // Local variables + var M2MResponsePrimitive v_response; + var RequestPrimitive v_request; + var XSD.String v_aeName := "ae_test"; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; + + // Test control + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); + f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); + + // Test Body + v_request := m_retrieveResource(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName); + v_request.resultContent := int1;//Attributes + mcaPort.send(m_request(v_request)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_responseOK(p_contentResponse)) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": No child resources provided with RC set to 1"); + } + [] mcaPort.receive(mw_responseOK()) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Child resources provided with RC set to 1"); + } + [] mcaPort.receive(mw_responseKO) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while retrieving resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + } + } + + // Postamble + f_postamble_deleteResources(v_aeName); + + }//end f_CSE_DMR_BV_005 + + } // end g_CSE_DMR_BV_005 + + group g_CSE_DMR_BV_006 { + + testcase TC_CSE_DMR_BV_006_01() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Container := mw_contentContainer_rc5; + + f_CSE_DMR_BV_006(int3, m_createContainerBase, v_contentResponse);//Container + } + + testcase TC_CSE_DMR_BV_006_02() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Group := mw_contentGroup_rc5; + + f_CSE_DMR_BV_006(int9, m_createGroupBase, v_contentResponse);//Group + } + + testcase TC_CSE_DMR_BV_006_03() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].AccessControlPolicy := mw_contentAcp_rc5; + + f_CSE_DMR_BV_006(int1, m_createAcpBase,v_contentResponse);//AccessControlPolicy + } + + testcase TC_CSE_DMR_BV_006_04() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Schedule := mw_contentSchedule_rc5; + + f_CSE_DMR_BV_006(int18, m_createScheduleBase, v_contentResponse);//Schedule + } + + testcase TC_CSE_DMR_BV_006_05() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].PollingChannel := mw_contentPollingChannelBase;//FIXME + + f_CSE_DMR_BV_006(int15, m_createPollingChannelBase, v_contentResponse);//PollingChannel + } + + testcase TC_CSE_DMR_BV_006_06() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Subscription := mw_contentSubscription_rc5; + + f_CSE_DMR_BV_006(int23, m_createSubscriptionBase, v_contentResponse);//Subscription + } + + function f_CSE_DMR_BV_006(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive, template PrimitiveContent p_contentResponse) runs on M2M { + + // Local variables + var M2MResponsePrimitive v_response; + var RequestPrimitive v_request; + var XSD.String v_aeName := "ae_test"; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; + + // Test control + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); + f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); + + // Test Body + v_request := m_retrieveResource(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName); + v_request.resultContent := int1;//Attributes + mcaPort.send(m_request(v_request)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_responseOK(p_contentResponse)) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": No child resources provided with RC set to 1"); + } + [] mcaPort.receive(mw_responseOK()) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Child resources provided with RC set to 1"); + } + [] mcaPort.receive(mw_responseKO) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while retrieving resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + } + } + + // Postamble + f_postamble_deleteResources(v_aeName); + + }//end f_CSE_DMR_BV_006 + + } // end g_CSE_DMR_BV_006 + + group g_CSE_DMR_BV_007 { + + testcase TC_CSE_DMR_BV_007_01() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Container := mw_contentContainer_rc6; + + f_CSE_DMR_BV_007(int3, m_createContainerBase, v_contentResponse);//Container + } + + testcase TC_CSE_DMR_BV_007_02() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Group := mw_contentGroup_rc6; + + f_CSE_DMR_BV_007(int9, m_createGroupBase, v_contentResponse);//Group + } + + testcase TC_CSE_DMR_BV_007_03() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].AccessControlPolicy := mw_contentAcp_rc6; + + f_CSE_DMR_BV_007(int1, m_createAcpBase,v_contentResponse);//AccessControlPolicy + } + + testcase TC_CSE_DMR_BV_007_04() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Schedule := mw_contentSchedule_rc6; + + f_CSE_DMR_BV_007(int18, m_createScheduleBase, v_contentResponse);//Schedule + } + + testcase TC_CSE_DMR_BV_007_05() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].PollingChannel := mw_contentPollingChannelBase;//FIXME + + f_CSE_DMR_BV_007(int15, m_createPollingChannelBase, v_contentResponse);//PollingChannel + } + + testcase TC_CSE_DMR_BV_007_06() runs on M2M system M2MSystem { + // Local variables + var template PrimitiveContent v_contentResponse; + + v_contentResponse.any_1[0].Subscription := mw_contentSubscription_rc6; + + f_CSE_DMR_BV_007(int23, m_createSubscriptionBase, v_contentResponse);//Subscription + } + + function f_CSE_DMR_BV_007(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive, template PrimitiveContent p_contentResponse) runs on M2M { + + // Local variables + var M2MResponsePrimitive v_response; + var RequestPrimitive v_request; + var XSD.String v_aeName := "ae_test"; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; + + // Test control + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); + f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); + + // Test Body + v_request := m_retrieveResource(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName); + v_request.resultContent := int1;//Attributes + mcaPort.send(m_request(v_request)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_responseOK(p_contentResponse)) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": No child resources provided with RC set to 1"); + } + [] mcaPort.receive(mw_responseOK()) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Child resources provided with RC set to 1"); + } + [] mcaPort.receive(mw_responseKO) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while retrieving resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + } + } + + // Postamble + f_postamble_deleteResources(v_aeName); + + }//end f_CSE_DMR_BV_007 + + } // end g_CSE_DMR_BV_007 + group Create { group g_CSE_DMR_CRE_BV_001 { @@ -329,65 +1046,108 @@ module OneM2M_Testcases { testcase TC_CSE_DMR_CRE_BV_001_01() runs on M2M system M2MSystem { // Local variables var template RequestPrimitive v_createRequest := m_createContainerBase; + var ResponsePrimitive v_responsePrimitive; v_createRequest.primitiveContent.any_1[0].Container_create.resourceName := omit; - f_CSE_DMR_CRE_BV_001(int3, m_createContainerBase);//Container + v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int3, m_createContainerBase);//Container + + log(v_responsePrimitive); + + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Container.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } + } } testcase TC_CSE_DMR_CRE_BV_001_02() runs on M2M system M2MSystem { // Local variables var template RequestPrimitive v_createRequest := m_createGroupBase; + var ResponsePrimitive v_responsePrimitive; v_createRequest.primitiveContent.any_1[0].Group_create.resourceName := omit; - f_CSE_DMR_CRE_BV_001(int9, m_createGroupBase);//Group + v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int9, m_createGroupBase);//Group + + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Group.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } + } } testcase TC_CSE_DMR_CRE_BV_001_03() runs on M2M system M2MSystem { // Local variables var template RequestPrimitive v_createRequest := m_createAcpBase; + var ResponsePrimitive v_responsePrimitive; v_createRequest.primitiveContent.any_1[0].ACP_create.resourceName := omit; - f_CSE_DMR_CRE_BV_001(int1, m_createAcpBase);//AccessControlPolicy + v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int1, m_createAcpBase);//AccessControlPolicy + + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } + } } testcase TC_CSE_DMR_CRE_BV_001_04() runs on M2M system M2MSystem { // Local variables var template RequestPrimitive v_createRequest := m_createScheduleBase; + var ResponsePrimitive v_responsePrimitive; v_createRequest.primitiveContent.any_1[0].Schedule_create.resourceName := omit; - f_CSE_DMR_CRE_BV_001(int18, m_createScheduleBase);//Schedule + v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int18, m_createScheduleBase);//Schedule + + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Schedule.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } + } } testcase TC_CSE_DMR_CRE_BV_001_05() runs on M2M system M2MSystem { // Local variables var template RequestPrimitive v_createRequest := m_createPollingChannelBase; + var ResponsePrimitive v_responsePrimitive; v_createRequest.primitiveContent.any_1[0].PollingChannel_create.resourceName := omit; - f_CSE_DMR_CRE_BV_001(int15, m_createPollingChannelBase);//PollingChannel + v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int15, m_createPollingChannelBase);//PollingChannel + + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].PollingChannel.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } + } } testcase TC_CSE_DMR_CRE_BV_001_06() runs on M2M system M2MSystem { // Local variables var template RequestPrimitive v_createRequest := m_createSubscriptionBase; + var ResponsePrimitive v_responsePrimitive; v_createRequest.primitiveContent.any_1[0].Subscription_create.resourceName := omit; - f_CSE_DMR_CRE_BV_001(int23, m_createSubscriptionBase);//Subscription + v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int23, m_createSubscriptionBase);//Subscription + + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Subscription.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } + } } - function f_CSE_DMR_CRE_BV_001(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { + function f_CSE_DMR_CRE_BV_001(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M return ResponsePrimitive { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; - var XSD.String v_aeResourceAddress := "/" & PX_CSE_NAME & "/" & v_aeName; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; // Test control @@ -409,9 +1169,8 @@ module OneM2M_Testcases { [] mcaPort.receive(mw_responseOK) -> value v_response { tc_ac.stop; setverdict(pass, testcasename() & ": Resource type " & int2str(enum2int(p_resourceType)) & " created successfuly"); - //TODO: Check that name attribute is provided } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; setverdict(fail, testcasename() & ": Error while creating resource type " & int2str(enum2int(p_resourceType))); } @@ -422,6 +1181,8 @@ module OneM2M_Testcases { // Postamble f_postamble_deleteResources(v_aeName); + + return v_response.responsePrimitive_; }//end f_CSE_DMR_CRE_BV_001 @@ -432,47 +1193,88 @@ module OneM2M_Testcases { testcase TC_CSE_DMR_CRE_BV_002_01() runs on M2M system M2MSystem { // Local variables + var ResponsePrimitive v_responsePrimitive; - f_CSE_DMR_CRE_BV_002(int3, m_createContainerBase);//container + v_responsePrimitive := f_CSE_DMR_CRE_BV_002(int3, m_createContainerBase);//container + + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Container.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } + } } testcase TC_CSE_DMR_CRE_BV_002_02() runs on M2M system M2MSystem { // Local variables + var ResponsePrimitive v_responsePrimitive; - f_CSE_DMR_CRE_BV_002(int9, m_createGroupBase);//group + v_responsePrimitive := f_CSE_DMR_CRE_BV_002(int9, m_createGroupBase);//group + + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Group.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } + } } testcase TC_CSE_DMR_CRE_BV_002_03() runs on M2M system M2MSystem { // Local variables + var ResponsePrimitive v_responsePrimitive; - f_CSE_DMR_CRE_BV_002(int1, m_createAcpBase );//accessControlPolicy + v_responsePrimitive := f_CSE_DMR_CRE_BV_002(int1, m_createAcpBase );//accessControlPolicy + + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } + } } testcase TC_CSE_DMR_CRE_BV_002_04() runs on M2M system M2MSystem { // Local variables + var ResponsePrimitive v_responsePrimitive; - f_CSE_DMR_CRE_BV_002(int18, m_createScheduleBase);//Schedule + v_responsePrimitive := f_CSE_DMR_CRE_BV_002(int18, m_createScheduleBase);//Schedule + + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Schedule.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } + } } testcase TC_CSE_DMR_CRE_BV_002_05() runs on M2M system M2MSystem { // Local variables - - f_CSE_DMR_CRE_BV_002(int15, m_createPollingChannelBase);//Pollingchannel + var ResponsePrimitive v_responsePrimitive; + + v_responsePrimitive := f_CSE_DMR_CRE_BV_002(int15, m_createPollingChannelBase);//Pollingchannel + + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].PollingChannel.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } + } } testcase TC_CSE_DMR_CRE_BV_002_06() runs on M2M system M2MSystem { // Local variables - - f_CSE_DMR_CRE_BV_002(int23, m_createSubscriptionBase);//Subscription + var ResponsePrimitive v_responsePrimitive; + + v_responsePrimitive := f_CSE_DMR_CRE_BV_002(int23, m_createSubscriptionBase);//Subscription + + if(getverdict == pass){ + if(not ispresent(v_responsePrimitive.primitiveContent.any_1[0].Subscription.resourceName)){ + setverdict(fail, testcasename(), ": Error, resourceName attribute not provided"); + } + } } - function f_CSE_DMR_CRE_BV_002(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M {//system M2MSystem { MRO system keyword not supported on functions in Titan + function f_CSE_DMR_CRE_BV_002(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M return ResponsePrimitive{//system M2MSystem { MRO system keyword not supported on functions in Titan // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; - var XSD.String v_parentResourceAddress := "/" & PX_CSE_NAME & "/" & v_aeName; + var XSD.String v_parentResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; // Test control @@ -494,7 +1296,7 @@ module OneM2M_Testcases { tc_ac.stop; setverdict(pass, testcasename() & ": Container created successfuly"); } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; setverdict(fail, testcasename() & ": Error while creating container"); } @@ -505,6 +1307,8 @@ module OneM2M_Testcases { // Postamble f_postamble_deleteResources(v_aeName); + + return v_response.responsePrimitive_; }//end f_CSE_DMR_CRE_BV_002 @@ -554,9 +1358,8 @@ module OneM2M_Testcases { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; - var XSD.String v_parentResourceAddress := "/" & PX_CSE_NAME & "/" & v_aeName; + var XSD.String v_parentResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; // Test control @@ -567,21 +1370,26 @@ module OneM2M_Testcases { // Preamble f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); - f_createResource(p_resourceType, v_parentResourceAddress, p_requestPrimitive); + v_request := f_createResource(p_resourceType, v_parentResourceAddress, p_requestPrimitive); // Test Body - p_requestPrimitive.requestIdentifier := "Existing resource"; - mcaPort.send(m_request(valueof(p_requestPrimitive))); + v_request.requestIdentifier := "Existing resource"; + + mcaPort.send(m_request(v_request)); tc_ac.start; alt { [] mcaPort.receive(mw_response(int4105)) -> value v_response { tc_ac.stop; setverdict(pass, testcasename() & ": Resource already exists"); } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; setverdict(fail, testcasename() & ": Error while creating an already existing resource"); } + [] mcaPort.receive(mw_responseOK) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Creating a resource that already exists"); + } [] tc_ac.timeout { setverdict(inconc, testcasename() & ": No answer while creating resource"); } @@ -621,125 +1429,391 @@ module OneM2M_Testcases { } testcase TC_CSE_DMR_CRE_BV_004_05() runs on M2M system M2MSystem { // Local variables - - f_CSE_DMR_CRE_BV_004(int15, m_createPollingChannelBase);//Pollingchannel + + f_CSE_DMR_CRE_BV_004(int15, m_createPollingChannelBase);//Pollingchannel + } + + testcase TC_CSE_DMR_CRE_BV_004_06() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_CRE_BV_004(int23, m_createSubscriptionBase);//Subscription + } + + + function f_CSE_DMR_CRE_BV_004(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M {//system M2MSystem { MRO system keyword not supported on functions in Titan + + // Local variables + var M2MResponsePrimitive v_response; + var RequestPrimitive v_request; + var XSD.String v_aeName := "ae_test"; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; + + // Test control + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + if (p_resourceType != int23) { + f_preamble_registerAe(v_aeName, int62);//c_RUDNDi); + } else { + f_preamble_registerAe(v_aeName, int60);//c_UDNDi); + } + + // Test Body + if(p_resourceType == int15) { + v_request := valueof(m_createPollingChannel(v_aeResourceAddress, PX_AE_ID_STEM, omit)); + } else { + v_request := f_getCreateRequestPrimitive(p_resourceType,v_aeResourceAddress, omit, p_requestPrimitive); + } + + mcaPort.send(m_request(v_request)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(int4103)) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": Access denied to create a resource"); + } + [] mcaPort.receive(mw_responseKO) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while creating a resource without privileges"); + } + [] mcaPort.receive(mw_responseOK) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Resource created without creation privileges"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while creating resource"); + } + } + + // Postamble + f_postamble_deleteResources(v_aeName); + + }//end f_CSE_DMR_CRE_BV_004 + + }// end group g_CSE_DMR_CRE_BV_004 + + + }//end group Create + + group Retrieve { + + group g_CSE_DMR_RET_BV_001 { + + testcase TC_CSE_DMR_RET_BV_001_01() runs on M2M system M2MSystem { + // Local variables + var ResponsePrimitive v_responsePrimitive; + + v_responsePrimitive := f_CSE_DMR_RET_BV_001(int3, m_createContainerBase);//Container + + if( getverdict == pass) { + if(not ischosen(v_responsePrimitive.primitiveContent.any_1[0].Container)) { + setverdict(fail, testcasename(), ": Error, resource not provided in the response"); + } + } + } + + testcase TC_CSE_DMR_RET_BV_001_02() runs on M2M system M2MSystem { + // Local variables + var ResponsePrimitive v_responsePrimitive; + + v_responsePrimitive := f_CSE_DMR_RET_BV_001(int9, m_createGroupBase);//Group + + if( getverdict == pass) { + if(not ischosen(v_responsePrimitive.primitiveContent.any_1[0].Group)) { + setverdict(fail, testcasename(), ": Error, resource not provided in the response"); + } + } + } + + testcase TC_CSE_DMR_RET_BV_001_03() runs on M2M system M2MSystem { + // Local variables + var ResponsePrimitive v_responsePrimitive; + + v_responsePrimitive := f_CSE_DMR_RET_BV_001(int1, m_createAcpBase);//AccessControlPolicy + + if( getverdict == pass) { + if(not ischosen(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy)) { + setverdict(fail, testcasename(), ": Error, resource not provided in the response"); + } + } + } + + testcase TC_CSE_DMR_RET_BV_001_04() runs on M2M system M2MSystem { + // Local variables + var ResponsePrimitive v_responsePrimitive; + + v_responsePrimitive := f_CSE_DMR_RET_BV_001(int18, m_createScheduleBase);//Schedule + + if( getverdict == pass) { + if(not ischosen(v_responsePrimitive.primitiveContent.any_1[0].Schedule)) { + setverdict(fail, testcasename(), ": Error, resource not provided in the response"); + } + } + } + + testcase TC_CSE_DMR_RET_BV_001_05() runs on M2M system M2MSystem { + // Local variables + var ResponsePrimitive v_responsePrimitive; + + v_responsePrimitive := f_CSE_DMR_RET_BV_001(int15, m_createPollingChannelBase);//PollingChannel + + if( getverdict == pass) { + if(not ischosen(v_responsePrimitive.primitiveContent.any_1[0].PollingChannel)) { + setverdict(fail, testcasename(), ": Error, resource not provided in the response"); + } + } + } + + testcase TC_CSE_DMR_RET_BV_001_06() runs on M2M system M2MSystem { + // Local variables + var ResponsePrimitive v_responsePrimitive; + + v_responsePrimitive := f_CSE_DMR_RET_BV_001(int23, m_createSubscriptionBase);//Subscription + + if( getverdict == pass) { + if(not ischosen(v_responsePrimitive.primitiveContent.any_1[0].Subscription)) { + setverdict(fail, testcasename(), ": Error, resource not provided in the response"); + } + } + } + + function f_CSE_DMR_RET_BV_001(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M return ResponsePrimitive { + + // Local variables + var M2MResponsePrimitive v_response; + var RequestPrimitive v_request; + var XSD.String v_aeName := "ae_test"; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; + + // Test control + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); + f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); + + // Test Body + mcaPort.send(m_request(m_retrieveResource(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName))); + tc_ac.start; + alt { + [] mcaPort.receive(mw_responseOK) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": Response OK for retrieving"); + } + [] mcaPort.receive(mw_responseKO) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while retrieving resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + } + } + + // Postamble + f_postamble_deleteResources(v_aeName); + + return v_response.responsePrimitive_; + + }//end f_CSE_DMR_RET_BV_001 + + } // end g_CSE_DMR_RET_BV_001 + + group g_CSE_DMR_RET_BO_002 { + + testcase TC_CSE_DMR_RET_BO_002() runs on M2M system M2MSystem{ + + // Local variables + var M2MResponsePrimitive v_response; + var RequestPrimitive v_request; + var XSD.String v_aeName := "ae_test"; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; + + // Test control + + // Test component configuration + f_cf01Up(); + + // Test adapter configuration + + // Preamble + f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); + + // Test Body + mcaPort.send(m_request(m_retrieveResource(int3, v_aeResourceAddress & "/" & c_defaultResourceName))); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(int4004)) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": Resource not found"); + } + [] mcaPort.receive(mw_responseKO) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while retrieving resource"); + } + [] mcaPort.receive(mw_responseOK) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while retrieving resource"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + } + } + + // Postamble + f_postamble_deleteResources(v_aeName); + + }//end f_CSE_DMR_RET_BO_002 + + } // end g_CSE_DMR_RET_BO_002 + + group g_CSE_DMR_RET_BO_003 { + + testcase TC_CSE_DMR_RET_BO_003_01() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_RET_BO_003(int3, m_createContainerBase);//Container + } + + testcase TC_CSE_DMR_RET_BO_003_02() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_RET_BO_003(int9, m_createGroupBase);//Group + } + + testcase TC_CSE_DMR_RET_BO_003_03() runs on M2M system M2MSystem { + // Local variables + var template RequestPrimitive v_requestPrimitive := m_createAcpBase; + + v_requestPrimitive.primitiveContent.any_1[0].ACP_create.selfPrivileges.accessControlRule_list[0].accessControlOperations := int61; + + f_CSE_DMR_RET_BO_003(int1, v_requestPrimitive);//AccessControlPolicy + } + + testcase TC_CSE_DMR_RET_BO_003_04() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_RET_BO_003(int18, m_createScheduleBase);//Schedule } - testcase TC_CSE_DMR_CRE_BV_004_06() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BO_003_05() runs on M2M system M2MSystem { // Local variables - - f_CSE_DMR_CRE_BV_004(int23, m_createSubscriptionBase);//Subscription + + f_CSE_DMR_RET_BO_003(int15, m_createPollingChannelBase);//PollingChannel } + testcase TC_CSE_DMR_RET_BO_003_06() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_RET_BO_003(int23, m_createSubscriptionBase);//Subscription + } - function f_CSE_DMR_CRE_BV_004(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M {//system M2MSystem { MRO system keyword not supported on functions in Titan + function f_CSE_DMR_RET_BO_003(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; - var XSD.String v_aeResourceAddress := "/" & PX_CSE_NAME & "/" & v_aeName; + var XSD.String v_resourceName := "myResource"; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; + var XSD.ID v_acpId; // Test control // Test component configuration - f_cf01Up(); + f_cf01Up(); // Test adapter configuration // Preamble - if (p_resourceType != int23) { - f_preamble_registerAe(v_aeName, int62);//c_RUDNDi); - } else { - f_preamble_registerAe(v_aeName, int60);//c_UDNDi); - } - + f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi; + + f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); + + f_updateAcpAuxResource(PX_URI_CSE & PX_CSE_NAME & "/" & c_acpAuxName, int61); //c_CUDNDi + // Test Body - if(p_resourceType == int15) { - v_request := valueof(m_createPollingChannel(v_aeResourceAddress, PX_AE_ID_STEM, omit)); - } else { - v_request := f_getCreateRequestPrimitive(p_resourceType,v_aeResourceAddress, omit, p_requestPrimitive); - } - - mcaPort.send(m_request(v_request)); + mcaPort.send(m_request(m_retrieveResource(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName))); tc_ac.start; alt { [] mcaPort.receive(mw_response(int4103)) -> value v_response { tc_ac.stop; - setverdict(pass, testcasename() & ": Access denied to create a resource"); + setverdict(pass, testcasename() & ": Access denied to retrieve attributes from resource type " & int2str(enum2int(p_resourceType))); } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while creating a resource without privileges"); + setverdict(fail, testcasename() & ": Error while retrieving attributes from resource without having privileges"); } [] mcaPort.receive(mw_responseOK) -> value v_response { tc_ac.stop; - setverdict(fail, testcasename() & ": Resource created without creation privileges"); + setverdict(fail, testcasename() & ": Retrieving attributes from resource without having privileges"); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while creating resource"); + setverdict(inconc, testcasename() & ": No answer while retrieving resource"); } } // Postamble f_postamble_deleteResources(v_aeName); - }//end f_CSE_DMR_CRE_BV_004 + }//end f_CSE_DMR_RET_BO_003 - }// end group g_CSE_DMR_CRE_BV_004 - - - }//end group Create - - group Retrieve { + } // end g_CSE_DMR_RET_BO_003 - group g_CSE_DMR_RET_BV_001 { + group g_CSE_DMR_RET_BV_004 { - testcase TC_CSE_DMR_RET_BV_001_01() runs on M2M system M2MSystem { + + testcase TC_CSE_DMR_RET_BV_004_01() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_001(int3, m_createContainerBase);//Container + f_CSE_DMR_RET_BV_004(int3, m_createContainerBase);//Container } - testcase TC_CSE_DMR_RET_BV_001_02() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BV_004_02() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_001(int9, m_createGroupBase);//Group + f_CSE_DMR_RET_BV_004(int9, m_createGroupBase);//Group } - testcase TC_CSE_DMR_RET_BV_001_03() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BV_004_03() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_001(int1, m_createAcpBase);//AccessControlPolicy + f_CSE_DMR_RET_BV_004(int1, m_createAcpBase);//AccessControlPolicy } - testcase TC_CSE_DMR_RET_BV_001_04() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BV_004_04() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_001(int18, m_createScheduleBase);//Schedule + f_CSE_DMR_RET_BV_004(int18, m_createScheduleBase);//Schedule } - testcase TC_CSE_DMR_RET_BV_001_05() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BV_004_05() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_001(int15, m_createPollingChannelBase);//PollingChannel + f_CSE_DMR_RET_BV_004(int15, m_createPollingChannelBase);//PollingChannel } - testcase TC_CSE_DMR_RET_BV_001_06() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BV_004_06() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_001(int23, m_createSubscriptionBase);//Subscription - } + f_CSE_DMR_RET_BV_004(int23, m_createSubscriptionBase);//Subscription + } - function f_CSE_DMR_RET_BV_001(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { + function f_CSE_DMR_RET_BV_004(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; + var XSD.String v_attribute := "#pi";//Attribute parentId to be retrieved // Test control @@ -753,39 +1827,86 @@ module OneM2M_Testcases { f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); // Test Body - mcaPort.send(m_request(m_retrieveResource(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName))); + mcaPort.send(m_request(m_retrieveResourceAttributeToOption(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName & v_attribute))); tc_ac.start; alt { [] mcaPort.receive(mw_responseOK) -> value v_response { tc_ac.stop; - setverdict(pass, testcasename() & ": Resource retrieved successfuly"); + //FIXME To double check which type response content shall contain + if(ischosen(v_response.responsePrimitive_.primitiveContent.any_1[0].MyAttributeList)){ + if(isbound(f_getAttribute(v_response.responsePrimitive_.primitiveContent.any_1[0].MyAttributeList, "parentID"))) { + setverdict(pass, testcasename() & ": Requested attribute retrieved successfuly"); + } else { + setverdict(fail, testcasename() & ": Requested attribute not retrieved"); + } + } else { + setverdict(fail, testcasename() & ": Requested attribute not retrieved"); + } } [] mcaPort.receive(mw_responseKO) { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while retrieving resource attribute"); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while retrieving resource attribute"); } } // Postamble f_postamble_deleteResources(v_aeName); - }//end f_CSE_DMR_RET_BV_001 + }//end f_CSE_DMR_RET_BV_004 - } // end g_CSE_DMR_RET_BV_001 + } // end g_CSE_DMR_RET_BV_004 - group g_CSE_DMR_RET_BO_002 { + group g_CSE_DMR_RET_BV_005 { - testcase TC_CSE_DMR_RET_BO_002() runs on M2M system M2MSystem{ + + testcase TC_CSE_DMR_RET_BV_005_01() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_RET_BV_005(int3, m_createContainerBase);//Container + } + + testcase TC_CSE_DMR_RET_BV_005_02() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_RET_BV_005(int9, m_createGroupBase);//Group + } + + testcase TC_CSE_DMR_RET_BV_005_03() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_RET_BV_005(int1, m_createAcpBase);//AccessControlPolicy + } + + testcase TC_CSE_DMR_RET_BV_005_04() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_RET_BV_005(int18, m_createScheduleBase);//Schedule + } + + testcase TC_CSE_DMR_RET_BV_005_05() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_RET_BV_005(int15, m_createPollingChannelBase);//PollingChannel + } + + testcase TC_CSE_DMR_RET_BV_005_06() runs on M2M system M2MSystem { + // Local variables + + f_CSE_DMR_RET_BV_005(int23, m_createSubscriptionBase);//Subscription + } + + + function f_CSE_DMR_RET_BV_005(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; + var XSD.String v_attribute := "#pi";//Attribute parentId to be retrieved // Test control @@ -795,85 +1916,89 @@ module OneM2M_Testcases { // Test adapter configuration // Preamble - f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); + f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); + f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); // Test Body - mcaPort.send(m_request(m_retrieveResource(int3, v_aeResourceAddress & "/" & c_defaultResourceName))); + mcaPort.send(m_request(m_retrieveResourceAttributeContentOption(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName, + {"parentID"}))); tc_ac.start; alt { - [] mcaPort.receive(mw_response(int4004)) -> value v_response { - tc_ac.stop; - setverdict(pass, testcasename() & ": Resource not found"); - } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseOK) -> value v_response { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + //FIXME To double check which type response content shall contain + if(ischosen(v_response.responsePrimitive_.primitiveContent.any_1[0].MyAttributeList)){ + if(isbound(f_getAttribute(v_response.responsePrimitive_.primitiveContent.any_1[0].MyAttributeList, "parentID"))) { + setverdict(pass, testcasename() & ": Requested attribute retrieved successfuly"); + } else { + setverdict(fail, testcasename() & ": Requested attribute not retrieved"); + } + } else { + setverdict(fail, testcasename() & ": Requested attribute not retrieved"); + } } - [] mcaPort.receive(mw_responseOK) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while retrieving resource attribute"); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while retrieving resource attribute"); } } // Postamble f_postamble_deleteResources(v_aeName); - }//end f_CSE_DMR_RET_BO_002 + }//end f_CSE_DMR_RET_BV_005 - } // end g_CSE_DMR_RET_BO_002 + } // end g_CSE_DMR_RET_BV_005 - group g_CSE_DMR_RET_BO_003 { + group g_CSE_DMR_RET_BV_006 { - testcase TC_CSE_DMR_RET_BO_003_01() runs on M2M system M2MSystem { + + testcase TC_CSE_DMR_RET_BV_006_01() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BO_003(int3, m_createContainerBase);//Container + f_CSE_DMR_RET_BV_006(int3, m_createContainerBase);//Container } - testcase TC_CSE_DMR_RET_BO_003_02() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BV_006_02() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BO_003(int9, m_createGroupBase);//Group + f_CSE_DMR_RET_BV_006(int9, m_createGroupBase);//Group } - testcase TC_CSE_DMR_RET_BO_003_03() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BV_006_03() runs on M2M system M2MSystem { // Local variables - var template RequestPrimitive v_requestPrimitive := m_createAcpBase; - - v_requestPrimitive.primitiveContent.any_1[0].ACP_create.selfPrivileges.accessControlRule_list[0].accessControlOperations := int61; - - f_CSE_DMR_RET_BO_003(int1, v_requestPrimitive);//AccessControlPolicy + + f_CSE_DMR_RET_BV_006(int1, m_createAcpBase);//AccessControlPolicy } - testcase TC_CSE_DMR_RET_BO_003_04() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BV_006_04() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BO_003(int18, m_createScheduleBase);//Schedule + f_CSE_DMR_RET_BV_006(int18, m_createScheduleBase);//Schedule } - testcase TC_CSE_DMR_RET_BO_003_05() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BV_006_05() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BO_003(int15, m_createPollingChannelBase);//PollingChannel + f_CSE_DMR_RET_BV_006(int15, m_createPollingChannelBase);//PollingChannel } - testcase TC_CSE_DMR_RET_BO_003_06() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BV_006_06() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BO_003(int23, m_createSubscriptionBase);//Subscription + f_CSE_DMR_RET_BV_006(int23, m_createSubscriptionBase);//Subscription } - - function f_CSE_DMR_RET_BO_003(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { + + + function f_CSE_DMR_RET_BV_006(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; - var XSD.String v_resourceName := "myResource"; var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; // Test control @@ -884,95 +2009,92 @@ module OneM2M_Testcases { // Test adapter configuration // Preamble - f_preamble_registerAe(v_aeName, int61);//c_CUDNDi); - + f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); // Test Body - mcaPort.send(m_request(m_retrieveResource(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName))); + mcaPort.send(m_request(m_retrieveResourceAttributeContentOption(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName, + {"parentID", "creationTime"}))); tc_ac.start; alt { - [] mcaPort.receive(mw_response(int4103)) -> value v_response { + [] mcaPort.receive(mw_responseOK) -> value v_response { tc_ac.stop; - setverdict(pass, testcasename() & ": Access denied to retrieve attributes from resource type " & int2str(enum2int(p_resourceType))); + //FIXME To double check which type response content shall contain + if(ischosen(v_response.responsePrimitive_.primitiveContent.any_1[0].MyAttributeList)){ + if((isbound(f_getAttribute(v_response.responsePrimitive_.primitiveContent.any_1[0].MyAttributeList, "parentID"))) and + (isbound(f_getAttribute(v_response.responsePrimitive_.primitiveContent.any_1[0].MyAttributeList, "creationTime")))) { + setverdict(pass, testcasename() & ": Requested attributes retrieved successfuly"); + } else { + setverdict(fail, testcasename() & ": Requested attributes not retrieved"); + } + } else { + setverdict(fail, testcasename() & ": Requested attributes not retrieved"); + } } [] mcaPort.receive(mw_responseKO) { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving attributes from resource without having privileges"); - } - [] mcaPort.receive(mw_responseOK) { - tc_ac.stop; - setverdict(fail, testcasename() & ": Retrieving attributes from resource without having privileges"); + setverdict(fail, testcasename() & ": Error while retrieving resource attributes"); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while retrieving resource attributes"); } } // Postamble f_postamble_deleteResources(v_aeName); - }//end f_CSE_DMR_RET_BO_003 + }//end f_CSE_DMR_RET_BV_006 - } // end g_CSE_DMR_RET_BO_003 + } // end g_CSE_DMR_RET_BV_006 - group g_CSE_DMR_RET_BV_004 { + group g_CSE_DMR_RET_BO_007 { - testcase TC_CSE_DMR_RET_BV_004_01() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BO_007_01() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_004(int3, m_createContainerBase);//Container + f_CSE_DMR_RET_BO_007(int3, m_createContainerBase);//Container } - testcase TC_CSE_DMR_RET_BV_004_02() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BO_007_02() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_004(int9, m_createGroupBase);//Group + f_CSE_DMR_RET_BO_007(int9, m_createGroupBase);//Group } - testcase TC_CSE_DMR_RET_BV_004_03() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BO_007_03() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_004(int1, m_createAcpBase);//AccessControlPolicy + f_CSE_DMR_RET_BO_007(int1, m_createAcpBase);//AccessControlPolicy } - testcase TC_CSE_DMR_RET_BV_004_04() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BO_007_04() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_004(int18, m_createScheduleBase);//Schedule + f_CSE_DMR_RET_BO_007(int18, m_createScheduleBase);//Schedule } - testcase TC_CSE_DMR_RET_BV_004_05() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BO_007_05() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_004(int15, m_createPollingChannelBase);//PollingChannel + f_CSE_DMR_RET_BO_007(int15, m_createPollingChannelBase);//PollingChannel } - testcase TC_CSE_DMR_RET_BV_004_06() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BO_007_06() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_004(int23, m_createSubscriptionBase);//Subscription - } - - /*testcase TC_CSE_DMR_RET_BV_004_02() runs on M2M system M2MSystem { - // Local variables - var XSD.String v_aeName := "ae_test"; - - //TODO - //f_CSE_DMR_RET_BV_004(int9, m_createGroup_noName("/" & PX_CSE_NAME & "/" & v_aeName)); - }*/ - - function f_CSE_DMR_RET_BV_004(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { + f_CSE_DMR_RET_BO_007(int23, m_createSubscriptionBase);//Subscription + } + + + function f_CSE_DMR_RET_BO_007(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; - var XSD.String v_attribute := "#pi"; - + // Test control // Test component configuration @@ -982,86 +2104,84 @@ module OneM2M_Testcases { // Preamble f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); - f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); + f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); // Test Body - mcaPort.send(m_request(m_retrieveResourceAttributeToOption(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName & v_attribute))); + mcaPort.send(m_request(m_retrieveResourceAttributeContentOption(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName, + {"labels"}))); tc_ac.start; alt { - [] mcaPort.receive(mw_responseOK) -> value v_response { + [] mcaPort.receive(mw_response(int4004)) -> value v_response { tc_ac.stop; - if(ischosen(v_response.responsePrimitive_.primitiveContent.any_1[0].AttributeList)){ - setverdict(pass, testcasename() & ": Requested attribute retrieved successfuly"); - } else { - setverdict(fail, testcasename() & ": Requested attribute not retrieved"); - } } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while retrieving non existing resource attribute"); + } + [] mcaPort.receive(mw_responseOK) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while retrieving non existing resource attribute"); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while retrieving resource attribute"); } } // Postamble f_postamble_deleteResources(v_aeName); - }//end f_CSE_DMR_RET_BV_004 + }//end f_CSE_DMR_RET_BO_007 - } // end g_CSE_DMR_RET_BV_004 + } // end g_CSE_DMR_RET_BO_007 - group g_CSE_DMR_RET_BV_005 { + group g_CSE_DMR_RET_BO_008 { - testcase TC_CSE_DMR_RET_BV_005_01() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BO_008_01() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_005(int3, m_createContainerBase);//Container + f_CSE_DMR_RET_BO_008(int3, m_createContainerBase);//Container } - testcase TC_CSE_DMR_RET_BV_005_02() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BO_008_02() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_005(int9, m_createGroupBase);//Group + f_CSE_DMR_RET_BO_008(int9, m_createGroupBase);//Group } - testcase TC_CSE_DMR_RET_BV_005_03() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BO_008_03() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_005(int1, m_createAcpBase);//AccessControlPolicy + f_CSE_DMR_RET_BO_008(int1, m_createAcpBase);//AccessControlPolicy } - testcase TC_CSE_DMR_RET_BV_005_04() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BO_008_04() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_005(int18, m_createScheduleBase);//Schedule + f_CSE_DMR_RET_BO_008(int18, m_createScheduleBase);//Schedule } - testcase TC_CSE_DMR_RET_BV_005_05() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BO_008_05() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_005(int15, m_createPollingChannelBase);//PollingChannel + f_CSE_DMR_RET_BO_008(int15, m_createPollingChannelBase);//PollingChannel } - testcase TC_CSE_DMR_RET_BV_005_06() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_RET_BO_008_06() runs on M2M system M2MSystem { // Local variables - f_CSE_DMR_RET_BV_005(int23, m_createSubscriptionBase);//Subscription + f_CSE_DMR_RET_BO_008(int23, m_createSubscriptionBase);//Subscription } - function f_CSE_DMR_RET_BV_005(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { + function f_CSE_DMR_RET_BO_008(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; - var XSD.String v_attribute := "#pi"; - + // Test control // Test component configuration @@ -1075,86 +2195,200 @@ module OneM2M_Testcases { // Test Body mcaPort.send(m_request(m_retrieveResourceAttributeContentOption(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName, - {"parentID"}))); + {"labels", "announceTo"}))); tc_ac.start; alt { - [] mcaPort.receive(mw_responseOK) -> value v_response { + [] mcaPort.receive(mw_response(int4004)) -> value v_response { tc_ac.stop; - if(ischosen(v_response.responsePrimitive_.primitiveContent.any_1[0].AttributeList)){ - if(v_response.responsePrimitive_.primitiveContent.any_1[0].AttributeList[0] == "parentID"){ - setverdict(pass, testcasename() & ": Requested attribute retrieved successfuly"); - } else { - setverdict(fail, testcasename() & ": Requested attribute not retrieved"); - } - } else { - setverdict(fail, testcasename() & ": Requested attribute not retrieved"); - } } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while retrieving non existing resource attributes"); + } + [] mcaPort.receive(mw_responseOK) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while retrieving non existing resource attributes"); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while retrieving resource attributes"); } } // Postamble f_postamble_deleteResources(v_aeName); - }//end f_CSE_DMR_RET_BV_005 + }//end f_CSE_DMR_RET_BO_008 - } // end g_CSE_DMR_RET_BV_005 - - group g_CSE_DMR_RET_BV_006 { - + } // end f_CSE_DMR_RET_BO_008 + + }//end group Retrieve + + group Update { + group g_CSE_DMR_UPD_BV_001 { - testcase TC_CSE_DMR_RET_BV_006_01() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_001_01() runs on M2M system M2MSystem { // Local variables - - f_CSE_DMR_RET_BV_006(int3, m_createContainerBase);//Container + var Labels v_labels_1 := {"VALUE_1"}; + var Labels v_labels_2:= {"VALUE_2"}; + var ResponsePrimitive v_responsePrimitive; + + var template RequestPrimitive v_createRequest := m_createContainerBase; + var template RequestPrimitive v_updateRequest := m_updateContainerBase; + + v_createRequest.primitiveContent.any_1[0].Container_create.labels := v_labels_1; + v_updateRequest.primitiveContent.any_1[0].Container_update.labels := v_labels_2; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_001(int3, v_createRequest, v_updateRequest);//Container + + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Container)) { + if(v_responsePrimitive.primitiveContent.any_1[0].Container.labels != v_labels_2){ + setverdict(fail, testcasename() & ": Error: Labels attribute not updated correctly") + } + } + } + } } - testcase TC_CSE_DMR_RET_BV_006_02() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_001_02() runs on M2M system M2MSystem { // Local variables + var Labels v_labels_1 := {"VALUE_1"}; + var Labels v_labels_2 := {"VALUE_2"}; + var template RequestPrimitive v_createRequest := m_createGroupBase; + var template RequestPrimitive v_updateRequest := m_updateGroupBase; + var ResponsePrimitive v_responsePrimitive; + + v_createRequest.primitiveContent.any_1[0].Group_create.labels := v_labels_1; + v_updateRequest.primitiveContent.any_1[0].Group_update.labels := v_labels_2; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_001(int9, v_createRequest, v_updateRequest);//Group - f_CSE_DMR_RET_BV_006(int9, m_createGroupBase);//Group + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Group)) { + if(v_responsePrimitive.primitiveContent.any_1[0].Group.labels != v_labels_2){ + setverdict(fail, testcasename() & ": Error: Labels attribute not updated correctly") + } + } + } + } } - testcase TC_CSE_DMR_RET_BV_006_03() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_001_03() runs on M2M system M2MSystem { // Local variables - - f_CSE_DMR_RET_BV_006(int1, m_createAcpBase);//AccessControlPolicy + var Labels v_labels_1 := {"VALUE_1"}; + var Labels v_labels_2 := {"VALUE_2"}; + var template RequestPrimitive v_createRequest := m_createAcpBase; + var template RequestPrimitive v_updateRequest := m_updateAcpBase; + var ResponsePrimitive v_responsePrimitive; + + v_createRequest.primitiveContent.any_1[0].ACP_create.labels := v_labels_1; + v_updateRequest.primitiveContent.any_1[0].ACP_update.labels := v_labels_2; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_001(int1, v_createRequest, v_updateRequest);//ACP + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy)) { + if(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy.labels != v_labels_2){ + setverdict(fail, testcasename() & ": Error: Labels attribute not updated correctly") + } + } + } + } + } - testcase TC_CSE_DMR_RET_BV_006_04() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_001_04() runs on M2M system M2MSystem { // Local variables - - f_CSE_DMR_RET_BV_006(int18, m_createScheduleBase);//Schedule + var Labels v_labels_1 := {"VALUE_1"}; + var Labels v_labels_2 := {"VALUE_2"}; + var template RequestPrimitive v_createRequest := m_createScheduleBase; + var template RequestPrimitive v_updateRequest := m_updateScheduleBase; + var ResponsePrimitive v_responsePrimitive; + + v_createRequest.primitiveContent.any_1[0].Schedule_create.labels := v_labels_1; + v_updateRequest.primitiveContent.any_1[0].Schedule_update.labels := v_labels_2; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_001(int18, v_createRequest, v_updateRequest);//Schedule + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Schedule)) { + if(v_responsePrimitive.primitiveContent.any_1[0].Schedule.labels != v_labels_2){ + setverdict(fail, testcasename() & ": Error: Labels attribute not updated correctly") + } + } + } + } + } - testcase TC_CSE_DMR_RET_BV_006_05() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_001_05() runs on M2M system M2MSystem { // Local variables - - f_CSE_DMR_RET_BV_006(int15, m_createPollingChannelBase);//PollingChannel + var Labels v_labels_1 := {"VALUE_1"}; + var Labels v_labels_2 := {"VALUE_2"}; + var template RequestPrimitive v_createRequest := m_createPollingChannelBase; + var template RequestPrimitive v_updateRequest := m_updatePollingChannelBase; + var ResponsePrimitive v_responsePrimitive; + + v_createRequest.primitiveContent.any_1[0].PollingChannel_create.labels := v_labels_1; + v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.labels := v_labels_2; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_001(int15, v_createRequest, v_updateRequest);//PollingChannel + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].PollingChannel)) { + if(v_responsePrimitive.primitiveContent.any_1[0].PollingChannel.labels != v_labels_2){ + setverdict(fail, testcasename() & ": Error: Labels attribute not updated correctly") + } + } + } + } } - testcase TC_CSE_DMR_RET_BV_006_06() runs on M2M system M2MSystem { - // Local variables - - f_CSE_DMR_RET_BV_006(int23, m_createSubscriptionBase);//Subscription - } + testcase TC_CSE_DMR_UPD_BV_001_06() runs on M2M system M2MSystem { + // Local variables + var Labels v_labels_1 := {"VALUE_1"}; + var Labels v_labels_2 := {"VALUE_2"}; + var template RequestPrimitive v_createRequest := m_createSubscriptionBase; + var template RequestPrimitive v_updateRequest := m_updateSubscriptionBase; + var ResponsePrimitive v_responsePrimitive; + + v_createRequest.primitiveContent.any_1[0].Subscription_create.labels := v_labels_1; + v_updateRequest.primitiveContent.any_1[0].Subscription_update.labels := v_labels_2; + v_responsePrimitive := f_CSE_DMR_UPD_BV_001(int23, v_createRequest, v_updateRequest);//Subscription + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Subscription)) { + if(v_responsePrimitive.primitiveContent.any_1[0].Subscription.labels != v_labels_2){ + setverdict(fail, testcasename() & ": Error: Labels attribute not updated correctly") + } + } + } + } - function f_CSE_DMR_RET_BV_006(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { + } + + function f_CSE_DMR_UPD_BV_001(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive) runs on M2M return ResponsePrimitive{ // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; - var XSD.String v_attribute := "#pi"; + var XSD.String v_targetResourceAddress := v_aeResourceAddress & "/" & c_defaultResourceName; // Test control @@ -1165,90 +2399,178 @@ module OneM2M_Testcases { // Preamble f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); - f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); + f_createResource(p_resourceType, v_aeResourceAddress, p_createRequestPrimitive); // Test Body - mcaPort.send(m_request(m_retrieveResourceAttributeContentOption(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName, - {"parentID", "creationTime"}))); + v_request := f_getUpdateRequestPrimitive(p_resourceType, v_targetResourceAddress, p_updateRequestPrimitive); + + mcaPort.send(m_request(v_request)); tc_ac.start; alt { [] mcaPort.receive(mw_responseOK) -> value v_response { tc_ac.stop; - if(ischosen(v_response.responsePrimitive_.primitiveContent.any_1[0].AttributeList)){ - if(v_response.responsePrimitive_.primitiveContent.any_1[0].AttributeList[0] == "parentID"){ - setverdict(pass, testcasename() & ": Requested attribute retrieved successfuly"); - } else { - setverdict(fail, testcasename() & ": Requested attribute not retrieved"); - } - } else { - setverdict(fail, testcasename() & ": Requested attribute not retrieved"); - } + setverdict(pass, testcasename() & ": Attribute of resource type " & int2str(enum2int(p_resourceType)) & " updated successfuly"); } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while updating resource type " & int2str(enum2int(p_resourceType))); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while updating resource type " & int2str(enum2int(p_resourceType))); } } // Postamble f_postamble_deleteResources(v_aeName); + + return v_response.responsePrimitive_; + + }//end f_CSE_DMR_UPD_BV_001 - }//end f_CSE_DMR_RET_BV_006 - - } // end g_CSE_DMR_RET_BV_006 + } // end g_CSE_DMR_UPD_BV_001 - group g_CSE_DMR_RET_BO_007 { - + group g_CSE_DMR_UPD_BV_002 { - testcase TC_CSE_DMR_RET_BO_007_01() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_002_01() runs on M2M system M2MSystem { // Local variables + var Labels v_labels_1 := {"VALUE_1"}; + var template RequestPrimitive v_updateRequest := m_updateContainerBase; + var ResponsePrimitive v_responsePrimitive; + + v_updateRequest.primitiveContent.any_1[0].Container_update.labels := v_labels_1; - f_CSE_DMR_RET_BO_007(int3, m_createContainerBase);//Container + v_responsePrimitive := f_CSE_DMR_UPD_BV_002(int3, m_createContainerBase, v_updateRequest);//Container + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Container)) { + if(v_responsePrimitive.primitiveContent.any_1[0].Container.labels != v_labels_1){ + setverdict(fail, testcasename() & ": Error: Labels attribute not updated correctly") + } + } + } + } } - testcase TC_CSE_DMR_RET_BO_007_02() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_002_02() runs on M2M system M2MSystem { // Local variables + var Labels v_labels_1 := {"VALUE_1"}; + var template RequestPrimitive v_updateRequest := m_updateGroupBase; + var ResponsePrimitive v_responsePrimitive; + + v_updateRequest.primitiveContent.any_1[0].Group_update.labels := v_labels_1; - f_CSE_DMR_RET_BO_007(int9, m_createGroupBase);//Group + v_responsePrimitive := f_CSE_DMR_UPD_BV_002(int9, m_createGroupBase, v_updateRequest);//Group + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Group)) { + if(v_responsePrimitive.primitiveContent.any_1[0].Group.labels != v_labels_1){ + setverdict(fail, testcasename() & ": Error: Labels attribute not updated correctly") + } + } + } + } } - testcase TC_CSE_DMR_RET_BO_007_03() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_002_03() runs on M2M system M2MSystem { // Local variables - - f_CSE_DMR_RET_BO_007(int1, m_createAcpBase);//AccessControlPolicy + var Labels v_labels_1 := {"VALUE_1"}; + var template RequestPrimitive v_updateRequest := m_updateAcpBase; + var ResponsePrimitive v_responsePrimitive; + + v_updateRequest.primitiveContent.any_1[0].ACP_update.labels := v_labels_1; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_002(int1, m_createAcpBase,v_updateRequest);//AccessControlPolicy + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy)) { + if(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy.labels != v_labels_1){ + setverdict(fail, testcasename() & ": Error: Labels attribute not updated correctly") + } + } + } + } } - testcase TC_CSE_DMR_RET_BO_007_04() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_002_04() runs on M2M system M2MSystem { // Local variables - - f_CSE_DMR_RET_BO_007(int18, m_createScheduleBase);//Schedule + var Labels v_labels_1 := {"VALUE_1"}; + var template RequestPrimitive v_updateRequest := m_updateScheduleBase; + var ResponsePrimitive v_responsePrimitive; + + v_updateRequest.primitiveContent.any_1[0].Schedule_update.labels := v_labels_1; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_002(int18, m_createScheduleBase,v_updateRequest);//Schedule + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Schedule)) { + if(v_responsePrimitive.primitiveContent.any_1[0].Schedule.labels != v_labels_1){ + setverdict(fail, testcasename() & ": Error: Labels attribute not updated correctly") + } + } + } + } } - testcase TC_CSE_DMR_RET_BO_007_05() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_002_05() runs on M2M system M2MSystem { // Local variables - - f_CSE_DMR_RET_BO_007(int15, m_createPollingChannelBase);//PollingChannel + var Labels v_labels_1 := {"VALUE_1"}; + var template RequestPrimitive v_updateRequest := m_updatePollingChannelBase; + var ResponsePrimitive v_responsePrimitive; + + v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.labels := v_labels_1; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_002(int15, m_createPollingChannelBase,v_updateRequest);//PollingChannel + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].PollingChannel)) { + if(v_responsePrimitive.primitiveContent.any_1[0].PollingChannel.labels != v_labels_1){ + setverdict(fail, testcasename() & ": Error: Labels attribute not updated correctly") + } + } + } + } } - testcase TC_CSE_DMR_RET_BO_007_06() runs on M2M system M2MSystem { - // Local variables - - f_CSE_DMR_RET_BO_007(int23, m_createSubscriptionBase);//Subscription - } + testcase TC_CSE_DMR_UPD_BV_002_06() runs on M2M system M2MSystem { + // Local variables + var Labels v_labels_1 := {"VALUE_1"}; + var template RequestPrimitive v_updateRequest := m_updateSubscriptionBase; + var ResponsePrimitive v_responsePrimitive; + v_updateRequest.primitiveContent.any_1[0].Subscription_update.labels := v_labels_1; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_002(int23, m_createSubscriptionBase,v_updateRequest);//Subscription + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Subscription)) { + if(v_responsePrimitive.primitiveContent.any_1[0].Subscription.labels != v_labels_1){ + setverdict(fail, testcasename() & ": Error: Labels attribute not updated correctly") + } + } + } + } + } - function f_CSE_DMR_RET_BO_007(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { + function f_CSE_DMR_UPD_BV_002(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive) runs on M2M return ResponsePrimitive { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; - var XSD.String v_attribute := "#lbl"; + var XSD.String v_targetResourceAddress := v_aeResourceAddress & "/" & c_defaultResourceName; // Test control @@ -1259,90 +2581,214 @@ module OneM2M_Testcases { // Preamble f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); - f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); + f_createResource(p_resourceType, v_aeResourceAddress, p_createRequestPrimitive); // Test Body - mcaPort.send(m_request(m_retrieveResourceAttributeContentOption(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName, - {"labels"}))); + v_request := f_getUpdateRequestPrimitive(p_resourceType, v_targetResourceAddress, p_updateRequestPrimitive); + + mcaPort.send(m_request(v_request)); tc_ac.start; alt { [] mcaPort.receive(mw_responseOK) -> value v_response { tc_ac.stop; - if(ischosen(v_response.responsePrimitive_.primitiveContent.any_1[0].AttributeList)){ - if(v_response.responsePrimitive_.primitiveContent.any_1[0].AttributeList[0] == "parentID"){ - setverdict(pass, testcasename() & ": Requested attribute retrieved successfuly"); - } else { - setverdict(fail, testcasename() & ": Requested attribute not retrieved"); - } - } else { - setverdict(fail, testcasename() & ": Requested attribute not retrieved"); - } + setverdict(pass, testcasename() & ": Attribute of resource type " & int2str(enum2int(p_resourceType)) & " updated successfuly"); } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while updating resource type " & int2str(enum2int(p_resourceType))); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while updating resource type " & int2str(enum2int(p_resourceType))); } } // Postamble f_postamble_deleteResources(v_aeName); + + return v_response.responsePrimitive_; + + }//end f_CSE_DMR_UPD_BV_002 - }//end f_CSE_DMR_RET_BO_007 - - } // end g_CSE_DMR_RET_BO_007 + } // end g_CSE_DMR_UPD_BV_002 - group g_CSE_DMR_RET_BO_008 { - + group g_CSE_DMR_UPD_BV_003 { - testcase TC_CSE_DMR_RET_BO_008_01() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_003_01() runs on M2M system M2MSystem { // Local variables + var Labels v_labels_1 := {"VALUE_1"}; + var Labels v_labels_2 := {"To be deleted"}; + var AttributeList v_nullFields; + var ResponsePrimitive v_responsePrimitive; + var template RequestPrimitive v_createRequest := m_createContainerBase; + var template RequestPrimitive v_updateRequest := m_updateContainerBase; + + v_createRequest.primitiveContent.any_1[0].Container_create.labels := v_labels_1; + v_updateRequest.primitiveContent.any_1[0].Container_update.labels := v_labels_2; + + v_nullFields := {"labels"}; - f_CSE_DMR_RET_BO_008(int3, m_createContainerBase);//Container + v_responsePrimitive := f_CSE_DMR_UPD_BV_003(int3, v_createRequest, v_updateRequest, v_nullFields);//Container + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Container)) { + if(ispresent(v_responsePrimitive.primitiveContent.any_1[0].Container.labels)){ + setverdict(fail, testcasename() & ": Error: Labels attribute not deleted correctly") + } + } + } + } } - testcase TC_CSE_DMR_RET_BO_008_02() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_003_02() runs on M2M system M2MSystem { // Local variables + var Labels v_labels_1 := {"VALUE_1"}; + var Labels v_labels_2 := {"To be deleted"}; + var AttributeList v_nullFields; + var ResponsePrimitive v_responsePrimitive; + var template RequestPrimitive v_createRequest := m_createGroupBase; + var template RequestPrimitive v_updateRequest := m_updateGroupBase; + + v_createRequest.primitiveContent.any_1[0].Group_create.labels := v_labels_1; + v_updateRequest.primitiveContent.any_1[0].Group_update.labels := v_labels_2; - f_CSE_DMR_RET_BO_008(int9, m_createGroupBase);//Group + v_nullFields := {"labels"}; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_003(int9, v_createRequest, v_updateRequest, v_nullFields);//Group + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Group)) { + if(ispresent(v_responsePrimitive.primitiveContent.any_1[0].Group.labels)){ + setverdict(fail, testcasename() & ": Error: Labels attribute not deleted correctly") + } + } + } + } } - testcase TC_CSE_DMR_RET_BO_008_03() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_003_03() runs on M2M system M2MSystem { // Local variables - - f_CSE_DMR_RET_BO_008(int1, m_createAcpBase);//AccessControlPolicy + var Labels v_labels_1 := {"VALUE_1"}; + var Labels v_labels_2 := {"To be deleted"}; + var AttributeList v_nullFields; + var ResponsePrimitive v_responsePrimitive; + var template RequestPrimitive v_createRequest := m_createAcpBase; + var template RequestPrimitive v_updateRequest := m_updateAcpBase; + + v_createRequest.primitiveContent.any_1[0].ACP_create.labels := v_labels_1; + v_updateRequest.primitiveContent.any_1[0].ACP_update.labels := v_labels_2; + + v_nullFields := {"labels"}; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_003(int1, v_createRequest, v_updateRequest, v_nullFields);//AccessControlPolicy + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy)) { + if(ispresent(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy.labels)){ + setverdict(fail, testcasename() & ": Error: Labels attribute not deleted correctly") + } + } + } + } } - testcase TC_CSE_DMR_RET_BO_008_04() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_003_04() runs on M2M system M2MSystem { // Local variables - - f_CSE_DMR_RET_BO_008(int18, m_createScheduleBase);//Schedule + var Labels v_labels_1 := {"VALUE_1"}; + var Labels v_labels_2 := {"To be deleted"}; + var AttributeList v_nullFields; + var ResponsePrimitive v_responsePrimitive; + var template RequestPrimitive v_createRequest := m_createScheduleBase; + var template RequestPrimitive v_updateRequest := m_updateScheduleBase; + + v_createRequest.primitiveContent.any_1[0].Schedule_create.labels := v_labels_1; + v_updateRequest.primitiveContent.any_1[0].Schedule_update.labels := v_labels_2; + + v_nullFields := {"labels"}; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_003(int18, v_createRequest, v_updateRequest, v_nullFields);//Schedule + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Schedule)) { + if(ispresent(v_responsePrimitive.primitiveContent.any_1[0].Schedule.labels)){ + setverdict(fail, testcasename() & ": Error: Labels attribute not deleted correctly") + } + } + } + } } - testcase TC_CSE_DMR_RET_BO_008_05() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_003_05() runs on M2M system M2MSystem { // Local variables - - f_CSE_DMR_RET_BO_008(int15, m_createPollingChannelBase);//PollingChannel + var Labels v_labels_1 := {"VALUE_1"}; + var Labels v_labels_2 := {"To be deleted"}; + var AttributeList v_nullFields; + var ResponsePrimitive v_responsePrimitive; + var template RequestPrimitive v_createRequest := m_createPollingChannelBase; + var template RequestPrimitive v_updateRequest := m_updatePollingChannelBase; + + v_createRequest.primitiveContent.any_1[0].PollingChannel_create.labels := v_labels_1; + v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.labels := v_labels_2; + + v_nullFields := {"labels"}; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_003(int15, v_createRequest, v_updateRequest, v_nullFields);//PollingChannel + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].PollingChannel)) { + if(ispresent(v_responsePrimitive.primitiveContent.any_1[0].PollingChannel.labels)){ + setverdict(fail, testcasename() & ": Error: Labels attribute not deleted correctly") + } + } + } + } } - testcase TC_CSE_DMR_RET_BO_008_06() runs on M2M system M2MSystem { - // Local variables - - f_CSE_DMR_RET_BO_008(int23, m_createSubscriptionBase);//Subscription - } + testcase TC_CSE_DMR_UPD_BV_003_06() runs on M2M system M2MSystem { + // Local variables + var Labels v_labels_1 := {"VALUE_1"}; + var Labels v_labels_2 := {"To be deleted"}; + var AttributeList v_nullFields; + var ResponsePrimitive v_responsePrimitive; + var template RequestPrimitive v_createRequest := m_createSubscriptionBase; + var template RequestPrimitive v_updateRequest := m_updateSubscriptionBase; + v_createRequest.primitiveContent.any_1[0].Subscription_create.labels := v_labels_1; + v_updateRequest.primitiveContent.any_1[0].Subscription_update.labels := v_labels_2; + + v_nullFields := {"labels"}; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_003(int23, v_createRequest, v_updateRequest, v_nullFields);//Subscription + + if(getverdict == pass){ + //Check attribute 1 + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Subscription)) { + if(ispresent(v_responsePrimitive.primitiveContent.any_1[0].Subscription.labels)){ + setverdict(fail, testcasename() & ": Error: Labels attribute not deleted correctly") + } + } + } + } + } - function f_CSE_DMR_RET_BO_008(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive) runs on M2M { + function f_CSE_DMR_UPD_BV_003(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive, template (omit) AttributeList_1 p_nullFields := omit) runs on M2M return ResponsePrimitive { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName; - var XSD.String v_attribute := "#pi"; + var XSD.String v_targetResourceAddress := v_aeResourceAddress & "/" & c_defaultResourceName; // Test control @@ -1353,136 +2799,298 @@ module OneM2M_Testcases { // Preamble f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); - f_createResource(p_resourceType, v_aeResourceAddress, p_requestPrimitive); + f_createResource(p_resourceType, v_aeResourceAddress, p_createRequestPrimitive); // Test Body - mcaPort.send(m_request(m_retrieveResourceAttributeContentOption(p_resourceType, v_aeResourceAddress & "/" & c_defaultResourceName, - {"labels", "announceTo"}))); + v_request := f_getUpdateRequestPrimitive(p_resourceType, v_targetResourceAddress, p_updateRequestPrimitive); + + mcaPort.send(m_request(v_request, p_nullFields)); tc_ac.start; alt { [] mcaPort.receive(mw_responseOK) -> value v_response { tc_ac.stop; - if(ischosen(v_response.responsePrimitive_.primitiveContent.any_1[0].AttributeList)){ - if(v_response.responsePrimitive_.primitiveContent.any_1[0].AttributeList[0] == "parentID"){ - setverdict(pass, testcasename() & ": Requested attribute retrieved successfuly"); - } else { - setverdict(fail, testcasename() & ": Requested attribute not retrieved"); - } - } else { - setverdict(fail, testcasename() & ": Requested attribute not retrieved"); - } + setverdict(pass, testcasename() & ": Attribute of resource type " & int2str(enum2int(p_resourceType)) & " updated successfuly"); } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while retrieving resource"); + setverdict(fail, testcasename() & ": Error while updating resource type " & int2str(enum2int(p_resourceType))); } [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No answer while retrieving resource"); + setverdict(inconc, testcasename() & ": No answer while updating resource type " & int2str(enum2int(p_resourceType))); } } // Postamble f_postamble_deleteResources(v_aeName); + + return v_response.responsePrimitive_; + + }//end f_CSE_DMR_UPD_BV_003 - }//end f_CSE_DMR_RET_BO_008 - - } // end f_CSE_DMR_RET_BO_008 - - }//end group Retrieve - - group Update { - group g_CSE_DMR_UPD_BV_001 { + } // end g_CSE_DMR_UPD_BV_003 + + group g_CSE_DMR_UPD_BV_004 { - testcase TC_CSE_DMR_UPD_BV_001_01() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_004_01() runs on M2M system M2MSystem { // Local variables var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2:= {"VALUE_2"}; + var Labels v_labels_2 := {"To be deleted"}; var template RequestPrimitive v_createRequest := m_createContainerBase; var template RequestPrimitive v_updateRequest := m_updateContainerBase; + var ResponsePrimitive v_responsePrimitive; + var AttributeList_1 v_nullFields; + + v_createRequest.primitiveContent.any_1[0].Container_create.labels := v_labels_1;//Attribute 3 + v_updateRequest.primitiveContent.any_1[0].Container_update.expirationTime := "20001231T012345";//Attribute 1 + v_updateRequest.primitiveContent.any_1[0].Container_update.maxNrOfInstances := 5;//Attribute 2 + v_updateRequest.primitiveContent.any_1[0].Container_update.labels := v_labels_2;//Attribute 3 - v_createRequest.primitiveContent.any_1[0].Container_create.labels := v_labels_1; - v_updateRequest.primitiveContent.any_1[0].Container_update.labels := v_labels_2; + v_nullFields := {"labels"}; - f_CSE_DMR_UPD_BV_001(int3, v_createRequest, v_updateRequest);//Container + v_responsePrimitive := f_CSE_DMR_UPD_BV_004(int3, v_createRequest, v_updateRequest, v_nullFields);//Container + + if(getverdict == pass){ + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Container)) { + //Check attribute 1 + if(v_responsePrimitive.primitiveContent.any_1[0].Container.expirationTime != valueof(v_updateRequest.primitiveContent.any_1[0].Container_update.expirationTime)){ + setverdict(fail, testcasename() & ": Error: Expiration Time attribute not updated correctly") + } + //Check attribute 2 + if(v_responsePrimitive.primitiveContent.any_1[0].Container.maxNrOfInstances != valueof(v_updateRequest.primitiveContent.any_1[0].Container_update.maxNrOfInstances)){ + setverdict(fail, testcasename() & ": Error: MaxNrOfInstances attribute not updated correctly") + } + //Check attribute 3 + if(ispresent(v_responsePrimitive.primitiveContent.any_1[0].Container.labels)){ + setverdict(fail, testcasename() & ": Error: Labels attribute not deleted correctly") + } + } + } + } } - testcase TC_CSE_DMR_UPD_BV_001_02() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_004_02() runs on M2M system M2MSystem { // Local variables + var XSD.String v_groupName_1 := "VALUE_1";//Attribute 1 + var XSD.String v_groupName_2 := "VALUE_2"; var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"VALUE_2"}; + var Labels v_labels_2 := {"To be deleted"}; + var AcpType v_acp := {"ACP_ID"}; + + var AttributeList_1 v_nullFields; var template RequestPrimitive v_createRequest := m_createGroupBase; var template RequestPrimitive v_updateRequest := m_updateGroupBase; - - v_createRequest.primitiveContent.any_1[0].Group_create.labels := v_labels_1; - v_updateRequest.primitiveContent.any_1[0].Group_update.labels := v_labels_2; - - f_CSE_DMR_UPD_BV_001(int9, v_createRequest, v_updateRequest);//Group + var ResponsePrimitive v_responsePrimitive; + + v_createRequest.primitiveContent.any_1[0].Group_create.groupName:= v_groupName_1;//Attribute 1 + v_createRequest.primitiveContent.any_1[0].Group_create.labels := v_labels_1;//Attribute 3 + v_updateRequest.primitiveContent.any_1[0].Group_update.groupName:= v_groupName_2;//Attribute 1 + v_updateRequest.primitiveContent.any_1[0].Group_update.accessControlPolicyIDs := v_acp;//Attribute 2 //TODO Check another attribute + v_updateRequest.primitiveContent.any_1[0].Group_update.labels := v_labels_2;//Attribute 3 + + v_nullFields := {"labels"}; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_004(int9, v_createRequest, v_updateRequest, v_nullFields);//Group + + if(getverdict == pass){ + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Group)) { + //Check attribute 1 + if(v_responsePrimitive.primitiveContent.any_1[0].Group.groupName != valueof(v_updateRequest.primitiveContent.any_1[0].Group_update.groupName)){ + setverdict(fail, testcasename() & ": Error: Expiration Time attribute not updated correctly") + } + //Check attribute 2 + if(v_responsePrimitive.primitiveContent.any_1[0].Group.accessControlPolicyIDs != valueof(v_updateRequest.primitiveContent.any_1[0].Group_update.accessControlPolicyIDs)){ + setverdict(fail, testcasename() & ": Error: MaxNrOfInstances attribute not updated correctly") + } + //Check attribute 3 + if(ispresent(v_responsePrimitive.primitiveContent.any_1[0].Group.labels)){ + setverdict(fail, testcasename() & ": Error: Labels attribute not deleted correctly") + } + } + } + } } - testcase TC_CSE_DMR_UPD_BV_001_03() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_004_03() runs on M2M system M2MSystem { // Local variables var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"VALUE_2"}; + var Labels v_labels_2 := {"To be deleted"}; + var SetOfAcrs v_privileges_1 := { + accessControlRule_list := { + { + accessControlOriginators := {"admin:admin"}, + accessControlOperations := int63, + accessControlContexts_list := omit + } + } + } + var SetOfAcrs v_privileges_2 := { + accessControlRule_list := { + { + accessControlOriginators := {"admin:admin"}, + accessControlOperations := int61, + accessControlContexts_list := omit + } + } + } + var AttributeList_1 v_nullFields; var template RequestPrimitive v_createRequest := m_createAcpBase; var template RequestPrimitive v_updateRequest := m_updateAcpBase; - - v_createRequest.primitiveContent.any_1[0].ACP_create.labels := v_labels_1; - v_updateRequest.primitiveContent.any_1[0].ACP_update.labels := v_labels_2; - - f_CSE_DMR_UPD_BV_001(int1, v_createRequest, v_updateRequest);//ACP + var ResponsePrimitive v_responsePrimitive; + + v_createRequest.primitiveContent.any_1[0].ACP_create.privileges := v_privileges_1;//Attribute 1 + v_updateRequest.primitiveContent.any_1[0].ACP_update.privileges := v_privileges_2; //Attribute 1 + v_updateRequest.primitiveContent.any_1[0].ACP_update.announceTo := {PX_URI_CSE};//Attribute 2 + v_updateRequest.primitiveContent.any_1[0].ACP_update.labels := v_labels_2;//Attribute 3 + v_nullFields := {"labels"}; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_004(int1, v_createRequest, v_updateRequest, v_nullFields);//AccessControlPolicy + + if(getverdict == pass){ + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy)) { + //Check attribute 1 + if(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy.privileges != valueof(v_updateRequest.primitiveContent.any_1[0].ACP_update.privileges)){ + setverdict(fail, testcasename() & ": Error: Privileges attribute not updated correctly") + } + //Check attribute 2 + if(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy.announceTo != valueof(v_updateRequest.primitiveContent.any_1[0].ACP_update.announceTo)){ + setverdict(fail, testcasename() & ": Error: Expiration Time attribute not updated correctly") + } + //Check attribute 3 + if(ispresent(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy.labels)){ + setverdict(fail, testcasename() & ": Error: Labels attribute not deleted correctly") + } + } + } + } } - testcase TC_CSE_DMR_UPD_BV_001_04() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_004_04() runs on M2M system M2MSystem { // Local variables var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"VALUE_2"}; + var Labels v_labels_2 := {"To be deleted"}; + var AttributeList_1 v_nullFields; var template RequestPrimitive v_createRequest := m_createScheduleBase; var template RequestPrimitive v_updateRequest := m_updateScheduleBase; - - v_createRequest.primitiveContent.any_1[0].Schedule_create.labels := v_labels_1; - v_updateRequest.primitiveContent.any_1[0].Schedule_update.labels := v_labels_2; - - f_CSE_DMR_UPD_BV_001(int18, v_createRequest, v_updateRequest);//Schedule - + var ResponsePrimitive v_responsePrimitive; + + v_createRequest.primitiveContent.any_1[0].Schedule_create.scheduleElement := {{"0,0,0 1 2,1,1,*"}};//Attribute 1 + v_updateRequest.primitiveContent.any_1[0].Schedule_update.scheduleElement := {{"1,1,1 1 2,1,1,*"}}; //Attribute 1 + v_updateRequest.primitiveContent.any_1[0].Schedule_update.announceTo := {PX_URI_CSE};//Attribute 2 + v_updateRequest.primitiveContent.any_1[0].Schedule_update.labels := v_labels_2;//Attribute 3 + + v_nullFields := {"labels"}; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_004(int18, v_createRequest, v_updateRequest, v_nullFields);//Schedule + + if(getverdict == pass){ + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Schedule)) { + //Check attribute 1 + if(v_responsePrimitive.primitiveContent.any_1[0].Schedule.scheduleElement != valueof(v_updateRequest.primitiveContent.any_1[0].Schedule_update.scheduleElement)){ + setverdict(fail, testcasename() & ": Error: Expiration Time attribute not updated correctly") + } + //Check attribute 2 + if(v_responsePrimitive.primitiveContent.any_1[0].Schedule.announceTo != valueof(v_updateRequest.primitiveContent.any_1[0].Schedule_update.announceTo)){ + setverdict(fail, testcasename() & ": Error: MaxNrOfInstances attribute not updated correctly") + } + //Check attribute 3 + if(ispresent(v_responsePrimitive.primitiveContent.any_1[0].Schedule.labels)){ + setverdict(fail, testcasename() & ": Error: Labels attribute not deleted correctly") + } + } + } + } } - testcase TC_CSE_DMR_UPD_BV_001_05() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_004_05() runs on M2M system M2MSystem { // Local variables var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"VALUE_2"}; + var Labels v_labels_2 := {"To be deleted"}; + var AcpType v_acp := {"ACP_ID"}; + var AttributeList_1 v_nullFields; var template RequestPrimitive v_createRequest := m_createPollingChannelBase; var template RequestPrimitive v_updateRequest := m_updatePollingChannelBase; - - v_createRequest.primitiveContent.any_1[0].PollingChannel_create.labels := v_labels_1; - v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.labels := v_labels_2; - - f_CSE_DMR_UPD_BV_001(int15, v_createRequest, v_updateRequest);//PollingChannel + var ResponsePrimitive v_responsePrimitive; + + v_createRequest.primitiveContent.any_1[0].PollingChannel_create.labels := v_labels_1;//Attribute 3 + //No Attribute 1 + v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.accessControlPolicyIDs := v_acp;//Attribute 2 + v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.labels := v_labels_2;//Attribute 3 + + v_nullFields := {"labels"}; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_004(int15, v_createRequest, v_updateRequest, v_nullFields);//PollingChannel + + if(getverdict == pass){ + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].PollingChannel)) { + //Check attribute 1 + + //Check attribute 2 + if(v_responsePrimitive.primitiveContent.any_1[0].PollingChannel.accessControlPolicyIDs != valueof(v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.accessControlPolicyIDs)){ + setverdict(fail, testcasename() & ": Error: MaxNrOfInstances attribute not updated correctly") + } + //Check attribute 3 + if(ispresent(v_responsePrimitive.primitiveContent.any_1[0].PollingChannel.labels)){ + setverdict(fail, testcasename() & ": Error: Labels attribute not deleted correctly") + } + } + } + } } - testcase TC_CSE_DMR_UPD_BV_001_06() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BV_004_06() runs on M2M system M2MSystem { // Local variables var Labels v_labels_1 := {"VALUE_1"}; var Labels v_labels_2 := {"VALUE_2"}; + var AcpType v_acp := {"ACP_ID"}; + var AttributeList_1 v_nullFields; var template RequestPrimitive v_createRequest := m_createSubscriptionBase; var template RequestPrimitive v_updateRequest := m_updateSubscriptionBase; - - v_createRequest.primitiveContent.any_1[0].Subscription_create.labels := v_labels_1; - v_updateRequest.primitiveContent.any_1[0].Subscription_update.labels := v_labels_2; - - f_CSE_DMR_UPD_BV_001(int23, v_createRequest, v_updateRequest);//Subscription - + var ResponsePrimitive v_responsePrimitive; + + v_createRequest.primitiveContent.any_1[0].Subscription_create.labels := v_labels_1;//Attribute 1 + v_createRequest.primitiveContent.any_1[0].Subscription_create.expirationCounter := 5;//Attribute 3 + v_updateRequest.primitiveContent.any_1[0].Subscription_update.labels := v_labels_2;//Attribute 1 + v_updateRequest.primitiveContent.any_1[0].Subscription_update.accessControlPolicyIDs := v_acp; //Attribute 2 + v_updateRequest.primitiveContent.any_1[0].Subscription_update.expirationCounter := 1;//Attribute 3 + + v_nullFields := {"expirationCounter"}; + + v_responsePrimitive := f_CSE_DMR_UPD_BV_004(int23, v_createRequest, v_updateRequest, v_nullFields);//Subscription + + if(getverdict == pass){ + if(ispresent(v_responsePrimitive.primitiveContent)) { + if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].Subscription)) { + //Check attribute 1 + if(v_responsePrimitive.primitiveContent.any_1[0].Subscription.labels != valueof(v_updateRequest.primitiveContent.any_1[0].Subscription_update.labels)){ + setverdict(fail, testcasename() & ": Error: Expiration Time attribute not updated correctly") + } + //Check attribute 2 + if(v_responsePrimitive.primitiveContent.any_1[0].Subscription.accessControlPolicyIDs != valueof(v_updateRequest.primitiveContent.any_1[0].Subscription_update.accessControlPolicyIDs)){ + setverdict(fail, testcasename() & ": Error: MaxNrOfInstances attribute not updated correctly") + } + //Check attribute 3 + if(ispresent(v_responsePrimitive.primitiveContent.any_1[0].Subscription.expirationCounter)){ + setverdict(fail, testcasename() & ": Error: Labels attribute not deleted correctly") + } + } + } + } } - function f_CSE_DMR_UPD_BV_001(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive) runs on M2M { + function f_CSE_DMR_UPD_BV_004(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive, template (omit) AttributeList_1 p_nullFields := omit) runs on M2M return ResponsePrimitive { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; - var XSD.String v_aeResourceAddress := "/" & PX_CSE_NAME & "/" & v_aeName & "/" & c_defaultResourceName; - var XSD.String v_targetResourceAddress := "/" & PX_CSE_NAME & "/" & v_aeName & "/" & c_defaultResourceName; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName ; + var XSD.String v_targetResourceAddress := v_aeResourceAddress & "/" & c_defaultResourceName; // Test control @@ -1498,15 +3106,14 @@ module OneM2M_Testcases { // Test Body v_request := f_getUpdateRequestPrimitive(p_resourceType, v_targetResourceAddress, p_updateRequestPrimitive); - mcaPort.send(m_request(v_request)); + mcaPort.send(m_request(v_request, p_nullFields)); tc_ac.start; alt { [] mcaPort.receive(mw_responseOK) -> value v_response { tc_ac.stop; setverdict(pass, testcasename() & ": Attribute of resource type " & int2str(enum2int(p_resourceType)) & " updated successfuly"); - //TODO: Check that name attribute is provided } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; setverdict(fail, testcasename() & ": Error while updating resource type " & int2str(enum2int(p_resourceType))); } @@ -1517,82 +3124,95 @@ module OneM2M_Testcases { // Postamble f_postamble_deleteResources(v_aeName); + + return v_response.responsePrimitive_; - }//end f_CSE_DMR_UPD_BV_001 + }//end f_CSE_DMR_UPD_BV_004 - } // end g_CSE_DMR_UPD_BV_001 + } // end g_CSE_DMR_UPD_BV_004 - group g_CSE_DMR_UPD_BV_002 { + group g_CSE_DMR_UPD_BO_005{ - testcase TC_CSE_DMR_UPD_BV_002_01() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_005_01() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_2 := {"VALUE_2"}; - var template RequestPrimitive v_updateRequest := m_updateContainerBase; + var XSD.PositiveInteger v_expirationCounter := 1; + var template RequestPrimitive v_updateRequest := m_updateContainerBase; + + v_updateRequest.primitiveContent.any_1 := {{Container_update_invalid := m_contentUpdateContainer_invalid}}; - v_updateRequest.primitiveContent.any_1[0].Container_update.labels := v_labels_2; - - f_CSE_DMR_UPD_BV_002(int3, m_createContainerBase, v_updateRequest);//Container + v_updateRequest.primitiveContent.any_1[0].Container_update_invalid.expirationCounter := v_expirationCounter; + + f_CSE_DMR_UPD_BO_005(int3, m_createContainerBase, v_updateRequest);//Container } - testcase TC_CSE_DMR_UPD_BV_002_02() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_005_02() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_2 := {"VALUE_2"}; + var XSD.PositiveInteger v_expirationCounter := 1; var template RequestPrimitive v_updateRequest := m_updateGroupBase; - - v_updateRequest.primitiveContent.any_1[0].Group_update.labels := v_labels_2; - f_CSE_DMR_UPD_BV_002(int9, m_createGroupBase, v_updateRequest);//Group + v_updateRequest.primitiveContent.any_1 := {{Group_update_invalid := m_contentUpdateGroup_invalid}}; + + v_updateRequest.primitiveContent.any_1[0].Group_update_invalid.expirationCounter := v_expirationCounter; + + f_CSE_DMR_UPD_BO_005(int9, m_createGroupBase, v_updateRequest);//Group } - testcase TC_CSE_DMR_UPD_BV_002_03() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_005_03() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_2 := {"VALUE_2"}; + var XSD.PositiveInteger v_expirationCounter := 1; var template RequestPrimitive v_updateRequest := m_updateAcpBase; - - v_updateRequest.primitiveContent.any_1[0].ACP_update.labels := v_labels_2; - - f_CSE_DMR_UPD_BV_002(int1, m_createAcpBase,v_updateRequest);//AccessControlPolicy + + v_updateRequest.primitiveContent.any_1 := {{ACP_update_invalid := m_contentUpdateAcp_invalid}}; + + v_updateRequest.primitiveContent.any_1[0].ACP_update_invalid.expirationCounter := v_expirationCounter; + + f_CSE_DMR_UPD_BO_005(int1, m_createAcpBase, v_updateRequest);//AccessControlPolicy } - testcase TC_CSE_DMR_UPD_BV_002_04() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_005_04() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_2 := {"VALUE_2"}; + var XSD.PositiveInteger v_expirationCounter := 1; var template RequestPrimitive v_updateRequest := m_updateScheduleBase; - - v_updateRequest.primitiveContent.any_1[0].Schedule_update.labels := v_labels_2; - f_CSE_DMR_UPD_BV_002(int18, m_createScheduleBase,v_updateRequest);//Schedule + v_updateRequest.primitiveContent.any_1 := {{Schedule_update_invalid := m_contentUpdateSchedule_invalid}}; + + v_updateRequest.primitiveContent.any_1[0].Schedule_update_invalid.expirationCounter := v_expirationCounter; + + f_CSE_DMR_UPD_BO_005(int18, m_createScheduleBase, v_updateRequest);//Schedule } - testcase TC_CSE_DMR_UPD_BV_002_05() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_005_05() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_2 := {"VALUE_2"}; + var XSD.PositiveInteger v_expirationCounter := 1; var template RequestPrimitive v_updateRequest := m_updatePollingChannelBase; - v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.labels := v_labels_2; + v_updateRequest.primitiveContent.any_1 := {{PollingChannel_update_invalid := m_contentUpdatePollingChannel_invalid}}; - f_CSE_DMR_UPD_BV_002(int15, m_createPollingChannelBase,v_updateRequest);//PollingChannel + v_updateRequest.primitiveContent.any_1[0].PollingChannel_update_invalid.expirationCounter := v_expirationCounter; + + f_CSE_DMR_UPD_BO_005(int15, m_createPollingChannelBase, v_updateRequest);//PollingChannel } - testcase TC_CSE_DMR_UPD_BV_002_06() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_005_06() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_2 := {"VALUE_2"}; + var XSD.NonNegativeInteger v_maxNrOfInstances := 5; var template RequestPrimitive v_updateRequest := m_updateSubscriptionBase; - v_updateRequest.primitiveContent.any_1[0].Subscription_update.labels := v_labels_2; + v_updateRequest.primitiveContent.any_1 := {{Subscription_update_invalid := m_contentUpdateSubscription_invalid}}; - f_CSE_DMR_UPD_BV_002(int23, m_createSubscriptionBase,v_updateRequest);//Subscription + v_updateRequest.primitiveContent.any_1[0].Subscription_update_invalid.maxNrOfInstances := v_maxNrOfInstances; + + f_CSE_DMR_UPD_BO_005(int23, m_createSubscriptionBase, v_updateRequest);//Subscription } - function f_CSE_DMR_UPD_BV_002(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive) runs on M2M { + function f_CSE_DMR_UPD_BO_005(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive) runs on M2M { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; - var XSD.String v_aeResourceAddress := "/" & PX_CSE_NAME & "/" & v_aeName & "/" & c_defaultResourceName; - var XSD.String v_targetResourceAddress := "/" & PX_CSE_NAME & "/" & v_aeName & "/" & c_defaultResourceName; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName ; + var XSD.String v_targetResourceAddress := v_aeResourceAddress & "/" & c_defaultResourceName; // Test control @@ -1603,22 +3223,24 @@ module OneM2M_Testcases { // Preamble f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); - f_createResource(p_resourceType, v_aeResourceAddress, p_createRequestPrimitive); - + // Test Body v_request := f_getUpdateRequestPrimitive(p_resourceType, v_targetResourceAddress, p_updateRequestPrimitive); mcaPort.send(m_request(v_request)); tc_ac.start; alt { - [] mcaPort.receive(mw_responseOK) -> value v_response { + [] mcaPort.receive(mw_response(int4004)) -> value v_response { tc_ac.stop; - setverdict(pass, testcasename() & ": Attribute of resource type " & int2str(enum2int(p_resourceType)) & " updated successfuly"); - //TODO: Check that name attribute is provided + setverdict(pass, testcasename() & ": Resource " & c_defaultResourceName & " of type " & int2str(enum2int(p_resourceType)) & " not found"); } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while updating resource type " & int2str(enum2int(p_resourceType))); + setverdict(fail, testcasename() & ": Error while updating an unexisting resource type " & int2str(enum2int(p_resourceType))); + } + [] mcaPort.receive(mw_responseOK) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while updating an unexisting resource type " & int2str(enum2int(p_resourceType))); } [] tc_ac.timeout { setverdict(inconc, testcasename() & ": No answer while updating resource type " & int2str(enum2int(p_resourceType))); @@ -1628,99 +3250,83 @@ module OneM2M_Testcases { // Postamble f_postamble_deleteResources(v_aeName); - }//end f_CSE_DMR_UPD_BV_002 + }//end f_CSE_DMR_UPD_BO_005 - } // end g_CSE_DMR_UPD_BV_002 + } // end g_CSE_DMR_UPD_BO_005 - group g_CSE_DMR_UPD_BV_003 { + group g_CSE_DMR_UPD_BO_006{ - testcase TC_CSE_DMR_UPD_BV_003_01() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_006_01() runs on M2M system M2MSystem { // Local variables var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {""}; - var template RequestPrimitive v_createRequest := m_createContainerBase; var template RequestPrimitive v_updateRequest := m_updateContainerBase; + + v_updateRequest.primitiveContent.any_1[0].Container_update.labels := v_labels_1; - v_createRequest.primitiveContent.any_1[0].Container_create.labels := v_labels_1; - v_updateRequest.primitiveContent.any_1[0].Container_update.labels := v_labels_2; - - f_CSE_DMR_UPD_BV_003(int3, v_createRequest, v_updateRequest);//Container + f_CSE_DMR_UPD_BO_006(int3, m_createContainerBase, v_updateRequest);//Container } - testcase TC_CSE_DMR_UPD_BV_003_02() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_006_02() runs on M2M system M2MSystem { // Local variables var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {""}; - var template RequestPrimitive v_createRequest := m_createGroupBase; var template RequestPrimitive v_updateRequest := m_updateGroupBase; - v_createRequest.primitiveContent.any_1[0].Group_create.labels := v_labels_1; - v_updateRequest.primitiveContent.any_1[0].Group_update.labels := v_labels_2; + v_updateRequest.primitiveContent.any_1[0].Group_update.labels := v_labels_1; - f_CSE_DMR_UPD_BV_003(int9, v_createRequest, v_updateRequest);//Group + f_CSE_DMR_UPD_BO_006(int9, m_createGroupBase, v_updateRequest);//Group } - testcase TC_CSE_DMR_UPD_BV_003_03() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_006_03() runs on M2M system M2MSystem { // Local variables var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {""}; - var template RequestPrimitive v_createRequest := m_createAcpBase; var template RequestPrimitive v_updateRequest := m_updateAcpBase; + var template RequestPrimitive v_requestPrimitive := m_createAcpBase; + + v_requestPrimitive.primitiveContent.any_1[0].ACP_create.selfPrivileges.accessControlRule_list[0].accessControlOperations := int59; - v_createRequest.primitiveContent.any_1[0].ACP_create.labels := v_labels_1; - v_updateRequest.primitiveContent.any_1[0].ACP_update.labels := v_labels_2; - - f_CSE_DMR_UPD_BV_003(int1, v_createRequest, v_updateRequest);//AccessControlPolicy + v_updateRequest.primitiveContent.any_1[0].ACP_update.labels := v_labels_1; + + f_CSE_DMR_UPD_BO_006(int1, v_requestPrimitive, v_updateRequest);//AccessControlPolicy } - testcase TC_CSE_DMR_UPD_BV_003_04() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_006_04() runs on M2M system M2MSystem { // Local variables var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {""}; - var template RequestPrimitive v_createRequest := m_createScheduleBase; var template RequestPrimitive v_updateRequest := m_updateScheduleBase; - v_createRequest.primitiveContent.any_1[0].Schedule_create.labels := v_labels_1; - v_updateRequest.primitiveContent.any_1[0].Schedule_update.labels := v_labels_2; - - f_CSE_DMR_UPD_BV_003(int18, v_createRequest, v_updateRequest);//Schedule + v_updateRequest.primitiveContent.any_1[0].Schedule_update.labels := v_labels_1; + + f_CSE_DMR_UPD_BO_006(int18, m_createScheduleBase, v_updateRequest);//Schedule } - testcase TC_CSE_DMR_UPD_BV_003_05() runs on M2M system M2MSystem { - // Local variables + testcase TC_CSE_DMR_UPD_BO_006_05() runs on M2M system M2MSystem { + // Local variable var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {""}; - var template RequestPrimitive v_createRequest := m_createPollingChannelBase; var template RequestPrimitive v_updateRequest := m_updatePollingChannelBase; - v_createRequest.primitiveContent.any_1[0].PollingChannel_create.labels := v_labels_1; - v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.labels := v_labels_2; - - f_CSE_DMR_UPD_BV_003(int15, v_createRequest, v_updateRequest);//PollingChannel + v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.labels := v_labels_1; + + f_CSE_DMR_UPD_BO_006(int15, m_createPollingChannelBase, v_updateRequest);//PollingChannel } - testcase TC_CSE_DMR_UPD_BV_003_06() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_006_06() runs on M2M system M2MSystem { // Local variables var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {""}; - var template RequestPrimitive v_createRequest := m_createSubscriptionBase; var template RequestPrimitive v_updateRequest := m_updateSubscriptionBase; - v_createRequest.primitiveContent.any_1[0].Subscription_create.labels := v_labels_1; - v_updateRequest.primitiveContent.any_1[0].Subscription_update.labels := v_labels_2; - - f_CSE_DMR_UPD_BV_003(int23, v_createRequest, v_updateRequest);//Subscription + v_updateRequest.primitiveContent.any_1[0].Subscription_update.labels := v_labels_1; + + f_CSE_DMR_UPD_BO_006(int23, m_createSubscriptionBase, v_updateRequest);//Subscription } - function f_CSE_DMR_UPD_BV_003(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive) runs on M2M { + function f_CSE_DMR_UPD_BO_006(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive) runs on M2M { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; - var XSD.String v_aeResourceAddress := "/" & PX_CSE_NAME & "/" & v_aeName & "/" & c_defaultResourceName; - var XSD.String v_targetResourceAddress := "/" & PX_CSE_NAME & "/" & v_aeName & "/" & c_defaultResourceName; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName ; + var XSD.String v_targetResourceAddress := v_aeResourceAddress & "/" & c_defaultResourceName; // Test control @@ -1730,23 +3336,26 @@ module OneM2M_Testcases { // Test adapter configuration // Preamble - f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); + f_preamble_registerAe(v_aeName, int59);//c_CRDNDi); f_createResource(p_resourceType, v_aeResourceAddress, p_createRequestPrimitive); - + // Test Body v_request := f_getUpdateRequestPrimitive(p_resourceType, v_targetResourceAddress, p_updateRequestPrimitive); mcaPort.send(m_request(v_request)); tc_ac.start; alt { - [] mcaPort.receive(mw_responseOK) -> value v_response { + [] mcaPort.receive(mw_response(int4103)) -> value v_response { tc_ac.stop; - setverdict(pass, testcasename() & ": Attribute of resource type " & int2str(enum2int(p_resourceType)) & " updated successfuly"); - //TODO: Check that name attribute is provided + setverdict(pass, testcasename() & ": Access denied to update attributes from resource type " & int2str(enum2int(p_resourceType))); } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while updating resource type " & int2str(enum2int(p_resourceType))); + setverdict(fail, testcasename() & ": Error while updating attributes from resource without having privileges"); + } + [] mcaPort.receive(mw_responseOK) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Updating attributes from resource without having privileges"); } [] tc_ac.timeout { setverdict(inconc, testcasename() & ": No answer while updating resource type " & int2str(enum2int(p_resourceType))); @@ -1756,123 +3365,87 @@ module OneM2M_Testcases { // Postamble f_postamble_deleteResources(v_aeName); - }//end f_CSE_DMR_UPD_BV_003 + }//end f_CSE_DMR_UPD_BO_006 - } // end g_CSE_DMR_UPD_BV_003 + } // end g_CSE_DMR_UPD_BO_006 + - group g_CSE_DMR_UPD_BV_004 { + group g_CSE_DMR_UPD_BO_007{ - testcase TC_CSE_DMR_UPD_BV_004_01() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_007_01() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"VALUE_2"}; - var AcpType v_acp := {"ACP_ID"}; - var XSD.NonNegativeInteger v_maxNrOfInstances := 5; - var template RequestPrimitive v_createRequest := m_createContainerBase; + var Timestamp v_creationTime := "20001231T012345"; var template RequestPrimitive v_updateRequest := m_updateContainerBase; - v_createRequest.primitiveContent.any_1[0].Container_create.labels := v_labels_1; - v_createRequest.primitiveContent.any_1[0].Container_create.maxNrOfInstances := v_maxNrOfInstances; - v_updateRequest.primitiveContent.any_1[0].Container_update.labels := v_labels_2; - v_updateRequest.primitiveContent.any_1[0].Container_update.maxNrOfInstances := 0;//TODO - v_updateRequest.primitiveContent.any_1[0].Container_update.accessControlPolicyIDs := v_acp; - - f_CSE_DMR_UPD_BV_004(int3, v_createRequest, v_updateRequest);//Container + v_updateRequest.primitiveContent.any_1 := {{Container_update_invalid := m_contentUpdateContainer_invalid}}; + v_updateRequest.primitiveContent.any_1[0].Container_update_invalid.creationTime := v_creationTime; + + f_CSE_DMR_UPD_BO_007(int3, m_createContainerBase, v_updateRequest);//Container } - testcase TC_CSE_DMR_UPD_BV_004_02() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_007_02() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"VALUE_2"}; - var AcpType v_acp := {"ACP_ID"}; - var XSD.String v_groupName := "MyGroupName"; - var template RequestPrimitive v_createRequest := m_createGroupBase; + var Timestamp v_creationTime := "20001231T012345"; var template RequestPrimitive v_updateRequest := m_updateGroupBase; - v_createRequest.primitiveContent.any_1[0].Group_create.labels := v_labels_1; - v_createRequest.primitiveContent.any_1[0].Group_create.groupName := "MyGroupName"; - v_updateRequest.primitiveContent.any_1[0].Group_update.labels := v_labels_2; - v_updateRequest.primitiveContent.any_1[0].Group_update.groupName:= "";//TODO Set to NULL - v_updateRequest.primitiveContent.any_1[0].Group_update.accessControlPolicyIDs := v_acp; - - f_CSE_DMR_UPD_BV_004(int9, v_createRequest, v_updateRequest);//Group + v_updateRequest.primitiveContent.any_1 := {{Group_update_invalid := m_contentUpdateGroup_invalid}}; + v_updateRequest.primitiveContent.any_1[0].Group_update_invalid.creationTime := v_creationTime; + + f_CSE_DMR_UPD_BO_007(int9, m_createGroupBase, v_updateRequest);//Group } - testcase TC_CSE_DMR_UPD_BV_004_03() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_007_03() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"NULL"}; - var template RequestPrimitive v_createRequest := m_createAcpBase; + var Timestamp v_creationTime := "20001231T012345"; var template RequestPrimitive v_updateRequest := m_updateAcpBase; - v_createRequest.primitiveContent.any_1[0].ACP_create.labels := v_labels_1; - //v_createRequest.content.any_1[0].ACP_create.groupName := "MyGroupName";TODO Need to find Attribute 2 - v_updateRequest.primitiveContent.any_1[0].ACP_update.labels := v_labels_2; - //v_updateRequest.content.any_1[0].ACP_update.groupName:= "";//TODO Set to NULL - //v_updateRequest.content.any_1[0].ACP_update.accessControlPolicyIDs := v_acp; TODO Need to find Attribute 3 - - f_CSE_DMR_UPD_BV_004(int1, v_createRequest, v_updateRequest);//AccessControlPolicy + v_updateRequest.primitiveContent.any_1 := {{ACP_update_invalid := m_contentUpdateAcp_invalid}}; + v_updateRequest.primitiveContent.any_1[0].ACP_update_invalid.creationTime := v_creationTime; + + f_CSE_DMR_UPD_BO_007(int1, m_createAcpBase, v_updateRequest);//AccessControlPolicy } - testcase TC_CSE_DMR_UPD_BV_004_04() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_007_04() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"NULL"}; - var template RequestPrimitive v_createRequest := m_createScheduleBase; + var Timestamp v_creationTime := "20001231T012345"; var template RequestPrimitive v_updateRequest := m_updateScheduleBase; - v_createRequest.primitiveContent.any_1[0].Schedule_create.labels := v_labels_1; - //v_createRequest.content.any_1[0].Schedule_create.groupName := "MyGroupName";TODO Need to find Attribute 2 - v_updateRequest.primitiveContent.any_1[0].Schedule_update.labels := v_labels_2; - //v_updateRequest.content.any_1[0].Schedule_update.groupName:= "";//TODO Set to NULL - //v_updateRequest.content.any_1[0].Schedule_update.accessControlPolicyIDs := v_acp; TODO Need to find Attribute 3 - - f_CSE_DMR_UPD_BV_004(int18, v_createRequest, v_updateRequest);//Schedule + v_updateRequest.primitiveContent.any_1 := {{Schedule_update_invalid := m_contentUpdateSchedule_invalid}}; + v_updateRequest.primitiveContent.any_1[0].Schedule_update_invalid.creationTime := v_creationTime; + + f_CSE_DMR_UPD_BO_007(int18, m_createScheduleBase, v_updateRequest);//Schedule } - testcase TC_CSE_DMR_UPD_BV_004_05() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_007_05() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"NULL"}; - var AcpType v_acp := {"ACP_ID"}; - var template RequestPrimitive v_createRequest := m_createPollingChannelBase; + var Timestamp v_creationTime := "20001231T012345"; var template RequestPrimitive v_updateRequest := m_updatePollingChannelBase; - v_createRequest.primitiveContent.any_1[0].PollingChannel_create.labels := v_labels_1; - //v_createRequest.content.any_1[0].PollingChannel_create.groupName := "MyGroupName";TODO Need to find Attribute 2 - v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.labels := v_labels_2; - //v_updateRequest.content.any_1[0].PollingChannel_update.groupName:= "";//TODO Set to NULL - v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.accessControlPolicyIDs := v_acp; - - f_CSE_DMR_UPD_BV_004(int15, v_createRequest, v_updateRequest);//PollingChannel + v_updateRequest.primitiveContent.any_1 := {{PollingChannel_update_invalid := m_contentUpdatePollingChannel_invalid}}; + v_updateRequest.primitiveContent.any_1[0].PollingChannel_update_invalid.creationTime := v_creationTime; + + f_CSE_DMR_UPD_BO_007(int15, m_createPollingChannelBase, v_updateRequest);//PollingChannel } - testcase TC_CSE_DMR_UPD_BV_004_06() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_007_06() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"NULL"}; - var AcpType v_acp := {"ACP_ID"}; - var template RequestPrimitive v_createRequest := m_createSubscriptionBase; + var Timestamp v_creationTime := "20001231T012345"; var template RequestPrimitive v_updateRequest := m_updateSubscriptionBase; - v_createRequest.primitiveContent.any_1[0].Subscription_create.labels := v_labels_1; - v_createRequest.primitiveContent.any_1[0].Subscription_create.expirationCounter := 5; - v_updateRequest.primitiveContent.any_1[0].Subscription_update.labels := v_labels_2; - v_updateRequest.primitiveContent.any_1[0].Subscription_update.expirationCounter := 1;//TODO Set to NULL - v_updateRequest.primitiveContent.any_1[0].Subscription_update.accessControlPolicyIDs := v_acp; - - f_CSE_DMR_UPD_BV_004(int23, v_createRequest, v_updateRequest);//Subscription + v_updateRequest.primitiveContent.any_1 := {{Subscription_update_invalid := m_contentUpdateSubscription_invalid}}; + v_updateRequest.primitiveContent.any_1[0].Subscription_update_invalid.creationTime := v_creationTime; + + f_CSE_DMR_UPD_BO_007(int23, m_createSubscriptionBase, v_updateRequest);//Subscription } - function f_CSE_DMR_UPD_BV_004(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive) runs on M2M { + function f_CSE_DMR_UPD_BO_007(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive) runs on M2M { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; var XSD.String v_aeName := "ae_test"; - var XSD.String v_aeResourceAddress := "/" & PX_CSE_NAME & "/" & v_aeName ; - var XSD.String v_targetResourceAddress := "/" & PX_CSE_NAME & "/" & v_aeName & "/" & c_defaultResourceName; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName ; + var XSD.String v_targetResourceAddress := v_aeResourceAddress & "/" & c_defaultResourceName; // Test control @@ -1884,21 +3457,24 @@ module OneM2M_Testcases { // Preamble f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); f_createResource(p_resourceType, v_aeResourceAddress, p_createRequestPrimitive); - + // Test Body v_request := f_getUpdateRequestPrimitive(p_resourceType, v_targetResourceAddress, p_updateRequestPrimitive); mcaPort.send(m_request(v_request)); tc_ac.start; alt { - [] mcaPort.receive(mw_responseOK) -> value v_response { + [] mcaPort.receive(mw_response(int4005)) -> value v_response { tc_ac.stop; - setverdict(pass, testcasename() & ": Attribute of resource type " & int2str(enum2int(p_resourceType)) & " updated successfuly"); - //TODO: Check that name attribute is provided + setverdict(pass, testcasename() & ": Operation not allowed. RO attribute from resource type " & int2str(enum2int(p_resourceType)) ); } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while updating resource type " & int2str(enum2int(p_resourceType))); + setverdict(fail, testcasename() & ": Error while updating RO attribute"); + } + [] mcaPort.receive(mw_responseOK) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Updating RO attribute from resource"); } [] tc_ac.timeout { setverdict(inconc, testcasename() & ": No answer while updating resource type " & int2str(enum2int(p_resourceType))); @@ -1908,124 +3484,98 @@ module OneM2M_Testcases { // Postamble f_postamble_deleteResources(v_aeName); - }//end f_CSE_DMR_UPD_BV_004 + }//end f_CSE_DMR_UPD_BO_007 - } // end g_CSE_DMR_UPD_BV_004 + } // end g_CSE_DMR_UPD_BO_007 - group g_CSE_DMR_UPD_BO_005{ + group g_CSE_DMR_UPD_BO_008{ - testcase TC_CSE_DMR_UPD_BV_005_01() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_008_01() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"VALUE_2"}; - var AcpType v_acp := {"ACP_ID"}; - var XSD.NonNegativeInteger v_maxNrOfInstances := 5; - var template RequestPrimitive v_createRequest := m_createContainerBase; + var Timestamp v_expirationTime := "20001231T012345"; var template RequestPrimitive v_updateRequest := m_updateContainerBase; + var AttributeList_1 v_nullFields; + + v_nullFields := {"expirationTime"}; - v_createRequest.primitiveContent.any_1[0].Container_create.labels := v_labels_1; - v_createRequest.primitiveContent.any_1[0].Container_create.maxNrOfInstances := v_maxNrOfInstances; - v_updateRequest.primitiveContent.any_1[0].Container_update.labels := v_labels_2; - v_updateRequest.primitiveContent.any_1[0].Container_update.maxNrOfInstances := 0;//TODO - v_updateRequest.primitiveContent.any_1[0].Container_update.accessControlPolicyIDs := v_acp; - - f_CSE_DMR_UPD_BO_005(int3, v_createRequest, v_updateRequest);//Container + v_updateRequest.primitiveContent.any_1[0].Container_update.expirationTime := v_expirationTime; + + f_CSE_DMR_UPD_BO_008(int3, m_createContainerBase, v_updateRequest, v_nullFields);//Container } - testcase TC_CSE_DMR_UPD_BV_005_02() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_008_02() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"VALUE_2"}; - var AcpType v_acp := {"ACP_ID"}; - var XSD.String v_groupName := "MyGroupName"; - var template RequestPrimitive v_createRequest := m_createGroupBase; + var Timestamp v_expirationTime := "20001231T012345"; var template RequestPrimitive v_updateRequest := m_updateGroupBase; + var AttributeList_1 v_nullFields; - v_createRequest.primitiveContent.any_1[0].Group_create.labels := v_labels_1; - v_createRequest.primitiveContent.any_1[0].Group_create.groupName := "MyGroupName"; - v_updateRequest.primitiveContent.any_1[0].Group_update.labels := v_labels_2; - v_updateRequest.primitiveContent.any_1[0].Group_update.groupName:= "";//TODO Set to NULL - v_updateRequest.primitiveContent.any_1[0].Group_update.accessControlPolicyIDs := v_acp; - - f_CSE_DMR_UPD_BO_005(int9, v_createRequest, v_updateRequest);//Group + v_nullFields := {"expirationTime"}; + + v_updateRequest.primitiveContent.any_1[0].Group_update.expirationTime := v_expirationTime; + + f_CSE_DMR_UPD_BO_008(int9, m_createGroupBase, v_updateRequest, v_nullFields);//Group } - testcase TC_CSE_DMR_UPD_BV_005_03() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_008_03() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"NULL"}; - var template RequestPrimitive v_createRequest := m_createAcpBase; + var Timestamp v_expirationTime := "20001231T012345"; var template RequestPrimitive v_updateRequest := m_updateAcpBase; + var AttributeList_1 v_nullFields; - v_createRequest.primitiveContent.any_1[0].ACP_create.labels := v_labels_1; - //v_createRequest.content.any_1[0].ACP_create.groupName := "MyGroupName";TODO Need to find Attribute 2 - v_updateRequest.primitiveContent.any_1[0].ACP_update.labels := v_labels_2; - //v_updateRequest.content.any_1[0].ACP_update.groupName:= "";//TODO Set to NULL - //v_updateRequest.content.any_1[0].ACP_update.accessControlPolicyIDs := v_acp; TODO Need to find Attribute 3 - - f_CSE_DMR_UPD_BO_005(int1, v_createRequest, v_updateRequest);//AccessControlPolicy + v_nullFields := {"expirationTime"}; + + v_updateRequest.primitiveContent.any_1[0].ACP_update.expirationTime := v_expirationTime; + + f_CSE_DMR_UPD_BO_008(int1, m_createAcpBase, v_updateRequest, v_nullFields);//AccessControlPolicy } - testcase TC_CSE_DMR_UPD_BV_005_04() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_008_04() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"NULL"}; - var template RequestPrimitive v_createRequest := m_createScheduleBase; + var Timestamp v_expirationTime := "20001231T012345"; var template RequestPrimitive v_updateRequest := m_updateScheduleBase; + var AttributeList_1 v_nullFields; - v_createRequest.primitiveContent.any_1[0].Schedule_create.labels := v_labels_1; - //v_createRequest.content.any_1[0].Schedule_create.groupName := "MyGroupName";TODO Need to find Attribute 2 - v_updateRequest.primitiveContent.any_1[0].Schedule_update.labels := v_labels_2; - //v_updateRequest.content.any_1[0].Schedule_update.groupName:= "";//TODO Set to NULL - //v_updateRequest.content.any_1[0].Schedule_update.accessControlPolicyIDs := v_acp; TODO Need to find Attribute 3 - - f_CSE_DMR_UPD_BO_005(int18, v_createRequest, v_updateRequest);//Schedule + v_nullFields := {"expirationTime"}; + + v_updateRequest.primitiveContent.any_1[0].Schedule_update.expirationTime := v_expirationTime; + + f_CSE_DMR_UPD_BO_008(int18, m_createScheduleBase, v_updateRequest, v_nullFields);//Schedule } - testcase TC_CSE_DMR_UPD_BV_005_05() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_008_05() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"NULL"}; - var AcpType v_acp := {"ACP_ID"}; - var template RequestPrimitive v_createRequest := m_createPollingChannelBase; + var Timestamp v_expirationTime := "20001231T012345"; var template RequestPrimitive v_updateRequest := m_updatePollingChannelBase; + var AttributeList_1 v_nullFields; - v_createRequest.primitiveContent.any_1[0].PollingChannel_create.labels := v_labels_1; - //v_createRequest.content.any_1[0].PollingChannel_create.groupName := "MyGroupName";TODO Need to find Attribute 2 - v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.labels := v_labels_2; - //v_updateRequest.content.any_1[0].PollingChannel_update.groupName:= "";//TODO Set to NULL - v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.accessControlPolicyIDs := v_acp; - - f_CSE_DMR_UPD_BO_005(int15, v_createRequest, v_updateRequest);//PollingChannel + v_nullFields := {"expirationTime"}; + + v_updateRequest.primitiveContent.any_1[0].PollingChannel_update.expirationTime := v_expirationTime; + + f_CSE_DMR_UPD_BO_008(int15, m_createPollingChannelBase, v_updateRequest, v_nullFields);//PollingChannel } - testcase TC_CSE_DMR_UPD_BV_005_06() runs on M2M system M2MSystem { + testcase TC_CSE_DMR_UPD_BO_008_06() runs on M2M system M2MSystem { // Local variables - var Labels v_labels_1 := {"VALUE_1"}; - var Labels v_labels_2 := {"NULL"}; - var AcpType v_acp := {"ACP_ID"}; - var template RequestPrimitive v_createRequest := m_createSubscriptionBase; + var Timestamp v_expirationTime := "20001231T012345"; var template RequestPrimitive v_updateRequest := m_updateSubscriptionBase; + var AttributeList_1 v_nullFields; - v_createRequest.primitiveContent.any_1[0].Subscription_create.labels := v_labels_1; - v_createRequest.primitiveContent.any_1[0].Subscription_create.expirationCounter := 5; - v_updateRequest.primitiveContent.any_1[0].Subscription_update.labels := v_labels_2; - v_updateRequest.primitiveContent.any_1[0].Subscription_update.expirationCounter := 1;//TODO Set to NULL - v_updateRequest.primitiveContent.any_1[0].Subscription_update.accessControlPolicyIDs := v_acp; - - f_CSE_DMR_UPD_BO_005(int23, v_createRequest, v_updateRequest);//Subscription + v_nullFields := {"expirationTime"}; + + v_updateRequest.primitiveContent.any_1[0].Subscription_update.expirationTime := v_expirationTime; + + f_CSE_DMR_UPD_BO_008(int23, m_createSubscriptionBase, v_updateRequest, v_nullFields);//Subscription } - function f_CSE_DMR_UPD_BO_005(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive) runs on M2M { + function f_CSE_DMR_UPD_BO_008(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive, template (omit) AttributeList_1 p_nullFields := omit) runs on M2M { // Local variables var M2MResponsePrimitive v_response; var RequestPrimitive v_request; - var XSD.ID v_resourceId_content; - var XSD.String v_resourceName := "myResource"; var XSD.String v_aeName := "ae_test"; - var XSD.String v_aeResourceAddress := "/" & PX_CSE_NAME & "/" & v_aeName ; - var XSD.String v_targetResourceAddress := "/" & PX_CSE_NAME & "/" & v_aeName & "/" & v_resourceName; + var XSD.String v_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & v_aeName ; + var XSD.String v_targetResourceAddress := v_aeResourceAddress & "/" & c_defaultResourceName; // Test control @@ -2037,21 +3587,24 @@ module OneM2M_Testcases { // Preamble f_preamble_registerAe(v_aeName, int63);//c_CRUDNDi); f_createResource(p_resourceType, v_aeResourceAddress, p_createRequestPrimitive); - + // Test Body v_request := f_getUpdateRequestPrimitive(p_resourceType, v_targetResourceAddress, p_updateRequestPrimitive); - mcaPort.send(m_request(v_request)); + mcaPort.send(m_request(v_request,p_nullFields)); tc_ac.start; alt { - [] mcaPort.receive(mw_responseOK) -> value v_response { + [] mcaPort.receive(mw_response(int4005)) -> value v_response { tc_ac.stop; - setverdict(pass, testcasename() & ": Attribute of resource type " & int2str(enum2int(p_resourceType)) & " updated successfuly"); - //TODO: Check that name attribute is provided + setverdict(pass, testcasename() & ": Operation not allowed. Mandatory RW attribute from resource type " & int2str(enum2int(p_resourceType)) ); } - [] mcaPort.receive(mw_responseKO) { + [] mcaPort.receive(mw_responseKO) -> value v_response { tc_ac.stop; - setverdict(fail, testcasename() & ": Error while updating resource type " & int2str(enum2int(p_resourceType))); + setverdict(fail, testcasename() & ": Error while deleting mandatory RW attribute"); + } + [] mcaPort.receive(mw_responseOK) { + tc_ac.stop; + setverdict(fail, testcasename() & ": Deleting a mandatory RW attribute from resource"); } [] tc_ac.timeout { setverdict(inconc, testcasename() & ": No answer while updating resource type " & int2str(enum2int(p_resourceType))); @@ -2061,10 +3614,10 @@ module OneM2M_Testcases { // Postamble f_postamble_deleteResources(v_aeName); - }//end f_CSE_DMR_UPD_BO_005 + }//end f_CSE_DMR_UPD_BO_008 - } // end g_CSE_DMR_UPD_BO_005 - + } // end g_CSE_DMR_UPD_BO_008 + }//end group Update }//end group Data_Management_and_Repository diff --git a/OneM2M_Types.ttcn b/OneM2M_Types.ttcn index 4c3b60ecc3d070b48174b9063f4c81888509ea80..8f8056ec61bef62bf33a314d4318a466c0cc57b2 100644 --- a/OneM2M_Types.ttcn +++ b/OneM2M_Types.ttcn @@ -7,7 +7,7 @@ * * @author ETSI * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/OneM2M_Types.ttcn $ - * $Id: OneM2M_Types.ttcn 43 2016-04-13 12:16:12Z reinaortega $ + * $Id: OneM2M_Types.ttcn 69 2016-04-28 07:49:58Z reinaortega $ * @desc Test System module for oneM2M * */ @@ -877,7 +877,6 @@ module OneM2M_Types { variant "name as uncapitalized"; }; - type union AbsRelTimestamp { Timestamp alt_, @@ -972,7 +971,7 @@ module OneM2M_Types { }; - type XSD.String ScheduleEntry (pattern "(([*]|[1-5]#(0,1)\d([,\-][1-5]#(0,1)\d)*)[\q{0,0,0,20}\q{0,0,0,10}\t\r]+)#(2)([*]|((1#(0,1)\d|2[0-3])([,\-](1#(0,1)\d|2[0-3]))*))[\q{0,0,0,20}\q{0,0,0,10}\t\r]+([*]|(([1-9]|1\d|2\d|3[01])([,\-]([1-9]|1\d|2\d|3[01]))*))[\q{0,0,0,20}\q{0,0,0,10}\t\r]+([*]|(([1-9]|1[0-2])([,\-]([1-9]|1[0-2]))*))[\q{0,0,0,20}\q{0,0,0,10}\t\r]+([*]|([0-6]([,\-][0-6])*))") + type XSD.String ScheduleEntry //FIXME To be added (pattern "(([*]|[1-5]#(0,1)\d([,\-][1-5]#(0,1)\d)*)[\q{0,0,0,20}\q{0,0,0,10}\t\r]+)#(2)([*]|((1#(0,1)\d|2[0-3])([,\-](1#(0,1)\d|2[0-3]))*))[\q{0,0,0,20}\q{0,0,0,10}\t\r]+([*]|(([1-9]|1\d|2\d|3[01])([,\-]([1-9]|1\d|2\d|3[01]))*))[\q{0,0,0,20}\q{0,0,0,10}\t\r]+([*]|(([1-9]|1[0-2])([,\-]([1-9]|1[0-2]))*))[\q{0,0,0,20}\q{0,0,0,10}\t\r]+([*]|([0-6]([,\-][0-6])*))") with { variant "name as uncapitalized"; }; @@ -4016,6 +4015,9 @@ group contentCreateTypes { XSD.AnyURI ontologyRef optional, XSD.Boolean requestReachability } + with { + variant (resourceName) "attribute"; + }; type record ACP_create { XSD.NCName resourceName optional, @@ -4026,6 +4028,9 @@ group contentCreateTypes { SetOfAcrs privileges, SetOfAcrs selfPrivileges } + with { + variant (resourceName) "attribute"; + }; type record ContentInstance_create { XSD.NCName resourceName optional, @@ -4036,6 +4041,9 @@ group contentCreateTypes { XSD.AnyURI ontologyRef optional, XSD.AnyType content_ } + with { + variant (resourceName) "attribute"; + }; type record Container_create { XSD.NCName resourceName optional, @@ -4051,6 +4059,9 @@ group contentCreateTypes { XSD.AnyURI locationID optional, XSD.AnyURI ontologyRef optional } + with { + variant (resourceName) "attribute"; + }; type record Group_create { XSD.NCName resourceName optional, @@ -4067,6 +4078,9 @@ group contentCreateTypes { ConsistencyStrategy consistencyStrategy optional, XSD.String groupName optional } + with { + variant (resourceName) "attribute"; + }; type record PollingChannel_create { XSD.NCName resourceName optional, @@ -4075,6 +4089,9 @@ group contentCreateTypes { Timestamp expirationTime optional, XSD.AnyURI pollingChannelURI optional //TODO: To be double checked } + with { + variant (resourceName) "attribute"; + }; type record Schedule_create { XSD.NCName resourceName optional, @@ -4084,6 +4101,9 @@ group contentCreateTypes { record of XSD.Token announcedAttribute optional, ScheduleEntries scheduleElement } + with { + variant (resourceName) "attribute"; + }; type record Subscription_create { XSD.NCName resourceName optional, @@ -4106,6 +4126,9 @@ group contentCreateTypes { XSD.ID creator optional, XSD.AnyURI subscriberURI optional } + with { + variant (resourceName) "attribute"; + }; //End Partial content for creation }//end group contentCreateTypes @@ -4201,17 +4224,127 @@ group contentUpdateTypes { NotificationContentType notificationContentType optional, EventCat notificationEventCat optional } + + type record AE_update_invalid { + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp creationTime optional,//Invalid field to be used for BI tests + Timestamp expirationTime optional, + ListOfURIs announceTo optional, + record of XSD.Token announcedAttribute optional, + XSD.String appName optional, + PoaList pointOfAccess optional, + XSD.AnyURI ontologyRef optional, + XSD.Boolean requestReachability optional + }; + + type record ACP_update_invalid { + Labels labels optional, + Timestamp expirationTime optional, + Timestamp creationTime optional,//Invalid field to be used for BI tests + XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for ACP + ListOfURIs announceTo optional, + record of XSD.Token announcedAttribute optional, + SetOfAcrs privileges optional, + SetOfAcrs selfPrivileges optional + } + + + type record Container_update_invalid { + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp creationTime optional,//Invalid field to be used for BI tests (RO attributes) + XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for Container + Timestamp expirationTime optional, + ListOfURIs announceTo optional, + record of XSD.Token announcedAttribute optional, + XSD.NonNegativeInteger maxNrOfInstances optional, + XSD.NonNegativeInteger maxByteSize optional, + XSD.NonNegativeInteger maxInstanceAge optional, + XSD.AnyURI locationID optional, + XSD.AnyURI ontologyRef optional + } + + //TODO To double check + type record ContentInstance_update_invalid { + Labels labels optional, + Timestamp creationTime optional,//Invalid field to be used for BI tests + ListOfURIs announceTo optional, + ContentInfo contentInfo optional, + XSD.NonNegativeInteger contentSize optional, + XSD.AnyURI ontologyRef optional, + XSD.AnyType content_ optional + } + + type record Group_update_invalid { + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp creationTime optional,//Invalid field to be used for BI tests + XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for Group + Timestamp expirationTime optional, + ListOfURIs announceTo optional, + record of XSD.Token announcedAttribute optional, + XSD.NonNegativeInteger maxNrOfMembers optional, + ListOfURIs memberIDs optional, + ListOfURIs membersAccessControlPolicyIDs optional, + XSD.String groupName optional + } + + type record PollingChannel_update_invalid { + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp creationTime optional,//Invalid field to be used for BI tests + XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for PollingChannel + Timestamp expirationTime optional, + XSD.AnyURI pollingChannelURI optional //TODO: To be double checked + } + + type record Schedule_update_invalid { + Labels labels optional, + Timestamp creationTime optional,//Invalid field to be used for BI tests + XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for Schedule + Timestamp expirationTime optional, + ListOfURIs announceTo optional, + record of XSD.Token announcedAttribute optional, + ScheduleEntries scheduleElement optional + } + + type record Subscription_update_invalid { + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp creationTime optional,//Invalid field to be used for BI tests + XSD.NonNegativeInteger maxNrOfInstances optional,//Invalid field, non existing for Subscription + Timestamp expirationTime optional, + EventNotificationCriteria eventNotificationCriteria optional, + XSD.PositiveInteger expirationCounter optional, + ListOfURIs notificationURI optional, + XSD.AnyURI groupID optional, + XSD.AnyURI notificationForwardingURI optional, + BatchNotify batchNotify optional, + RateLimit rateLimit optional, + PendingNotification pendingNotification optional, + XSD.PositiveInteger notificationStoragePriority optional, + XSD.Boolean latestNotify optional, + NotificationContentType notificationContentType optional, + EventCat notificationEventCat optional + } //End Partial content for update }//end group contentUpdateTypes -type NhURI ParentID; + group otherTypes { + + type NhURI ParentID; + + //FIXME Must match the type of the response content when retrieving specific attributes + type record of Attribute MyAttributeList; + } } with { encode "XML"; variant "namespace as 'http://www.onem2m.org/xml/protocols' prefix 'm2m'"; variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; - extension "anytype AttributeList, AE, AccessControlPolicy, ACP_create, ACP_update, AE_create, AE_update, Container_create, Container_update, ContentInstance_create, ContentInstance_update, Group_create, Group_update, Schedule_create, Schedule_update, Subscription_create, Subscription_update, PollingChannel_create, PollingChannel_update" + extension "anytype AttributeList, AE, AccessControlPolicy, ACP_create, ACP_update, ACP_update_invalid, AE_create, AE_update_invalid, AE_update_invalid,Container_create, Container_update, Container_update_invalid, ContentInstance_create, ContentInstance_update, ContentInstance_update_invalid, Group_create, Group_update, Group_update_invalid, Schedule_create, Schedule_update, Schedule_update_invalid, Subscription_create, Subscription_update, Subscription_update_invalid, PollingChannel_create, PollingChannel_update, PollingChannel_update_invalid" } diff --git a/OneM2M_TypesAndValues.ttcn b/OneM2M_TypesAndValues.ttcn index dabdc3432e71ba5da40c21770546040b7e6f4c3b..7eaeeae84d199f65bd21c2eb387a03619edaa571 100644 --- a/OneM2M_TypesAndValues.ttcn +++ b/OneM2M_TypesAndValues.ttcn @@ -7,7 +7,7 @@ * * @author ETSI * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/OneM2M_TypesAndValues.ttcn $ - * $Id: OneM2M_TypesAndValues.ttcn 43 2016-04-13 12:16:12Z reinaortega $ + * $Id: OneM2M_TypesAndValues.ttcn 69 2016-04-28 07:49:58Z reinaortega $ * @desc Module containing types and values for oneM2M * */ @@ -19,7 +19,8 @@ module OneM2M_TypesAndValues { /* Constants */ const charstring c_uri_cse := "/~/in-cse/"; const charstring c_cse_name := "in-cse"; - const XSD.String c_defaultResourceName; + const XSD.String c_defaultResourceName := "MyResource"; + const XSD.String c_acpAuxName := "MyAcp"; //AccessControlOperations const XSD.Integer c_C := 1;