diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 09f8a22a21dc9b7c80923532af316712dd95194e..a220cdea4537f327bfb536368e22d728e5838c5d 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -2599,7 +2599,8 @@ module OneM2M_Functions { alt { [] mcaPortIn.receive(mw_request(mw_notifyAggregatedNotification)) -> value vc_request { tc_ac.stop; - if(p_numberOfAggregatedNotification == lengthof(vc_request.primitive.requestPrimitive.primitiveContent.aggregatedNotification.notification_list)){ + v_notificationsReceived := lengthof(vc_request.primitive.requestPrimitive.primitiveContent.aggregatedNotification.notification_list); + if(p_numberOfAggregatedNotification == v_notificationsReceived){ if(f_check_notificationContent(vc_request.primitive.requestPrimitive, p_primitiveContent)){ setverdict(pass, __SCOPE__ & ": Notification received"); } @@ -2634,7 +2635,11 @@ module OneM2M_Functions { } } [] tc_ac.timeout { - setverdict(fail, __SCOPE__ & ": No notification received"); + if(v_notificationsReceived == 0) { + setverdict(fail, __SCOPE__ & ": No notification received"); + } else { + setverdict(fail, __SCOPE__ & ": Not received the expected number of notifications"); + } } } @@ -4012,7 +4017,10 @@ module OneM2M_Functions { v_myResource.timeSeries.lastModifiedTime := v_myResource.timeSeries.creationTime; if(not(ispresent(p_resource.timeSeries.expirationTime))) { v_myResource.timeSeries.expirationTime := "20301231T012345"; - } + }; + v_myResource.timeSeries.currentNrOfInstances := 0; + v_myResource.timeSeries.currentByteSize := 0; + v_myResource.timeSeries.missingDataDetect := false; } } else if(p_resourceType == int30 and ispresent(p_resource)) { //TimeSeriesInstance if(ischosen(p_resource.timeSeriesInstance)){ @@ -4343,6 +4351,8 @@ module OneM2M_Functions { v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentGroup(m_contentCreateGroup(1, {"NotInitialized"}, omit, -, -, -, -, -)), -, int9); } else if (p_resourceType == int10029) { v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentTimeSeries(m_contentCreateTimeSeries), -, int29); + } else if (p_resourceType == int10030) { + v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentTimeSeriesInstance(m_contentCreateTimeSeriesInstance), -, int30); } if(v_originalResourceIndex != -1) { p_requestPrimitive.primitiveContent := f_setLink(valueof(p_requestPrimitive.primitiveContent), f_getLocalResourceAddress(v_originalResourceIndex, -, e_spRelative)); @@ -5425,6 +5435,12 @@ module OneM2M_Functions { if(match(valueof(p_request.primitiveContent.subscription.notificationURI), v_defaultListOfURIs )){ p_request.primitiveContent.subscription.notificationURI := {f_getResourceAddress(f_getResourceIndex(f_getOriginator(p_parentIndex)))}; } + //notificationForwardingURI + if(ispresent(p_request.primitiveContent.subscription.notificationForwardingURI)) { + if(match(valueof(p_request.primitiveContent.subscription.notificationForwardingURI), "NotInitialized" )){ + p_request.primitiveContent.subscription.notificationForwardingURI := p_request.primitiveContent.subscription.notificationURI[0]; + } + } //subscriberURI if(ispresent(p_request.primitiveContent.subscription.subscriberURI)) { if(match(valueof(p_request.primitiveContent.subscription.subscriberURI), "NotInitialized" )){ @@ -6584,6 +6600,9 @@ module OneM2M_Functions { else if (ischosen(p_resource.timeSeriesAnnc)){ p_resource.timeSeriesAnnc.link := p_link; } + else if (ischosen(p_resource.timeSeriesInstanceAnnc)){ + p_resource.timeSeriesInstanceAnnc.link := p_link; + } else { log( __SCOPE__, ":INFO: Resource not having link attribute. Not possible to set link") } diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index fb1fa8f033d3ca12656f80d94b27ee57f1331f42..a6a4efbd65a56850218576a9ec2d5d9aedd9e1c7 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -10746,10 +10746,11 @@ module OneM2M_PermutationFunctions { var integer v_aeIndex := -1; var integer v_remoteCSEIndex := -1; var integer v_originalResourceIndex := -1; - var integer v_cseBaseAnncIndex := -1; + var integer v_parentAnncIndex := -1; var XSD.ID v_originalResourceAddress, v_cseBaseResourceAddress; var template RequestPrimitive v_createAE := m_createAe(PX_TS_AE1.appId, omit, omit); var template RequestPrimitive v_createAcp := m_createAcpBase; + var template RequestPrimitive v_parentAnncResource; var XSD.ID v_resourceAnncAddress; var integer v_acpIndex; @@ -10774,15 +10775,28 @@ module OneM2M_PermutationFunctions { vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}, -, -, -, {f_getLocalPoA()}))); f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); - if((p_resourceType == int3) or (p_resourceType == int9) or (p_resourceType == int29)) { + if((p_resourceType != int1) and (p_resourceType != int4) and (p_resourceType != int30)) { p_createRequestAnnc := f_setAcpId(p_createRequestAnnc, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}); } vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(int5), m_createCSEBaseAnncBase(-, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}, v_cseBaseResourceAddress), -)); f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); - v_cseBaseAnncIndex := f_getLatestResourceIndex(vc_cse1); + v_parentAnncIndex := f_getLatestResourceIndex(vc_cse1); //Creating announced resource (original resource in CSE1) in Hosting CSE - vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(p_resourceType), p_createRequestAnnc, v_cseBaseAnncIndex)); + if(p_resourceType == int4){//Create both original and announced parent resource for contentInstance + v_parentAnncResource := m_createContainerAnncBase; + v_parentAnncResource := f_setAcpId(v_parentAnncResource, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}); + vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(int3), v_parentAnncResource, v_parentAnncIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); + v_parentAnncIndex := f_getLatestResourceIndex(vc_cse1); + } else if (p_resourceType == int30){//Create both original and announced parent resource for timeSeriesInstance + v_parentAnncResource := m_createTimeSeriesAnncBase; + v_parentAnncResource := f_setAcpId(v_parentAnncResource, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}); + vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(int29), v_parentAnncResource, v_parentAnncIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); + v_parentAnncIndex := f_getLatestResourceIndex(vc_cse1); + } + vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(p_resourceType), p_createRequestAnnc, v_parentAnncIndex)); f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); v_resourceAnncAddress := f_getLatestResourceAddress(vc_cse1, -, -); @@ -10823,13 +10837,14 @@ module OneM2M_PermutationFunctions { var integer v_aeIndex := -1; var integer v_remoteCSEIndex := -1; var integer v_originalResourceIndex := -1; - var integer v_cseBaseAnncIndex := -1; + var integer v_parentAnncIndex := -1; var XSD.ID v_originalResourceAddress, v_cseBaseResourceAddress; var template RequestPrimitive v_createAE := m_createAe(PX_TS_AE1.appId, omit, omit); var template RequestPrimitive v_createAcp := m_createAcpBase; var XSD.ID v_resourceAnncAddress; var integer v_acpIndex; var RequestPrimitive v_request; + var template RequestPrimitive v_parentAnncResource; // Test control @@ -10858,13 +10873,27 @@ module OneM2M_PermutationFunctions { vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(int5), m_createCSEBaseAnncBase(-, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}, v_cseBaseResourceAddress), -)); f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); - v_cseBaseAnncIndex := f_getLatestResourceIndex(vc_cse1); + v_parentAnncIndex := f_getLatestResourceIndex(vc_cse1); + //Creating announced resource (original resource in CSE1) in Hosting CSE + if(p_resourceType == int4){//Create both original and announced parent resource for contentInstance + v_parentAnncResource := m_createContainerAnncBase; + v_parentAnncResource := f_setAcpId(v_parentAnncResource, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}); + vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(int3), v_parentAnncResource, v_parentAnncIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); + v_parentAnncIndex := f_getLatestResourceIndex(vc_cse1); + } else if (p_resourceType == int30){//Create both original and announced parent resource for timeSeriesInstance + v_parentAnncResource := m_createTimeSeriesAnncBase; + v_parentAnncResource := f_setAcpId(v_parentAnncResource, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}); + vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(int29), v_parentAnncResource, v_parentAnncIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); + v_parentAnncIndex := f_getLatestResourceIndex(vc_cse1); + } //Creating announced resource (original resource in CSE1) in Hosting CSE - vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(p_resourceType), p_createRequestAnnc, v_cseBaseAnncIndex)); + vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(p_resourceType), p_createRequestAnnc, v_parentAnncIndex)); f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); v_resourceAnncAddress := f_getLatestResourceAddress(vc_cse1, -, -); - v_originalResourceIndex := f_getLatestLocalResource(vc_cse1); + v_originalResourceIndex := f_getLatestLocalResourceIndex(vc_cse1); // Test Body vc_cse1.start(f_cse_retrieveResourceHandler(v_originalResourceIndex, -, -));