diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 4f2285a4220449936daa7af54e3ecac93551b59a..40bf9075a2127ada0a72b42e3d675960c62c2136 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -399,6 +399,21 @@ module OneM2M_Functions { } + function f_cse_preamble_createServiceSubscribedProfile(in template ListOfM2MID p_allowedAEs := {""}) runs on AeSimu return integer {//c_CRUDNDi + + var integer v_serviceSubscribedAppRuleIndex := -1; + var integer v_serviceSubscribedProfileIndex := -1; + var template RequestPrimitive m_request := m_createM2mServiceSubscriptionProfileBase; + + m_request.primitiveContent.m2mServiceSubscriptionProfile.choice.choice_list[0].serviceSubscribedNode := m_contentServiceSubscribedNode; + v_serviceSubscribedAppRuleIndex := f_cse_createResource(int19, m_createServiceSubscribedAppRule({"None"}, {PX_APP_ID}, valueof(p_allowedAEs))); + m_request.primitiveContent.m2mServiceSubscriptionProfile.choice.choice_list[0].serviceSubscribedNode.ruleLinks := {f_getResourceAddress(v_serviceSubscribedAppRuleIndex)}; + v_serviceSubscribedProfileIndex := f_cse_createResource(int11, m_request); + + return v_serviceSubscribedProfileIndex; + + } + function f_cse_preamble_subscriptionVerification(out AeSimu p_ae2,in integer p_aeIndex, inout integer p_ae2Index, inout template RequestPrimitive p_createRequestPrimitive,in ResourceType p_resourceType, in ResponseStatusCode p_responseStatusCode := int2001) runs on AeSimu { if(p_resourceType == int23){ p_ae2 := AeSimu.create("AE2") alive; diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index 0a3bec5d73b2214780463a2d91b856c2a4e16a94..659ae07d052764dda256d7f957f9068d488c5b65 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -1863,6 +1863,23 @@ module OneM2M_Templates { allowedAEs := omit, choice := omit //NP }; + + template ServiceSubscribedNode_optional m_contentServiceSubscribedNode := { + resourceName := "MyServiceServiceSubscribedNodeResource", //O + resourceType := omit, //M + resourceID := omit, //M + parentID := omit, //M + creationTime := omit, //M + lastModifiedTime := omit, //M + labels := omit, //O + accessControlPolicyIDs := omit, //O + expirationTime := omit, //M + nodeID := omit, //M + cSE_ID := omit, //O + deviceIdentifier := omit, //M + ruleLinks := omit, //O + choice := omit //O + }; }//end group ContentCreate group ContentUpdate { diff --git a/LibOneM2M/OneM2M_Types.ttcn b/LibOneM2M/OneM2M_Types.ttcn index 6177b6181df7ceaafaaf60456bf7f68ee6c4848c..35546a658cb6a0e37de8314419566d665bead91b 100644 --- a/LibOneM2M/OneM2M_Types.ttcn +++ b/LibOneM2M/OneM2M_Types.ttcn @@ -5124,6 +5124,39 @@ group optionalResourceTypes { variant (choice.subscription_list[-]) "name as 'subscription'"; }; + type record ServiceSubscribedNode_optional + { + ResourceName resourceName optional, + ResourceType resourceType optional, + XSD.ID resourceID optional, + NhURI parentID optional, + Timestamp creationTime optional, + Timestamp lastModifiedTime optional, + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp expirationTime optional, + NodeID nodeID optional, + XSD.ID cSE_ID optional, + record of DeviceID deviceIdentifier optional, + ListOfURIs ruleLinks optional, + union { + record length(1 .. infinity) of ChildResourceRef childResource_list, + record length(1 .. infinity) of Subscription subscription_list + } choice optional + } + with { + variant "name as uncapitalized"; + variant "element"; + variant (resourceName) "attribute"; + variant (cSE_ID) "name as 'CSE-ID'"; + variant (deviceIdentifier) "list"; + variant (choice) "untagged"; + variant (choice.childResource_list) "untagged"; + variant (choice.childResource_list[-]) "name as 'childResource'"; + variant (choice.subscription_list) "untagged"; + variant (choice.subscription_list[-]) "name as 'subscription'"; + }; + type record StatsCollect_optional { ResourceName resourceName optional, diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn index 215cc6304f184ce672b75362ac141551f2cfd1a3..42f96810820c0aebc89d2e5078b61424f63123a7 100644 --- a/OneM2M_Testcases.ttcn +++ b/OneM2M_Testcases.ttcn @@ -873,12 +873,12 @@ module OneM2M_Testcases { f_cf01Up(); //Preamble - v_cseBaseIndex := f_cse_preamble_createServiceSubscribedAppRule({"S-AE-ID-STEM"}); //c_CRUDNDi); + v_cseBaseIndex := f_cse_preamble_createServiceSubscribedProfile({"S*"}); //c_CRUDNDi); //Test Body v_request := valueof(m_createAe(PX_APP_ID, omit, omit)); - v_request := f_getCreateRequestPrimitive(v_resourceType, v_request, v_cseBaseIndex); + v_request := f_getCreateRequestPrimitive(v_resourceType, v_request, -1); mcaPort.send(m_request(v_request)); @@ -920,12 +920,12 @@ module OneM2M_Testcases { f_cf01Up(); //Preambule - v_cseBaseIndex := f_cse_preamble_createServiceSubscribedAppRule({"C-AE-ID-STEM"});//c_CRUDNDi); + v_cseBaseIndex := f_cse_preamble_createServiceSubscribedProfile({"C-AE-ID-STEM"});//c_CRUDNDi); //Test Body v_request := valueof(m_createAe(PX_APP_ID, omit, "C-AE-ID-STEM")); - v_request := f_getCreateRequestPrimitive(v_resourceType, v_request, v_cseBaseIndex); + v_request := f_getCreateRequestPrimitive(v_resourceType, v_request, -1); mcaPort.send(m_request(v_request)); tc_ac.start; @@ -966,13 +966,14 @@ module OneM2M_Testcases { f_cf01UpCseSimuMaster(); //Preambule - //v_cseBaseIndex := f_cse_preamble_createServiceSubscribedAppRule(-);//c_CRUDNDi); - vc_remoteCseIndex := f_cse_registrationRemoteCse(mw_createRemoteCSEBase); + //vc_remoteCseIndex := f_cse_registrationRemoteCse(mw_createRemoteCSEBase); + //TODO: create serviceSubscribedProfile, Node, and serviceSubscribedAppRule + v_cseBaseIndex := f_cse_preamble_createServiceSubscribedProfile(-);//c_CRUDNDi); //Test Body //v_request := valueof(m_createAe(PX_APP_ID, omit, "C-AE-ID-STEM")); - vc_aeSimu.start(f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, "C-AE-ID-STEM"))); + vc_aeSimu.start(f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, "C"))); tc_ac.start; alt { @@ -1022,7 +1023,11 @@ module OneM2M_Testcases { //mcaPort.send(m_request(v_request)); tc_ac.start; alt{ - []mccPort.receive(mw_request(mw_createAEAnnc("/S", "CSE_ID", -))){ + []mccPort.receive(mw_request(mw_createAEAnnc(f_getResourceAddress(-1,e_hierarchical, e_spRelative) & "/S", "CSE_ID", -))){ + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": AE creation redirected."); + } + []mccPort.receive(mw_request(mw_createAEAnnc(f_getResourceAddress(-1,e_hierarchical, e_absolute) & "/S", "CSE_ID", -))){ tc_ac.stop; setverdict(pass, __SCOPE__ & ": AE creation redirected."); } @@ -1061,7 +1066,12 @@ module OneM2M_Testcases { //Preambule vc_remoteCseIndex := f_cse_registrationRemoteCse(mw_createRemoteCSEBase); - + vc_aeSimu.start(f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, "S"))); + + //TODO: + //v_request := valueof(m_delete(f_getResourceAddress(v_aeIndex), f_getOriginator(v_aeIndex))); + //mcaPort.send(m_request(v_request)); + //Test Body vc_aeSimu.start(f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, "S")));