From 10c5d09927d73f659e5f8e62d43a7a2130fcf67f Mon Sep 17 00:00:00 2001 From: reinaortega <miguelangel.reinaortega@etsi.org> Date: Mon, 9 May 2022 09:22:11 +0200 Subject: [PATCH] Fixes for crossResourceSubscription support Signed-off-by: reinaortega <miguelangel.reinaortega@etsi.org> --- LibOneM2M/OneM2M_Functions.ttcn | 25 +++++++++++++++++++++++-- LibOneM2M/OneM2M_Templates.ttcn | 2 +- LibOneM2M/OneM2M_TypesAndValues.ttcn | 1 + OneM2M_PermutationFunctions.ttcn | 8 ++++---- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 0252a5d..805c07e 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -2592,7 +2592,7 @@ module OneM2M_Functions { * @param p_primitiveContent Expected primitiveContent in the notification * @verdict */ - function f_cse_notifyProcedure_representationHandler(template PrimitiveContent p_primitiveContent) runs on AeSimu { + function f_cse_notifyProcedure_representationHandler(template PrimitiveContent p_primitiveContent, in ResponseStatusCode p_responseStatusCode := int2000) runs on AeSimu { // Local variables var ResponsePrimitive v_responsePrimitive; @@ -2610,7 +2610,7 @@ module OneM2M_Functions { setverdict(fail, __SCOPE__ & ":ERROR: Notification received but the content doesn't match"); } //Send response in any case - v_responsePrimitive := valueof(m_responseNotification(int2000, omit)); + v_responsePrimitive := valueof(m_responseNotification(p_responseStatusCode, omit)); v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier; f_send(e_mcaPortIn, m_response(v_responsePrimitive)); } @@ -5579,6 +5579,27 @@ module OneM2M_Functions { p_request.primitiveContent.token.tokenObject := fx_generateJWT(); } } + } else if (p_resourceType == int48) {//crossResourceSubscription + //notificationURI + if(match(valueof(p_request.primitiveContent.crossResourceSubscription.notificationURI), v_defaultListOfURIs )){ + p_request.primitiveContent.crossResourceSubscription.notificationURI := {f_getResourceAddress(f_getResourceIndex(f_getOriginator(p_parentIndex)))}; + } + //subscriberURI + if(ispresent(p_request.primitiveContent.crossResourceSubscription.subscriberURI)) { + if(match(valueof(p_request.primitiveContent.crossResourceSubscription.subscriberURI), "NotInitialized" )){ + p_request.primitiveContent.crossResourceSubscription.subscriberURI := valueof(p_request.from_); + } + } + //accessControlPolicyIds + if(ispresent(p_request.primitiveContent.crossResourceSubscription.accessControlPolicyIDs)) { + if(match(valueof(p_request.primitiveContent.crossResourceSubscription.accessControlPolicyIDs), v_defaultAcpIDs )){ + p_request.primitiveContent.crossResourceSubscription.accessControlPolicyIDs := {f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}; + } + } + //creator + if(match(valueof(p_request.primitiveContent.crossResourceSubscription.creator), "NotInitialized" )){ + p_request.primitiveContent.crossResourceSubscription.creator := valueof(p_request.from_); + } } return valueof(p_request); diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index 3ca1f60..6a106a7 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -2771,7 +2771,7 @@ module OneM2M_Templates { primitiveContent := {crossResourceSubscription := m_contentCreateCrossResourceSubscription ({"NotInitialized"}, -, -, omit)} };*/ - template (value) RequestPrimitive m_createCrossResourceSubscription(XSD.ID p_parentResourceAddress, in template (omit) XSD.String p_name := c_defaultSubscriptionResourceName, in template (value) ListOfURIs p_notificationURI := {"NotInitialized"}, + template (value) RequestPrimitive m_createCrossResourceSubscription(XSD.ID p_parentResourceAddress, in template (omit) XSD.String p_name := c_defaultCrossResourceSubscriptionResourceName, in template (value) ListOfURIs p_notificationURI := {"NotInitialized"}, in template (omit) TimeWindowType p_timeWindowType, in template (value) AbsRelTimestamp p_timeWindowSize, in template (value) XSD.ID p_creator) modifies m_create := { to_ := p_parentResourceAddress, requestIdentifier := testcasename() & "-m_createCrossResourceSubscription", diff --git a/LibOneM2M/OneM2M_TypesAndValues.ttcn b/LibOneM2M/OneM2M_TypesAndValues.ttcn index 3bb4498..2e9e908 100644 --- a/LibOneM2M/OneM2M_TypesAndValues.ttcn +++ b/LibOneM2M/OneM2M_TypesAndValues.ttcn @@ -26,6 +26,7 @@ module OneM2M_TypesAndValues { const XSD.String c_defaultScheduleResourceName := "MyScheduleResource"; const XSD.String c_defaultPollingChannelResourceName := "MyPollingChannelResource"; const XSD.String c_defaultSubscriptionResourceName := "MySubscriptionResource"; + const XSD.String c_defaultCrossResourceSubscriptionResourceName := "MyCrossResourceSubscriptionResource"; const XSD.String c_defaultContentInstanceResourceName := "MyContentInstanceResource"; const XSD.String c_defaultContainerResourceName := "MyContainerResource"; const XSD.String c_defaultContainerAnncResourceName := "MyContainerAnncResource"; diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index 7af70ca..009c818 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -10719,7 +10719,7 @@ module OneM2M_PermutationFunctions { var integer v_resourceIndex := -1; var integer v_resourceIndex_1 := -1; var integer v_resourceIndex_2 := -1; - var template RequestPrimitive v_createRequest := m_createContainerBase; + var template RequestPrimitive v_createRequest := m_createContainer_noResourceName; const ResourceType c_containerResourceType := int3; var template RequestPrimitive v_updateRequest_1 := m_updateContainerBase; var template RequestPrimitive v_updateRequest_2 := m_updateContainerBase; @@ -10737,12 +10737,12 @@ module OneM2M_PermutationFunctions { // Test adapter configuration // Preamble - v_aeIndex_1 := f_cse_preamble_registerAe();//c_CRUDNDi); + v_aeIndex_1 := f_cse_preamble_registerAe(-, {f_getLocalPoA(vc_aeSimuDesc.mcaPortIn)}, -);//c_CRUDNDi); v_resourceIndex_1 := f_cse_createResource(c_containerResourceType, v_createRequest, v_aeIndex_1);//Container_1 v_resourceIndex_2 := f_cse_createResource(c_containerResourceType, v_createRequest, v_aeIndex_1);//Container_2 - v_createRequest := m_createCrossResourceSubscription("NotInitialized", -, {f_getResourceAddress(v_aeIndex_2)}, p_timeWindowType, myAbsRelTimestamp, "NullValue"); - v_createRequest.primitiveContent.crossResourceSubscription.regularResourcesAsTarget := {f_getResourceAddress(v_resourceIndex_1), f_getResourceAddress(v_resourceIndex_2)}; + v_createRequest := m_createCrossResourceSubscription("NotInitialized", -, {f_getResourceAddress(v_aeIndex_2)}, p_timeWindowType, myAbsRelTimestamp, "NotInitialized"); + v_createRequest.primitiveContent.crossResourceSubscription.regularResourcesAsTarget := {f_getResourceAddress(v_resourceIndex_1, e_nonHierarchical, e_cseRelative), f_getResourceAddress(v_resourceIndex_2, e_nonHierarchical, e_cseRelative)}; v_createRequest.primitiveContent.crossResourceSubscription.eventNotificationCriteriaSet.eventNotificationCriteriaEntry_list := {m_eventNotificationCriteria({int1})}; // Update_of_Resource f_cse_preamble_subscriptionVerification(v_aeIndex_2, v_createRequest, int48);//AE2 registration -- GitLab