diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index ea652b02fa47aaf64b08d91c8a2330d0b8261672..5dc72514277380b6ce5936e8211efe7d27775067 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -88,6 +88,9 @@ module OneM2M_Functions { // Map map(self:mcaPort, system:mcaPort); map(self:acPort, system:acPort); + if(PX_UT_IMPLEMENTED) { + map(self:utPort, system:utPort); + } activate(a_default()); activate(a_cse_cf02_ae1()); vc_cse1.start(f_cf02UpCse1()); @@ -263,6 +266,9 @@ module OneM2M_Functions { unmap(self:mcaPort, system:mcaPort); unmap(self:acPort, system:acPort); + if(PX_UT_IMPLEMENTED){ + unmap(self:utPort, system:utPort); + } unmap(vc_cse1:mccPort, system:mccPort); unmap(vc_cse1:mccPortIn, system:mccPortIn); unmap(vc_cse1:acPort, system:acPort); @@ -1170,25 +1176,28 @@ module OneM2M_Functions { * @verdict */ //TODO To finalize this function - function f_cse_resourceAnnouncementHandler(template XSD.ID p_from := *, template XSD.ID p_to := ?) runs on CseSimu { + function f_cse_resourceAnnouncementHandler(template RequestPrimitive p_requestprimitive := ?) runs on CseSimu { // Local variables var MsgIn v_request; + var integer v_parentIndex := vc_localRemoteCseIndex; + var integer v_announcedResourceIndex; var ResponsePrimitive v_responsePrimitive; + var PrimitiveContent v_announcedResource; tc_ac.start; alt { - [] mccPortIn.receive(mw_request(mw_create(p_from, p_to))) -> value v_request { + [] mccPortIn.receive(mw_request(p_requestprimitive)) -> value v_request { tc_ac.stop; setverdict(pass, __SCOPE__ & ":INFO: Announcement received"); //TODO Save resource and generate required attributes - v_responsePrimitive := f_getCreateResponsePrimitive(v_request.primitive.requestPrimitive.resourceType, v_request.primitive.requestPrimitive); - mccPortIn.send(m_response(v_responsePrimitive)); - f_checkAttributesToBeSaved(v_request.primitive.requestPrimitive.resourceType, v_request.primitive.requestPrimitive, vc_response.primitive.responsePrimitive); - f_setResource(vc_response.primitive.responsePrimitive.primitiveContent, v_request.primitive.requestPrimitive.resourceType, vc_remoteCseIndex); - } - [] mccPortIn.receive{ - tc_ac.stop; - setverdict(fail, __SCOPE__ & ":ERROR: Unexpected message received"); + v_announcedResource:= f_cse_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, v_parentIndex,v_request.primitive.requestPrimitive.resourceType); + v_announcedResourceIndex := f_setLocalResource(v_announcedResource, v_request.primitive.requestPrimitive.resourceType, v_parentIndex); + + v_responsePrimitive := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier)); + v_responsePrimitive.from_ := PX_CSE1_ID; + v_responsePrimitive.to_ := v_request.primitive.requestPrimitive.from_; + v_responsePrimitive.primitiveContent := vc_localResourcesList[vc_localRemoteCseIndex].resource; + mccPortIn.send(m_response(v_responsePrimitive)); } [] tc_ac.timeout { setverdict(fail, __SCOPE__ & ":ERROR: No announcement received"); @@ -1802,6 +1811,13 @@ module OneM2M_Functions { var integer v_resourceIndex := -1; var template UtTriggerPrimitive v_utRequest := m_utCreateRemoteCSE; var charstring v_action := "Please, send a CSE registration request"; + var integer v_parentIndex := vc_localRemoteCseIndex; + var ResponsePrimitive v_responsePrimitive; + var PrimitiveContent v_announcedResource; + var boolean v_remoteCSERegistered:=false; + var integer v_ResourceIndex := -1; + + //send triggering primitive to SUT f_sendUtPrimitive(v_utRequest,v_action); @@ -1821,11 +1837,16 @@ module OneM2M_Functions { mccPortIn.send(m_response(v_response)); v_resourceIndex := f_setResource(valueof(m_primitiveContentRemoteCSE(m_contentMyRemoteCSEResource)), int16, -1); + v_remoteCSERegistered:=true; + tc_ac.start; + repeat; } [] tc_ac.timeout { + if(not (v_remoteCSERegistered)){ setverdict(inconc, __SCOPE__&":INFO: No request received for creating resource type remoteCSE"); } - } + } + } f_checkCseSimuStatus(); @@ -1842,11 +1863,15 @@ module OneM2M_Functions { */ function f_cse_receiveCreateRequest(in template RequestPrimitive p_requestPrimitive := ?) runs on CseSimu { + var ResponsePrimitive v_responsePrimitive; tc_ac.start; alt { [] mccPortIn.receive(mw_request(p_requestPrimitive)) -> value vc_request { tc_ac.stop; setverdict(pass, __SCOPE__&":INFO: CREATE Request received successfuly"); + v_responsePrimitive := f_getCreateResponsePrimitive(vc_request.primitive.requestPrimitive.resourceType, vc_request.primitive.requestPrimitive); + v_responsePrimitive.responseStatusCode := int2001; + mccPortIn.send(m_response(v_responsePrimitive)); } [] mccPortIn.receive(mw_request(?)) { tc_ac.stop; @@ -1879,9 +1904,9 @@ module OneM2M_Functions { // TODO To review the code (use of indexes, generation of value for certain attributes, etc..) if(p_resourceType == int5) { //CSEBase - v_myResource.cSEBase.resourceName := "CSEBase" & int2str(v_resourceIndex); + v_myResource.cSEBase.resourceName := PX_CSE1_NAME; v_myResource.cSEBase.resourceType := p_resourceType; - v_myResource.cSEBase.resourceID := "CSEBase" & int2str(v_resourceIndex); + v_myResource.cSEBase.resourceID := PX_CSE1_ID; v_myResource.cSEBase.parentID := omit; //Following TS-0001, it must be NULL v_myResource.cSEBase.creationTime := fx_generateTimestamp(); v_myResource.cSEBase.creationTime := "20171231T012345"; @@ -1903,7 +1928,7 @@ module OneM2M_Functions { v_myResource.remoteCSE.resourceName := "remoteCSE" & int2str(v_resourceIndex); } v_myResource.remoteCSE.resourceType := p_resourceType; - v_myResource.remoteCSE.resourceID := "remoteCSE" & int2str(v_resourceIndex); + v_myResource.remoteCSE.resourceID := f_resourceIdCleaner(v_myResource.remoteCSE.cSE_ID); v_myResource.remoteCSE.parentID := f_getResourceId(vc_localResourcesList[p_parentIndex].resource); v_myResource.remoteCSE.creationTime := fx_generateTimestamp(); v_myResource.remoteCSE.creationTime := "20171231T012345"; @@ -1925,11 +1950,81 @@ module OneM2M_Functions { v_myResource.remoteCSE.nodeLink := omit; } + } else if (p_resourceType == int10002 and ispresent (p_resource)) { //AE Annc + if(ischosen(p_resource.aEAnnc)) { + v_myResource.aEAnnc.expirationTime := p_resource.aEAnnc.expirationTime; + v_myResource.aEAnnc.accessControlPolicyIDs := p_resource.aEAnnc.accessControlPolicyIDs; + v_myResource.aEAnnc.labels := p_resource.aEAnnc.labels; + } + } else if (p_resourceType == int10001 and ispresent (p_resource)) { //Acp Annc + if(ischosen(p_resource.accessControlPolicyAnnc)) { + v_myResource.accessControlPolicyAnnc.expirationTime := p_resource.accessControlPolicyAnnc.expirationTime; + v_myResource.accessControlPolicyAnnc.labels := p_resource.accessControlPolicyAnnc.labels; + v_myResource.accessControlPolicyAnnc.privileges := p_resource.accessControlPolicyAnnc.privileges; + v_myResource.accessControlPolicyAnnc.selfPrivileges := p_resource.accessControlPolicyAnnc.selfPrivileges; + } + } else if (p_resourceType == int10003 and ispresent (p_resource)) { //Container Annc + if(ischosen(p_resource.containerAnnc)) { + v_myResource.containerAnnc.expirationTime := p_resource.containerAnnc.expirationTime; + v_myResource.containerAnnc.accessControlPolicyIDs := p_resource.containerAnnc.accessControlPolicyIDs; + v_myResource.containerAnnc.labels := p_resource.containerAnnc.labels; + } + } else if (p_resourceType == int10009 and ispresent (p_resource)) { //Group Annc + if(ischosen(p_resource.groupAnnc)) { + v_myResource.groupAnnc.expirationTime := p_resource.groupAnnc.expirationTime; + v_myResource.groupAnnc.accessControlPolicyIDs := p_resource.groupAnnc.accessControlPolicyIDs; + v_myResource.groupAnnc.labels := p_resource.groupAnnc.labels; + } + } else if (p_resourceType == int10014 and ispresent (p_resource)) { //ContentInstance Annc + if(ischosen(p_resource.contentInstanceAnnc)) { + v_myResource.contentInstanceAnnc.expirationTime := p_resource.contentInstanceAnnc.expirationTime; + v_myResource.contentInstanceAnnc.labels := p_resource.contentInstanceAnnc.labels; + } + } else if (p_resourceType == int1 and ispresent (p_resource)) { //Acp Resource + if(ischosen (p_resource.accessControlPolicy)){ + v_myResource.accessControlPolicy := valueof(p_resource.accessControlPolicy); + + if(not(ispresent(p_resource.accessControlPolicy.resourceName))) { + v_myResource.accessControlPolicy.resourceName := "accessControlPolicy" & int2str(v_resourceIndex); + } + + v_myResource.accessControlPolicy.resourceType := p_resourceType; + v_myResource.accessControlPolicy.resourceID := "accessControlPolicy" & int2str(v_resourceIndex); + v_myResource.accessControlPolicy.parentID := f_getResourceId(vc_localResourcesList[p_parentIndex].resource); + v_myResource.accessControlPolicy.labels := p_resource.accessControlPolicy.labels; + v_myResource.accessControlPolicy.creationTime := fx_generateTimestamp(); + if(not(ispresent(p_resource.accessControlPolicy.expirationTime))) { + v_myResource.accessControlPolicy.expirationTime := "20301231T012345"; + } + v_myResource.accessControlPolicy.lastModifiedTime := v_myResource.accessControlPolicy.creationTime; + v_myResource.accessControlPolicy.announceTo := omit; + v_myResource.accessControlPolicy.announcedAttribute := omit; + + } } return v_myResource; }//End of function + /** + * @desc Sending of a request primitive over mca port + * @param p_resourceType Resource type of the resource to be created + * @param p_requestPrimitive CREATE request primitive for the resource to be created + * @param p_parentIndex Internal resource index which indicates the parent of the resource to be created + * @return Internal resource index of the created resource + * @verdict + */ + function f_cse_sendCreateRequestPrimitive(in ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive := m_create, integer p_parentIndex := -1) runs on AeSimu { + + var RequestPrimitive v_request; + var integer v_resourceIndex := -1; + + v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestPrimitive, p_parentIndex); + + mcaPort.send(m_request(v_request)); + + } + }//end group CseSimuFunctions @@ -1969,23 +2064,71 @@ module OneM2M_Functions { */ altstep a_cse_cf02_cse1() runs on CseSimu { + var PrimitiveContent v_localResource; + var integer vc_localResourceIndex := -1; var MsgIn v_request; var ResponsePrimitive v_response; - var PrimitiveContent v_remoteResource; //localresource - var integer v_localResourceIndex; - var integer v_resourceIndex; + var integer v_localResourceIndex := -1; + + [] mccPortIn.receive(mw_request(mw_create())) -> value v_request { + log(__SCOPE__&": WARNING: Unexpected CREATE message received"); + tc_ac.stop; + v_localResource := f_cse_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, vc_cSEBaseIndex, v_request.primitive.requestPrimitive.resourceType);//TODO Get index from v_request.primitive.requestPrimitive.to_ + vc_localResourceIndex := f_setLocalResource(v_localResource, v_request.primitive.requestPrimitive.resourceType, vc_cSEBaseIndex); - [] mccPortIn.receive(mw_request(mw_create)) -> value v_request { - v_remoteResource := f_cse_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, f_getResourceIndex(v_request.primitive.requestPrimitive.to_), v_request.primitive.requestPrimitive.resourceType); - v_localResourceIndex := f_setLocalResource(v_remoteResource, v_request.primitive.requestPrimitive.resourceType, f_getResourceIndex(v_request.primitive.requestPrimitive.to_)); - v_response := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier)); v_response.from_ := PX_CSE1_ID; v_response.to_ := v_request.primitive.requestPrimitive.from_; - v_response.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource; + v_response.primitiveContent := vc_localResourcesList[vc_localResourceIndex].resource; mccPortIn.send(m_response(v_response)); + tc_ac.start; + repeat; } - [] mccPortIn.receive { + [] mccPortIn.receive(mw_request(mw_retrieve(?))) -> value v_request { + tc_ac.stop; + log(__SCOPE__&": WARNING: Unexpected RETRIEVE message received"); + + v_localResourceIndex := f_getResourceIndex(v_request.primitive.requestPrimitive.to_); + if(v_localResourceIndex == -1) + { + log(__SCOPE__&": ERROR: Resource Index not valid"); + v_response := valueof(m_responsePrimitive(int4004,v_request.primitive.requestPrimitive.requestIdentifier)); + v_response.from_ := PX_CSE1_ID; + v_response.to_ := v_request.primitive.requestPrimitive.from_; + mccPortIn.send(m_response(v_response)); + } else { + v_response := valueof(m_responsePrimitive(int2000,v_request.primitive.requestPrimitive.requestIdentifier)); + v_response.from_ := PX_CSE1_ID; + v_response.to_ := v_request.primitive.requestPrimitive.from_; + v_response.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource; + mccPortIn.send(m_response(v_response)); + } + tc_ac.start; + repeat; + } + [] mccPortIn.receive(mw_request(mw_update())) -> value v_request { + tc_ac.stop; + log(__SCOPE__&": WARNING: Unexpected UPDATE message received"); + + v_localResourceIndex := f_getResourceIndex(v_request.primitive.requestPrimitive.to_); + if(v_localResourceIndex == -1) + { + log(__SCOPE__&": ERROR: Resource Index not valid"); + v_response := valueof(m_responsePrimitive(int4004,v_request.primitive.requestPrimitive.requestIdentifier)); + v_response.from_ := PX_CSE1_ID; + v_response.to_ := v_request.primitive.requestPrimitive.from_; + mccPortIn.send(m_response(v_response)); + } else { + v_response := valueof(m_responsePrimitive(int2004,v_request.primitive.requestPrimitive.requestIdentifier)); + v_response.from_ := PX_CSE1_ID; + v_response.to_ := v_request.primitive.requestPrimitive.from_; + v_response.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource; + mccPortIn.send(m_response(v_response)); + } + tc_ac.start; + repeat; + } + [] mccPortIn.receive (mw_request(?)){ log(__SCOPE__&": WARNING: Unexpected message received"); repeat; } @@ -2479,16 +2622,16 @@ module OneM2M_Functions { return f_resourceIdCleaner(p_contentResource.cSEBase.resourceID); } if(ischosen(p_contentResource.m2mServiceSubscriptionProfile)) { - return p_contentResource.m2mServiceSubscriptionProfile.resourceName; + return f_resourceIdCleaner(p_contentResource.m2mServiceSubscriptionProfile.resourceID); } if(ischosen(p_contentResource.node)) { - return p_contentResource.node.resourceName; + return f_resourceIdCleaner(p_contentResource.node.resourceID); } if(ischosen(p_contentResource.statsConfig)) { - return p_contentResource.statsConfig.resourceName; + return f_resourceIdCleaner(p_contentResource.statsConfig.resourceID); } if(ischosen(p_contentResource.statsCollect)) { - return p_contentResource.statsCollect.resourceName; + return f_resourceIdCleaner(p_contentResource.statsCollect.resourceID); } log(__SCOPE__&":WARNING: Primitive Content Kind not implemented"); @@ -2656,8 +2799,42 @@ module OneM2M_Functions { * @param p_address Resource URI (can be structured/unstructured cseRelative/spRelative/absolute) * @return Internal resource index of the given resource or -1 in case of error */ - function f_getResourceIndex(in XSD.AnyURI p_address) runs on CseSimu return integer { - return vc_cSEBaseIndex; //TODO + function f_getResourceIndex(in XSD.ID p_receivedURI) runs on CseSimu return integer { + var integer v_resourceIndex := -1; + var integer i; + var XSD.ID v_cleanedURI; + + v_cleanedURI := f_resourceIdCleaner(p_receivedURI); + + if (f_isHierarchical(p_receivedURI)) { + + log("Hierarchical method: " & v_cleanedURI); + for(i:=0; i < lengthof(vc_localResourcesList); i := i+1){ + + if(match(f_getResourceName(vc_localResourcesList[i].resource), v_cleanedURI)){ + v_resourceIndex := i; + break; + } + } + + } else { + + log("Non Hierarchical method: " & v_cleanedURI); + for(i:=0; i < lengthof(vc_localResourcesList); i := i+1){ + if(match(f_getResourceId(vc_localResourcesList[i].resource), v_cleanedURI)){ + v_resourceIndex := i; + break; + } + } + } + log("Resource index found: " & int2str(v_resourceIndex)); + //Try CSEBase + if(v_resourceIndex == -1) { + if(match(f_getResourceName(vc_localResourcesList[vc_cSEBaseIndex].resource), v_cleanedURI)) { + v_resourceIndex := vc_cSEBaseIndex; + } + } + return v_resourceIndex; } /** @@ -2755,7 +2932,7 @@ module OneM2M_Functions { if(p_targetResourceIndex == -1) { return PX_CSE1_ID & "/" & PX_CSE1_RESOURCE_ID; } else { - v_resourceAddress := PX_CSE_ID & "/" & f_getResourceId(vc_localResourcesList[p_targetResourceIndex].resource); + v_resourceAddress := PX_CSE1_ID & "/" & f_getResourceId(vc_localResourcesList[p_targetResourceIndex].resource); return v_resourceAddress; } } else { @@ -2788,6 +2965,7 @@ module OneM2M_Functions { } + /** * @desc Saving of a resource and its parent index in the internal resource list * @param p_resource Resource to be saved diff --git a/LibOneM2M/OneM2M_Ports.ttcn b/LibOneM2M/OneM2M_Ports.ttcn index ffac6b7655e85c8a5bbb4d3aa23c74cf75290fd0..76b80cefe389d569029331bd0661ec2025a6287e 100644 --- a/LibOneM2M/OneM2M_Ports.ttcn +++ b/LibOneM2M/OneM2M_Ports.ttcn @@ -15,15 +15,15 @@ module OneM2M_Ports { import from OneM2M_Types all; /* *************************************** - * oneM2M Ports - * *************************************** + * oneM2M Ports + * *************************************** */ /** * @desc Port to transport oneM2M primitives * @desc Output MsgOut * @desc Input MsgIn * @desc this port is allowed to extend for futher usage - * @desc e.g. extend OneM2MPort to dual-faced port + * @desc e.g. extend OneM2MPort to dual-faced port */ type port OneM2MPort message { in diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index 7464dadf3ffe84936846e5ca630b8205050ea75b..e6f8505ef57e85e459b1efc155581a76a6d9082c 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -125,7 +125,7 @@ module OneM2M_Templates { * @desc Base Receive RETRIEVE request primitive * @param p_targetResourceAddress Target resource address */ - template RequestPrimitive mw_retrieve(XSD.ID p_targetResourceAddress) := { + template RequestPrimitive mw_retrieve(template XSD.ID p_targetResourceAddress) := { operation := int2, to_ := p_targetResourceAddress, from_ := ?, @@ -383,7 +383,7 @@ module OneM2M_Templates { to_ := p_to, from_ := p_from, requestIdentifier := ?, - resourceType := ?, + resourceType := omit, primitiveContent:= ?, role := *, originatingTimestamp := *, @@ -585,7 +585,7 @@ module OneM2M_Templates { /** * @desc Reception template for CREATE AEAnnc */ - template RequestPrimitive mw_createAEAnnc(template (omit) XSD.ID p_from := omit, template (omit) XSD.ID p_to := omit, template (omit) AcpType p_accessControlPolicyIds := omit, template XSD.AnyURI p_link := ?) modifies mw_create := { + template RequestPrimitive mw_createAEAnnc(template (omit) XSD.ID p_from := omit, template (omit) XSD.ID p_to := omit, template AcpType p_accessControlPolicyIds := ?, template XSD.AnyURI p_link := ?) modifies mw_create := { resourceType := int10002, primitiveContent := {aEAnnc := mw_contentCreateAEAnnc({"Credential-ID:None"}, p_accessControlPolicyIds)} }; @@ -1280,15 +1280,15 @@ module OneM2M_Templates { accessControlPolicyIDs := p_accessControlPolicyIds,//MA expirationTime := ?,//MA M link := p_link,//M - appName := omit,//OA - app_ID := omit,//OA - aE_ID := omit,//OA - pointOfAccess := omit, //OA {"http://127.0.0.1:1400/monitor"},//O //{"http://192.168.1.92:18080/notifications/AE"}, // TODO: Check this => AE PoA - ontologyRef := omit,//OA - nodeLink := omit,//OA - requestReachability := omit,//OA - contentSerialization := omit,//OA - choice := omit//NA + appName := *,//OA + app_ID := *,//OA + aE_ID := *,//OA + pointOfAccess := *, //OA {"http://127.0.0.1:1400/monitor"},//O //{"http://192.168.1.92:18080/notifications/AE"}, // TODO: Check this => AE PoA + ontologyRef := *,//OA + nodeLink := *,//OA + requestReachability := *,//OA + contentSerialization := *,//OA + choice := *//NA }; /** diff --git a/LibOneM2M/OneM2M_TestSystem.ttcn b/LibOneM2M/OneM2M_TestSystem.ttcn index 51a4ccd3372bae68a3b3e2e7af4270c3351ed8f1..223b9fdd45942755553b26b571304448b9b0d3de 100644 --- a/LibOneM2M/OneM2M_TestSystem.ttcn +++ b/LibOneM2M/OneM2M_TestSystem.ttcn @@ -62,9 +62,9 @@ module OneM2M_TestSystem { //global variables var MyResourcesList vc_localResourcesList := {}; var AeSimu vc_ae1;//For CF02 when CseSimu is master - var integer vc_remoteCseIndex; - var integer vc_localRemoteCseIndex; - var integer vc_cSEBaseIndex; //Index of the CSEBase resource of the Tester inside vc_localResourcesList + var integer vc_remoteCseIndex := -1; + var integer vc_localRemoteCseIndex := -1; + var integer vc_cSEBaseIndex := -1; //Index of the CSEBase resource of the Tester inside vc_localResourcesList }; type component InCseSimu extends CseSimu {} @@ -77,6 +77,7 @@ module OneM2M_TestSystem { port OneM2MPort mccPort; port OneM2MPort mccPortIn; port AdapterControlPort acPort; + port UpperTesterPort utPort; } type component AeSystem { diff --git a/LibOneM2M/UsefulTtcn3Types.ttcn b/LibOneM2M/UsefulTtcn3Types.ttcn index 11a0b0ce30b86afc81f19705dcc739e7e16a6095..fbbb1c2fa9539e4174a72e3c0c54c206f2879485 100644 --- a/LibOneM2M/UsefulTtcn3Types.ttcn +++ b/LibOneM2M/UsefulTtcn3Types.ttcn @@ -5,85 +5,84 @@ * © 2016, oneM2M Partners Type 1 (ARIB, ATIS, CCSA, ETSI, TIA, TSDSI, TTA, TTC). * All rights reserved. * - * @author ETSI - * @version $URL: https://oldforge.etsi.org/svn/oneM2M/branches/Release1/ttcn/LibOneM2M/UsefulTtcn3Types.ttcn $ - * $Id: UsefulTtcn3Types.ttcn 173 2016-11-22 08:10:48Z reinaortega $ - * @desc Test System module for oneM2M + * @author oneM2M + * @version $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/UsefulTtcn3Types.ttcn $ + * $Id: UsefulTtcn3Types.ttcn 234 2017-03-20 16:37:29Z reinaortega $ + * @desc Useful types * */ module UsefulTtcn3Types { - type integer byte (-128 .. 127) with { variant "/* 8 bit */" }; + type integer byte (-128 .. 127) with { variant "/* 8 bit */" }; - type integer unsignedbyte (0 .. 255) with { variant "/*unsigned 8 bit*/" }; + type integer unsignedbyte (0 .. 255) with { variant "/*unsigned 8 bit*/" }; - type integer short (-32768 .. 32767) with { variant "/*16 bit*/" }; + type integer short (-32768 .. 32767) with { variant "/*16 bit*/" }; - type integer unsignedshort (0 .. 65535) with { variant "/*unsigned 16 bit*/" }; + type integer unsignedshort (0 .. 65535) with { variant "/*unsigned 16 bit*/" }; - type integer long (-2147483648 .. 2147483647) with { variant "/*32 bit*/" }; + type integer long (-2147483648 .. 2147483647) with { variant "/*32 bit*/" }; - type integer unsignedlong (0 .. 4294967295) with { variant "/*unsigned 32 bit*/" }; + type integer unsignedlong (0 .. 4294967295) with { variant "/*unsigned 32 bit*/" }; - type integer longlong /* ( -9223372036854775808 .. 9223372036854775807 ) */ with { variant "/*64 bit*/" }; + type integer longlong /* ( -9223372036854775808 .. 9223372036854775807 ) */ with { variant "/*64 bit*/" }; - type integer unsignedlonglong /* ( 0 .. 18446744073709551615 ) */ with { variant "/*unsigned 64 bit*/" }; + type integer unsignedlonglong /* ( 0 .. 18446744073709551615 ) */ with { variant "/*unsigned 64 bit*/" }; - type float IEEE754float with { variant "/*IEEE754 float*/" }; + type float IEEE754float with { variant "/*IEEE754 float*/" }; - type float IEEE754double with { variant "/*IEEE754 double*/" }; + type float IEEE754double with { variant "/*IEEE754 double*/" }; - type float IEEE754extfloat with { variant "/*IEEE754 extended float*/" }; + type float IEEE754extfloat with { variant "/*IEEE754 extended float*/" }; - type float IEEE754extdouble with { variant "/*IEEE754 extended double*/" }; + type float IEEE754extdouble with { variant "/*IEEE754 extended double*/" }; - type universal charstring utf8string with { variant "/*UTF-8*/" }; + type universal charstring utf8string with { variant "/*UTF-8*/" }; - type universal charstring bmpstring ( char ( 0,0,0,0 ) .. char ( 0,0,255,255) ) with { variant "/*UCS-2*/" }; + type universal charstring bmpstring ( char ( 0,0,0,0 ) .. char ( 0,0,255,255) ) with { variant "/*UCS-2*/" }; - type universal charstring utf16string ( char ( 0,0,0,0 ) .. char ( 0,16,255,255) ) with { variant "/*UTF-16*/" }; + type universal charstring utf16string ( char ( 0,0,0,0 ) .. char ( 0,16,255,255) ) with { variant "/*UTF-16*/" }; - type universal charstring iso8859string ( char ( 0,0,0,0 ) .. char ( 0,0,0,255) ) with { variant "/*8 bit*/" }; + type universal charstring iso8859string ( char ( 0,0,0,0 ) .. char ( 0,0,0,255) ) with { variant "/*8 bit*/" }; - type record IDLfixed - { - unsignedshort digits, - short scale, - charstring value_ - } - with { - variant "/*IDL:fixed FORMAL/01-12-01 v.2.6*/"; - }; + type record IDLfixed + { + unsignedshort digits, + short scale, + charstring value_ + } + with { + variant "/*IDL:fixed FORMAL/01-12-01 v.2.6*/"; + }; - /* - type charstring char length (1); + /* + type charstring char length (1); - NOTE 1: The name of this useful type is the same as the TTCN-3 keyword used to denote universal - charstring values in the quadraple form. In general it is disallowed to use TTCN-3 keywords as - identifiers. The "char" useful type is a solitary exception and allowed only for backward compatibility - with previous versions of the TTCN-3 standard. (except Titan doesn't) + NOTE 1: The name of this useful type is the same as the TTCN-3 keyword used to denote universal + charstring values in the quadraple form. In general it is disallowed to use TTCN-3 keywords as + identifiers. The "char" useful type is a solitary exception and allowed only for backward compatibility + with previous versions of the TTCN-3 standard. (except Titan doesn't) - NOTE 2: The special string "8 bit" defined in clause 28.2.3 may be used with this type to specify a given encoding - for its values. Also, other properties of the base type can be changed by using attribute mechanisms. - */ + NOTE 2: The special string "8 bit" defined in clause 28.2.3 may be used with this type to specify a given encoding + for its values. Also, other properties of the base type can be changed by using attribute mechanisms. + */ - type universal charstring uchar length (1); + type universal charstring uchar length (1); - /* - NOTE: Special strings defined in clause 28.2.3 except "8 bit" may be used with this type to specify a given - encoding for its values. Also, other properties of the base type can be changed by using attribute - mechanisms. - */ + /* + NOTE: Special strings defined in clause 28.2.3 except "8 bit" may be used with this type to specify a given + encoding for its values. Also, other properties of the base type can be changed by using attribute + mechanisms. + */ - type bitstring bit length (1); + type bitstring bit length (1); - type hexstring hex length (1); + type hexstring hex length (1); - type octetstring octet length (1); + type octetstring octet length (1); } with { encode "XML"; } - diff --git a/LibOneM2M/XSD.ttcn b/LibOneM2M/XSD.ttcn index 24dfde9c38c503a7cf630b4c5c1e64558e40bc8f..5ac7ea137b64625edc1758357b18850b6f23f20e 100644 --- a/LibOneM2M/XSD.ttcn +++ b/LibOneM2M/XSD.ttcn @@ -5,10 +5,10 @@ * © 2016, oneM2M Partners Type 1 (ARIB, ATIS, CCSA, ETSI, TIA, TSDSI, TTA, TTC). * All rights reserved. * - * @author ETSI - * @version $URL: https://oldforge.etsi.org/svn/oneM2M/branches/Release1/ttcn/LibOneM2M/XSD.ttcn $ - * $Id: XSD.ttcn 347 2017-08-11 08:48:20Z reinaortega $ - * @desc Test System module for oneM2M + * @author oneM2M + * @version $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/XSD.ttcn $ + * $Id: XSD.ttcn 234 2017-03-20 16:37:29Z reinaortega $ + * @desc XSD Aux * */ module XSD { @@ -31,10 +31,10 @@ const charstring nums := "[0-9]#(1,)", ZorTimeZoneExt := "(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))#(,1)", durTime := "(T[0-9]#(1,)"& - "(H([0-9]#(1,)(M([0-9]#(1,)(S|.[0-9]#(1,)S))#(,1)|.[0-9]#(1,)S|S))#(,1)|"& - "M([0-9]#(1,)(S|.[0-9]#(1,)S)|.[0-9]#(1,)M)#(,1)|"& - "S|"& - ".[0-9]#(1,)S))"; + "(H([0-9]#(1,)(M([0-9]#(1,)(S|.[0-9]#(1,)S))#(,1)|.[0-9]#(1,)S|S))#(,1)|"& + "M([0-9]#(1,)(S|.[0-9]#(1,)S)|.[0-9]#(1,)M)#(,1)|"& + "S|"& + ".[0-9]#(1,)S))"; //anySimpleType @@ -53,9 +53,9 @@ type record AnyType } with { variant "XSD:anyType"; -variant "embedValues"; -variant (attr) "anyAttributes"; -variant (elem_list) "anyElement"; +//variant "embedValues"; +//variant (attr) "anyAttributes"; +//variant (elem_list) "anyElement"; }; // String types @@ -209,9 +209,9 @@ variant "XSD:double"; // Time types -type charstring Duration //(pattern TODO Check the pattern "PT5S" not matching - //"{dash}#(,1)P({nums}(Y({nums}(M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|" & - //"{durTime}#(,1))|M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|{durTime})") +type charstring Duration (pattern + "{dash}#(,1)P({nums}(Y({nums}(M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|" & + "{durTime}#(,1))|M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|{durTime})") with { variant "XSD:duration"; }; @@ -305,23 +305,23 @@ type utf8string XMLCompatibleString char(0,0,0,9)..char(0,0,0,9), char(0,0,0,10)..char(0,0,0,10), char(0,0,0,13)..char(0,0,0,13), - char(0,0,0,32)..char(0,0,215,255), - char(0,0,224,0)..char(0,0,255,253), - char(0,1,0,0)..char(0,16,255,253) + char(0,0,0,32)..char(0,0,215,255), + char(0,0,224,0)..char(0,0,255,253), + char(0,1,0,0)..char(0,16,255,253) ); type utf8string XMLStringWithNoWhitespace ( char(0,0,0,33)..char(0,0,215,255), - char(0,0,224,0)..char(0,0,255,253), - char(0,1,0,0)..char(0,16,255,253) + char(0,0,224,0)..char(0,0,255,253), + char(0,1,0,0)..char(0,16,255,253) ); type utf8string XMLStringWithNoCRLFHT ( char(0,0,0,32)..char(0,0,215,255), - char(0,0,224,0)..char(0,0,255,253), - char(0,1,0,0)..char(0,16,255,253) + char(0,0,224,0)..char(0,0,255,253), + char(0,1,0,0)..char(0,16,255,253) ); } diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index fac90f36f4d0e6a026567eb2e5e0f29b2ba2de97..a2dffbe4ee0c9c64ee2f5a889ca53862d7265e2c 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -6320,6 +6320,77 @@ module OneM2M_PermutationFunctions { }//end group AccessControlPolicy }//end group Security + + group Annoucement { + + group Basic { + + function f_CSE_ANNC_001(ResourceType p_resourceType, template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit, in template RequestPrimitive p_requestUpdatePrimitive := omit) runs on AeSimu { + + // Local variables + var MsgIn v_response; + var RequestPrimitive v_request; + var integer v_parentIndex := -1; + var integer v_aeIndex := -1; + var integer v_resourceIndex; + var ResponsePrimitive v_responsePrimitive; + var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit); + v_create.primitiveContent.aE.announceTo := {PX_CSE_ID}; + + // Test control + + // Test component configuration + f_cf02Up(); + + // Test adapter configuration + + //Register the CSE + vc_cse1.start(f_cse_registrationRemoteCse(mw_createRemoteCSE)); + vc_cse1.done; + + //Preamble + vc_cse1.start(f_cse_resourceAnnouncementHandler(mw_createAEAnnc(-, -, -))); + v_aeIndex := f_cse_createResource(int2,v_create); + vc_cse1.done; + + // Test Body + if (ispresent (p_requestUpdatePrimitive)) { + v_resourceIndex := f_cse_createResource(p_resourceType,p_requestCreatePrimitive); + v_request := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive); + v_responsePrimitive.responseStatusCode := int2004; + } else { + v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_parentIndex); + v_responsePrimitive.responseStatusCode := int2001; + } + vc_cse1.start(f_cse_resourceAnnouncementHandler(p_createRequestAnnc)); + mcaPort.send(m_request(v_request)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(v_responsePrimitive.responseStatusCode))) -> value v_response { + tc_ac.stop; + setverdict(pass, __SCOPE__, ": Operation for resource " & int2str(enum2int(p_resourceType)) & " performed successfully"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response { + tc_ac.stop; + setverdict(fail, __SCOPE__, ": Wrong response status code"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__, ": No answer while updating resource type " & int2str(enum2int(p_resourceType))); + } + } + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf02Down(); + + }//end f_CSE_ANNC_001 + + }//end group Basic + + }// end group Announcement }//end group CSE diff --git a/OneM2M_Testcases_AE_Release_1.ttcn b/OneM2M_Testcases_AE_Release_1.ttcn index ef3d6b938c5b075c66b57dc83f1853d96069c42a..0c7bbbbe445bb6772b2a84f1c9687b207cd1403e 100644 --- a/OneM2M_Testcases_AE_Release_1.ttcn +++ b/OneM2M_Testcases_AE_Release_1.ttcn @@ -70,7 +70,7 @@ module OneM2M_Testcases_AE_Release_1 { } }//end group g_AE_GEN_CRE_002 - + group g_AE_GEN_CRE_002 { /** @@ -429,7 +429,7 @@ module OneM2M_Testcases_AE_Release_1 { testcase TC_AE_REG_CRE_002_RN() runs on CseSimu system AeSystem { //primitives for utPort var template UtTriggerPrimitive v_utRequest := m_createAe("UNINITIALIZED"); - var template RequestPrimitive v_createAe := mw_createAe; + var template RequestPrimitive v_createAe := mw_createAe; var universal charstring v_action := __SCOPE__ & ": Please, send a valid AE CREATE Registration Request containing attribute ResourceName"; v_utRequest.primitiveContent.aE.resourceName := "UNINITIALIZED"; v_createAe.primitiveContent.aE.resourceName := ?; @@ -527,7 +527,7 @@ module OneM2M_Testcases_AE_Release_1 { } }//End of subgroup AE_REG_CRE_002 - + } // End of subgroup Create group Delete { @@ -735,7 +735,7 @@ module OneM2M_Testcases_AE_Release_1 { group g_AE_DMR_CRE_004 { - testcase TC_AE_DMR_CRE_004_ACPI() runs on CseSimu system AeSystem { + testcase TC_AE_DMR_CRE_004_ACPI() runs on CseSimu system AeSystem { var template UtTriggerPrimitive v_utRequest := m_utCreateContainer; var template RequestPrimitive v_request := mw_createContainer; var universal charstring v_action := __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute AccessControlPolicyIDs"; @@ -753,7 +753,7 @@ module OneM2M_Testcases_AE_Release_1 { f_AE_DMR_CRE_004(v_utRequest,v_request,v_action); } - testcase TC_AE_DMR_CRE_004_MBS() runs on CseSimu system AeSystem { + testcase TC_AE_DMR_CRE_004_MBS() runs on CseSimu system AeSystem { var template UtTriggerPrimitive v_utRequest := m_utCreateContainer; var template RequestPrimitive v_request := mw_createContainer; var universal charstring v_action := __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute MaxByteSize"; @@ -771,7 +771,7 @@ module OneM2M_Testcases_AE_Release_1 { f_AE_DMR_CRE_004(v_utRequest,v_request,v_action); } - testcase TC_AE_DMR_CRE_004_OR() runs on CseSimu system AeSystem { + testcase TC_AE_DMR_CRE_004_OR() runs on CseSimu system AeSystem { var template UtTriggerPrimitive v_utRequest := m_utCreateContainer; var template RequestPrimitive v_request := mw_createContainer; var universal charstring v_action := __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute OntologyRef"; @@ -866,7 +866,7 @@ module OneM2M_Testcases_AE_Release_1 { v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest; v_expectedUpdateRequestAe.primitiveContent.aE.appName := ?; - + f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe); } @@ -880,7 +880,7 @@ module OneM2M_Testcases_AE_Release_1 { v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest; v_expectedUpdateRequestAe.primitiveContent.aE.pointOfAccess := ?; - + f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe); } @@ -894,7 +894,7 @@ module OneM2M_Testcases_AE_Release_1 { v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest; v_expectedUpdateRequestAe.primitiveContent.aE.ontologyRef := ?; - + f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe); } @@ -908,7 +908,7 @@ module OneM2M_Testcases_AE_Release_1 { v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest; v_expectedUpdateRequestAe.primitiveContent.aE.nodeLink := ?; - + f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe); } @@ -921,7 +921,7 @@ module OneM2M_Testcases_AE_Release_1 { v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest; v_expectedUpdateRequestAe.primitiveContent.aE.requestReachability := ?; - + f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe); } @@ -934,7 +934,7 @@ module OneM2M_Testcases_AE_Release_1 { v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest; v_expectedUpdateRequestAe.primitiveContent.aE.contentSerialization := ?; - + f_AE_DMR_UPD_001(v_utRequestTestBody,v_action, v_expectedUpdateRequestAe); } @@ -1006,7 +1006,7 @@ module OneM2M_Testcases_AE_Release_1 { f_AE_DMR_UPD_002(v_utRequest,v_request,v_action); } - }//End of subgroup AE_DMR_UPD_002 + }//End of subgroup AE_DMR_UPD_002 }//End of subgroup Update @@ -1018,11 +1018,11 @@ module OneM2M_Testcases_AE_Release_1 { * @desc Check that the IUT sends a RETRIEVE Request on the TARGET_RESOURCE_ADDRESS to CSE */ - testcase TC_AE_DMR_RET_001_CB() runs on CseSimu system AeSystem { + testcase TC_AE_DMR_RET_001_CB() runs on CseSimu system AeSystem { var integer v_auxInteger := f_setLocalResource(valueof(m_primitiveContentCSEBase(m_contentCreateCSEBase)), int5); var universal charstring v_action := __SCOPE__ & ": Please, send a valid RETRIEVE Request for CSEBase"; f_AE_DMR_RET_001(int5, f_getLocalResourceAddress(v_auxInteger),v_action); - } + } testcase TC_AE_DMR_RET_001_AE() runs on CseSimu system AeSystem { var integer v_auxInteger := f_setLocalResource(valueof(m_primitiveContentAe(m_contentCreateAe(omit, omit, omit, omit))),int2); @@ -1446,43 +1446,43 @@ module OneM2M_Testcases_AE_Release_1 { testcase TC_AE_SUB_CRE_001() runs on CseSimu system AeSystem { //variables - var template UtTriggerPrimitive v_utRequest := m_utCreateSubscription; - var MsgIn v_request; + var template UtTriggerPrimitive v_utRequest := m_utCreateSubscription; + var MsgIn v_request; var ResponsePrimitive v_responsePrimitive; var universal charstring v_action := __SCOPE__ & ": Please, send a valid subscription creation request"; var integer v_auxInteger := f_setLocalResource(valueof(m_primitiveContentAe(m_contentCreateAe(omit, omit, omit, omit))),int2); v_utRequest.to_ := f_getLocalResourceAddress(v_auxInteger); - f_cf03Up(); + f_cf03Up(); //send triggering primitive to SUT - f_sendUtPrimitive(v_utRequest,v_action); + f_sendUtPrimitive(v_utRequest,v_action); - //Test behavior - tc_ac.start; - alt{ + //Test behavior + tc_ac.start; + alt{ [] mcaPortIn.receive(mw_request(mw_createSubscription)) -> value v_request { tc_ac.stop; - setverdict(pass, __SCOPE__, " : Subscription creation request is accepted!"); + setverdict(pass, __SCOPE__, " : Subscription creation request is accepted!"); - //set responseStatusCode back to SUT + //set responseStatusCode back to SUT v_responsePrimitive := valueof(m_responsePrimitive(int2001, "To_be_defined", omit)); - //send back responsePrimitive + //send back responsePrimitive mcaPortIn.send(m_response(v_responsePrimitive)); - } + } [] mcaPortIn.receive { - tc_ac.stop; - setverdict(fail, __SCOPE__, " : Subscription creation request is rejected due to not including mandatory attributes!!"); - } - [] tc_ac.timeout{ - setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!"); - } - } - - // Postamble - f_cf03Down(); + tc_ac.stop; + setverdict(fail, __SCOPE__, " : Subscription creation request is rejected due to not including mandatory attributes!!"); + } + [] tc_ac.timeout{ + setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!"); + } + } + + // Postamble + f_cf03Down(); } group g_AE_SUB_CRE_002 { @@ -1510,7 +1510,7 @@ module OneM2M_Testcases_AE_Release_1 { testcase TC_AE_SUB_CRE_002_ENC() runs on CseSimu system AeSystem { var template UtTriggerPrimitive v_utRequest := m_utCreateSubscription; - var template RequestPrimitive v_requestT := mw_createSubscription; + var template RequestPrimitive v_requestT := mw_createSubscription; var universal charstring v_action := __SCOPE__ & ": Please, send a valid subscription creation request with optional attribute createdBefore"; var integer v_auxInteger := f_setLocalResource(valueof(m_primitiveContentAe(m_contentCreateAe(omit, omit, omit, omit))),int2); v_utRequest.to_ := f_getLocalResourceAddress(v_auxInteger); diff --git a/OneM2M_Testcases_CSE_Release_1.ttcn b/OneM2M_Testcases_CSE_Release_1.ttcn index 6892d3108bda63772712c1aa1cc3c6e22918b85e..dc06935c148d21d095d7ba70534e27fef135f626 100644 --- a/OneM2M_Testcases_CSE_Release_1.ttcn +++ b/OneM2M_Testcases_CSE_Release_1.ttcn @@ -872,7 +872,7 @@ module OneM2M_Testcases_CSE_Release_1 { //Test Body f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, f_getResourceId(vc_resourcesList[v_aeIndex].resource))); - vc_cse1.start(f_cse_resourceAnnouncementHandler(PX_CSE_ID, f_getResourceAddress(v_aeIndex, e_nonHierarchical, e_spRelative))); + vc_cse1.start(f_cse_resourceAnnouncementHandler(mw_createAEAnnc(PX_CSE_ID, -, -, -))); vc_cse1.done; tc_ac.start; diff --git a/OneM2M_Testcases_CSE_Release_2.ttcn b/OneM2M_Testcases_CSE_Release_2.ttcn index 4cceda80f0a95292d7130fa1d6c47fc975c944bc..6da18b8fb9a5d1554fc8f859fd946a42968858e3 100644 --- a/OneM2M_Testcases_CSE_Release_2.ttcn +++ b/OneM2M_Testcases_CSE_Release_2.ttcn @@ -6776,6 +6776,101 @@ module OneM2M_Testcases_CSE_Release_2 { }//end group AccessControlPolicy }//end group Security + + group Announcement { + + group Basic { + + group g_CSE_ANNC_001 { + + testcase TC_CSE_ANNC_001_ACP_UPD() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var template RequestPrimitive v_updateRequest := m_updateAcpBase; + var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc; + + v_updateRequest.primitiveContent.accessControlPolicy.announceTo := {f_getAnnouncementTargetPoA()}; + + v_ae1.start(f_CSE_ANNC_001(int1, v_createRequestAnnc, omit, v_updateRequest));//AccessControlPolicy + v_ae1.done; + } + + testcase TC_CSE_ANNC_001_ACP_CRE() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var template RequestPrimitive v_createRequest := m_createAcpBase; + var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc; + + v_createRequest.primitiveContent.accessControlPolicy.announceTo := {f_getAnnouncementTargetPoA()}; + + v_ae1.start(f_CSE_ANNC_001(int1, v_createRequestAnnc, v_createRequest, omit));//AccessControlPolicy + v_ae1.done; + } + + testcase TC_CSE_ANNC_001_CNT_UPD() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var template RequestPrimitive v_updateRequest := m_updateContainerBase; + var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase; + + v_updateRequest.primitiveContent.container.announceTo := {f_getAnnouncementTargetPoA()}; + + v_ae1.start(f_CSE_ANNC_001(int3, v_createRequestAnnc, omit, v_updateRequest));//Container + v_ae1.done; + } + + testcase TC_CSE_ANNC_001_CNT_CRE() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var template RequestPrimitive v_createRequest := m_createContainerBase; + var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase; + + v_createRequest.primitiveContent.container.announceTo := {f_getAnnouncementTargetPoA()}; + + v_ae1.start(f_CSE_ANNC_001(int3, v_createRequestAnnc, v_createRequest, omit));//Container + v_ae1.done; + } + + testcase TC_CSE_ANNC_001_GRP_UPD() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var template RequestPrimitive v_updateRequest := m_updateGroupBase; + var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase; + + v_updateRequest.primitiveContent.group_.announceTo := {f_getAnnouncementTargetPoA()}; + + v_ae1.start(f_CSE_ANNC_001(int9, v_createRequestAnnc, omit, v_updateRequest));//Group + v_ae1.done; + } + + testcase TC_CSE_ANNC_001_GRP_CRE() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var template RequestPrimitive v_createRequest := m_createGroupBase; + var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase; + + v_createRequest.primitiveContent.group_.announceTo := {f_getAnnouncementTargetPoA()}; + + v_ae1.start(f_CSE_ANNC_001(int9, v_createRequestAnnc, v_createRequest, omit));//Group + v_ae1.done; + } + + testcase TC_CSE_ANNC_001_CIN_CRE() runs on Tester system CseSystem { + // Local variables + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var template RequestPrimitive v_createRequest := m_createContentInstanceBase; + var template RequestPrimitive v_createRequestAnnc := mw_createContentInstanceAnncBase; + + v_createRequest.primitiveContent.contentInstance.announceTo := {f_getAnnouncementTargetPoA()}; + + v_ae1.start(f_CSE_ANNC_001(int4, v_createRequestAnnc, v_createRequest, omit));//ContentInstance + v_ae1.done; + } + + }// end group g_CSE_ANNC_001 + + }//end group Basic + }//end group Announcement }//end group CSE diff --git a/Requirements collection/TST-Requirements_collection.xlsx b/Requirements collection/TST-Requirements_collection.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..7d04d1de7cd2829cd2f796259575a4ee7d948f67 Binary files /dev/null and b/Requirements collection/TST-Requirements_collection.xlsx differ