diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index 30be8e0e93583e0a210a254e1a3ab4b54382ef96..6e89186fe7ab104ece78c0e42906217ecd16acc5 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -881,6 +881,214 @@ module OneM2M_Templates { primitiveContent := {serviceSubscribedUserProfile := m_contentUpdateServiceSubscribedUserProfileAE0 } }; + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxValue2 modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxValue2", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxValue2 } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileActivated modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileActivated", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileActivated } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileDeactivated modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileDeactivated", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileDeactivated } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumAEsZero modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumAEsZero", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxNumAEsZero } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumAEs2 modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumAEs2", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxNumAEs2 } + }; + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumContainersZero modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumContainersZero", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxNumContainersZero } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumContainers2 modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumContainers2", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxNumContainers2 } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumTimeSeriesZero modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumTimeSeriesZero", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxNumTimeSeriesZero } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumTimeSeries3 modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumTimeSeries3", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxNumTimeSeries3 } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxMembersPerGroupZero modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxMembersPerGroupZero", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxMembersPerGroupZero } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxMembersPerGroup3 modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxMembersPerGroup3", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxMembersPerGroup3 } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumBytes100 modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumBytes100", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxNumBytes100 } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumBytes300 modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumBytes300", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxNumBytes300 } + }; + + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumNodesZero modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumNodesZero", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxNumNodesZero } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumNodes3 modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumNodes3", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxNumNodes3 } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumUsersZero modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumUsersZero", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxNumUsersZero } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumUsers2 modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumUsers2", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxNumUsers2 } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumInstancesPerContainerOne modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumInstancesPerContainerOne", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfilemaxNumInstancesPerContainerOne } + }; + + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumInstancesPerContainer3 modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumInstancesPerContainer3", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfilemaxNumInstancesPerContainer3 } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumInstancesPerTimeSeriesZero modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumInstancesPerTimeSeriesZero", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxNumInstancesPerTimeSeriesZero } + }; + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscriptionProfileMaxNumInstancesPerTimeSeries3 modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscriptionProfileMaxNumInstancesPerTimeSeries3", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentUpdateServiceSubscriptionProfileMaxNumInstancesPerTimeSeries3 } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscribedAppRule modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceSubscribedAppRule", + resourceType := int19, + primitiveContent := {serviceSubscribedAppRule := m_contentUpdateServiceSubscribedAppRule } + }; + + /** + * @desc Base UPDATE request primitive for ServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_updateServiceSubscribedNode modifies m_update := { + requestIdentifier := testcasename() & "-m_updateServiceServiceSubscribedNode", + resourceType := int20, + primitiveContent := {serviceSubscribedNode := m_contentUpdateServiceSubscribedNode } + }; + + /** * @desc Base UPDATE request primitive for TimeSeries resource */ @@ -1774,6 +1982,15 @@ module OneM2M_Templates { primitiveContent := {serviceSubscribedNode := m_contentServiceSubscribedNode(p_ruleLinks)} }; + /** + * @desc Base CREATE request primitive for ServiceSubscribedNode Resource + */ + template (value) RequestPrimitive m_createServiceSubscribedNodeBase(in ListOfURIs p_ruleLinks := {""}, in NodeID p_nodeID, in template (omit) XSD.ID p_cseId) modifies m_create := { + requestIdentifier := testcasename() & "-m_createServiceSubscribedNodeBase", + resourceType := int20, + primitiveContent := {serviceSubscribedNode := m_contentServiceSubscribedNodeBase(p_ruleLinks, p_nodeID, p_cseId )} + }; + /** * @desc Base CREATE request primitive for Subscription resource */ @@ -1972,6 +2189,16 @@ module OneM2M_Templates { primitiveContent := {m2mServiceSubscriptionProfile := m_contentCreatem2mServiceSubscriptionProfileMaxValue1} }; + /** + * @desc Base CREATE request primitive for M2mServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_createM2mServiceSubscriptionProfileDeactivated modifies m_create := { + requestIdentifier := testcasename() & "-m_createM2mServiceSubscriptionProfile", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentCreatem2mServiceSubscriptionProfileDeactivated} + }; + + /** * @desc Base CREATE request primitive for M2mServiceSubscriptionProfile resource */ @@ -1981,6 +2208,24 @@ module OneM2M_Templates { primitiveContent := {m2mServiceSubscriptionProfile := m_contentCreatem2mServiceSubscriptionProfileMaxValue2} }; + /** + * @desc Base CREATE request primitive for M2mServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_createM2mServiceSubscriptionProfileMaxNumBytes200 modifies m_create := { + requestIdentifier := testcasename() & "-m_createM2mServiceSubscriptionProfile", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentCreatem2mServiceSubscriptionProfileMaxNumBytes200} + }; + + /** + * @desc Base CREATE request primitive for M2mServiceSubscriptionProfile resource + */ + template (value) RequestPrimitive m_createM2mServiceSubscriptionProfileMaxNumBytes100 modifies m_create := { + requestIdentifier := testcasename() & "-m_createM2mServiceSubscriptionProfile", + resourceType := int11, + primitiveContent := {m2mServiceSubscriptionProfile := m_contentCreatem2mServiceSubscriptionProfileMaxNumBytes100} + }; + /** * @desc Base CREATE request primitive for ServiceSubscribedUserProfile resource */ @@ -5401,10 +5646,10 @@ module OneM2M_Templates { accessControlPolicyIDs := omit, //O expirationTime := omit, //O dynamicAuthorizationConsultationIDs := omit, //O - M2M_Sub_ID := PX_M2M_SUB_ID, //M - M2M_SS_ID := PX_M2M_SS_ID, //O - Status := omit, //NP - Activate := true, //M + m2M_Sub_ID := PX_M2M_SUB_ID, //M + m2M_SS_ID := PX_M2M_SS_ID, //O + status := omit, //NP default INACTIVE + activate_ := omit, //NP default false activationTime := omit, //NP deactivationTime := omit, //NP serviceSubscriptionDuration := omit, //O @@ -5418,6 +5663,47 @@ module OneM2M_Templates { maxNumTimeSeries := 1, //O maxNumInstancesPerTimeSeries := 1, //O maxMembersPerGroup := 1, //O + maxNumUsers := 1, //O + maxNotificationRate := omit, //O + maxNumFlexContainers := omit, //O + maxNumInstancesPerFlexContainer := omit, //O + defaultAccessControlPrivileges := omit, //O + choice := omit //NP + }; + + /** + * @desc Base primitiveContent for CREATE operation for M2mServiceSubscriptionProfile resource + * @param p_primitiveContent Content for the M2mServiceSubscriptionProfile + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentCreatem2mServiceSubscriptionProfileDeactivated := { + resourceName := c_defaultm2mServiceSubscriptionProfileResourceName, //O + resourceType := omit, //NP + resourceID := omit, //NP + parentID := omit, //NP + creationTime := omit, //NP + lastModifiedTime := omit, //NP + labels := PX_LABELS,//O + accessControlPolicyIDs := omit, //O + expirationTime := omit, //O + dynamicAuthorizationConsultationIDs := omit, //O + m2M_Sub_ID := PX_M2M_SUB_ID, //M + m2M_SS_ID := PX_M2M_SS_ID, //O + status := omit, //NP default INACTIVE + activate_ := omit, //NP default false + activationTime := omit, //NP + deactivationTime := omit, //NP + serviceSubscriptionDuration := omit, //O + currentNumAEs := omit, //NP + maxNumAEs := omit, //O + maxNumNodes := omit, //O + maxNumBytes := omit, //O + maxRequestRate := omit, //O + maxNumContainers := omit, //O + maxNumInstancesPerContainer := omit, //O + maxNumTimeSeries := omit, //O + maxNumInstancesPerTimeSeries := omit, //O + maxMembersPerGroup := omit, //O + maxNumUsers := omit, //O maxNotificationRate := omit, //O maxNumFlexContainers := omit, //O maxNumInstancesPerFlexContainer := omit, //O @@ -5440,10 +5726,10 @@ module OneM2M_Templates { accessControlPolicyIDs := omit, //O expirationTime := omit, //O dynamicAuthorizationConsultationIDs := omit, //O - M2M_Sub_ID := PX_M2M_SUB_ID, //M - M2M_SS_ID := PX_M2M_SS_ID, //O - Status := omit, //NP - Activate := true, //M + m2M_Sub_ID := PX_M2M_SUB_ID, //M + m2M_SS_ID := PX_M2M_SS_ID, //O + status := omit, //NP + activate_ := omit, //NP activationTime := omit, //NP deactivationTime := omit, //NP serviceSubscriptionDuration := omit, //O @@ -5457,6 +5743,87 @@ module OneM2M_Templates { maxNumTimeSeries := 2, //O maxNumInstancesPerTimeSeries := 2, //O maxMembersPerGroup := 2, //O + maxNumUsers := 2, //O + maxNotificationRate := omit, //O + maxNumFlexContainers := omit, //O + maxNumInstancesPerFlexContainer := omit, //O + defaultAccessControlPrivileges := omit, //O + choice := omit //NP + }; + + /** + * @desc Base primitiveContent for CREATE operation for M2mServiceSubscriptionProfile resource + * @param p_primitiveContent Content for the M2mServiceSubscriptionProfile + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentCreatem2mServiceSubscriptionProfileMaxNumBytes200 := { + resourceName := c_defaultm2mServiceSubscriptionProfileResourceName, //O + resourceType := omit, //NP + resourceID := omit, //NP + parentID := omit, //NP + creationTime := omit, //NP + lastModifiedTime := omit, //NP + labels := PX_LABELS,//O + accessControlPolicyIDs := omit, //O + expirationTime := omit, //O + dynamicAuthorizationConsultationIDs := omit, //O + m2M_Sub_ID := PX_M2M_SUB_ID, //M + m2M_SS_ID := PX_M2M_SS_ID, //O + status := omit, //NP + activate_ := omit, //NP default false + activationTime := omit, //NP + deactivationTime := omit, //NP + serviceSubscriptionDuration := omit, //O + currentNumAEs := omit, //NP + maxNumAEs := omit, //O + maxNumNodes := omit, //O + maxNumBytes := 200, //O + maxRequestRate := omit, //O + maxNumContainers := omit, //O + maxNumInstancesPerContainer := omit, //O + maxNumTimeSeries := omit, //O + maxNumInstancesPerTimeSeries := omit, //O + maxMembersPerGroup := omit, //O + maxNumUsers := omit, //O + maxNotificationRate := omit, //O + maxNumFlexContainers := omit, //O + maxNumInstancesPerFlexContainer := omit, //O + defaultAccessControlPrivileges := omit, //O + choice := omit //NP + }; + + /** + * @desc Base primitiveContent for CREATE operation for M2mServiceSubscriptionProfile resource + * @param p_primitiveContent Content for the M2mServiceSubscriptionProfile + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentCreatem2mServiceSubscriptionProfileMaxNumBytes100 := { + resourceName := c_defaultm2mServiceSubscriptionProfileResourceName, //O + resourceType := omit, //NP + resourceID := omit, //NP + parentID := omit, //NP + creationTime := omit, //NP + lastModifiedTime := omit, //NP + labels := PX_LABELS,//O + accessControlPolicyIDs := omit, //O + expirationTime := omit, //O + dynamicAuthorizationConsultationIDs := omit, //O + m2M_Sub_ID := PX_M2M_SUB_ID, //M + m2M_SS_ID := PX_M2M_SS_ID, //O + status := omit, //NP + activate_ := omit, //NP default false + activationTime := omit, //NP + deactivationTime := omit, //NP + serviceSubscriptionDuration := omit, //O + currentNumAEs := omit, //NP + maxNumAEs := omit, //O + maxNumNodes := omit, //O + maxNumBytes := 100, //O + maxRequestRate := omit, //O + maxNumContainers := omit, //O + maxNumInstancesPerContainer := omit, //O + maxNumTimeSeries := omit, //O + maxNumInstancesPerTimeSeries := omit, //O + maxMembersPerGroup := omit, //O + maxNumUsers := omit, //O maxNotificationRate := omit, //O maxNumFlexContainers := omit, //O maxNumInstancesPerFlexContainer := omit, //O @@ -5506,6 +5873,25 @@ module OneM2M_Templates { choice := omit //O }; + template (value) ServiceSubscribedNode_optional m_contentServiceSubscribedNodeBase (in ListOfURIs p_ruleLinks, in NodeID p_nodeID, in template (omit) XSD.ID p_cseId) := { + resourceName := "MyServiceServiceSubscribedNodeResource-With-NodeID", //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 + dynamicAuthorizationConsultationIDs := omit,//O + nodeID := p_nodeID, //M + cSE_ID := p_cseId, //O + deviceIdentifier := omit, //M + ruleLinks := p_ruleLinks, //O + niddRequired := omit, //O + choice := omit //O + }; + /** * @desc Base primitiveContent for CREATE operation for M2mServiceSubscriptionProfile resource * @param p_primitiveContent Content for the M2mServiceSubscriptionProfile @@ -7435,6 +7821,339 @@ module OneM2M_Templates { choice := omit //NP }; + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxValue2 := { + + resourceName := omit, //O + resourceType := omit, //NP + resourceID := omit, //NP + parentID := omit, //NP + creationTime := omit, //NP + lastModifiedTime := omit, //NP + labels := omit,//O + accessControlPolicyIDs := omit, //O + expirationTime := omit, //O + dynamicAuthorizationConsultationIDs := omit, //O + m2M_Sub_ID := omit, //NP + m2M_SS_ID := omit, //O + status := omit, //NP + activate_ := omit, //O + activationTime := omit, //NP + deactivationTime := omit, //NP + serviceSubscriptionDuration := omit, //O + currentNumAEs := omit, //NP + maxNumAEs := 2, //O + maxNumNodes := 2, //O + maxNumBytes := 2, //O + maxRequestRate := 2, //O + maxNumContainers := 2, //O + maxNumInstancesPerContainer := 2, //O + maxNumTimeSeries := 2, //O + maxNumInstancesPerTimeSeries := 2, //O + maxMembersPerGroup := 2, //O + maxNotificationRate := omit, //O + maxNumFlexContainers := omit, //O + maxNumInstancesPerFlexContainer := omit, //O + maxNumUsers := omit, //O + defaultAccessControlPrivileges := omit, //O + choice := omit //NP + + + + }; + + + /** + * @desc PrimitiveContent for UPDATE operation for serviceSubscribedAppRule resource + */ + template (value) ServiceSubscribedAppRule_optional m_contentUpdateServiceSubscribedAppRule := { + + resourceName := omit, //O + resourceType := omit, //NP + resourceID := omit, //NP + parentID := omit, //NP + creationTime := omit, //NP + lastModifiedTime := omit, //NP + labels := omit,//O + accessControlPolicyIDs := omit, //O + expirationTime := omit, //O + dynamicAuthorizationConsultationIDs := omit, //O + applicableCredIDs := omit,//O + allowedApp_IDs := {*},//O + allowedAEs := omit,//O + allowedRole_IDs := omit,//O + allowedUsers := omit,//O + choice := omit//O + + + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscribedNode resource + */ + template (value) ServiceSubscribedNode_optional m_contentUpdateServiceSubscribedNode := { + + resourceName := omit, //O + resourceType := omit, //NP + resourceID := omit, //NP + parentID := omit, //NP + creationTime := omit, //NP + lastModifiedTime := omit, //NP + labels := omit,//O + accessControlPolicyIDs := omit, //O + expirationTime := omit, //O + dynamicAuthorizationConsultationIDs := omit, //O + nodeID := omit, //NP + cSE_ID := omit, //NP + deviceIdentifier := omit, //NP + ruleLinks := omit, //O + niddRequired := true, //O + choice := omit //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfile := { + + resourceName := omit, //O + resourceType := omit, //NP + resourceID := omit, //NP + parentID := omit, //NP + creationTime := omit, //NP + lastModifiedTime := omit, //NP + labels := omit, //O + accessControlPolicyIDs := omit, //O + expirationTime := omit, //O + dynamicAuthorizationConsultationIDs := omit, //O + m2M_Sub_ID := omit, //NP + m2M_SS_ID := omit, //O + status := omit, //NP + activate_ := omit, //O + activationTime := omit, //NP + deactivationTime := omit, //NP + serviceSubscriptionDuration := omit, //O + currentNumAEs := omit, //NP + maxNumAEs := omit, //O + maxNumNodes := omit, //O + maxNumBytes := omit, //O + maxRequestRate := omit, //O + maxNumContainers := omit, //O + maxNumInstancesPerContainer := omit, //O + maxNumTimeSeries := omit, //O + maxNumInstancesPerTimeSeries := omit, //O + maxMembersPerGroup := omit, //O + maxNotificationRate := omit, //O + maxNumFlexContainers := omit, //O + maxNumInstancesPerFlexContainer := omit, //O + maxNumUsers := omit, //O + defaultAccessControlPrivileges := omit, //O + choice := omit //NP + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxValue1 modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumAEs := 1, //O + maxNumNodes := 1, //O + maxNumBytes := 1, //O + maxRequestRate := 1, //O + maxNumContainers := 1, //O + maxNumInstancesPerContainer := 1, //O + maxNumTimeSeries := 1, //O + maxNumInstancesPerTimeSeries := 1, //O + maxMembersPerGroup := 1 //O + + }; + + + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileActivated modifies m_contentUpdateServiceSubscriptionProfile := { + + activate_ := true //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileDeactivated modifies m_contentUpdateServiceSubscriptionProfile := { + + activate_ := false //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxNumAEsZero modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumAEs := 0 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxNumAEs2 modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumAEs := 2 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxNumContainersZero modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumContainers := 0 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxNumContainers2 modifies m_contentUpdateServiceSubscriptionProfile:= { + + maxNumContainers := 2 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxNumTimeSeriesZero modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumTimeSeries := 0 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxNumTimeSeries3 modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumTimeSeries := 3 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfilemaxNumInstancesPerContainerOne modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumInstancesPerContainer := 1 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfilemaxNumInstancesPerContainer3 modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumInstancesPerContainer := 3 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxNumInstancesPerTimeSeriesZero modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumInstancesPerTimeSeries := 0 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxNumInstancesPerTimeSeries3 modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumInstancesPerTimeSeries := 3 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxMembersPerGroupZero modifies m_contentUpdateServiceSubscriptionProfile := { + + maxMembersPerGroup := 0 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxMembersPerGroup3 modifies m_contentUpdateServiceSubscriptionProfile := { + + maxMembersPerGroup := 3 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxNumBytes100 modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumBytes := 100 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxNumBytes300 modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumBytes := 300 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxNumNodesZero modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumNodes := 0 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxNumNodes3 modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumNodes := 3 //O + + }; + + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxNumUsersZero modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumUsers := 0 //O + + }; + /** + * @desc PrimitiveContent for UPDATE operation for ServiceSubscriptionProfile resource + */ + template (value) M2mServiceSubscriptionProfile_optional m_contentUpdateServiceSubscriptionProfileMaxNumUsers2 modifies m_contentUpdateServiceSubscriptionProfile := { + + maxNumUsers := 2 //O + + }; + }//end group ContentUpdate group ContentRetrieve { @@ -9324,6 +10043,81 @@ module OneM2M_Templates { choice := omit//NP } + + template M2mServiceSubscriptionProfile_optional mw_contentServiceSubscriptionProfileBase := { + resourceName := ?,//M + resourceType := ?,//M + resourceID := ?,//M + parentID := ?,//M + creationTime := ?,//M + lastModifiedTime := ?,//M + labels := *,//O + accessControlPolicyIDs := *,//O + expirationTime := ?,//M + dynamicAuthorizationConsultationIDs := *, //O + m2M_Sub_ID := ?, //M + m2M_SS_ID := *, //O + status := ?, //M + activate_ := ?, //M + activationTime := *, //O + deactivationTime := *, //O + serviceSubscriptionDuration := *, //O + currentNumAEs := ?, //M + maxNumAEs := *, //O + maxNumNodes := *, //O + maxNumBytes := *, //O + maxRequestRate := *, //O + maxNumContainers := *, //O + maxNumInstancesPerContainer := *, //O + maxNumTimeSeries := *, //O + maxNumInstancesPerTimeSeries := *, //O + maxMembersPerGroup := *, //O + maxNotificationRate := *, //O + maxNumFlexContainers := *, //O + maxNumInstancesPerFlexContainer := *, //O + maxNumUsers := *, //O + defaultAccessControlPrivileges := *, //O + choice := * //O + + } + template ServiceSubscribedAppRule_optional mw_contentServiceSubscribedAppRuleBase := { + resourceName := ?,//M + resourceType := ?,//M + resourceID := ?,//M + parentID := ?,//M + creationTime := ?,//M + lastModifiedTime := ?,//M + labels := *,//O + accessControlPolicyIDs := *,//O + expirationTime := ?,//M + dynamicAuthorizationConsultationIDs := *, //O + applicableCredIDs := *,//O + allowedApp_IDs := *,//O + allowedAEs := *,//O + allowedRole_IDs := *,//O + allowedUsers := *,//O + choice := *//O + } + + template ServiceSubscribedNode_optional mw_contentServiceSubscribedNodeBase := { + resourceName := ?,//M + resourceType := ?,//M + resourceID := ?,//M + parentID := ?,//M + creationTime := ?,//M + lastModifiedTime := ?,//M + labels := *,//O + accessControlPolicyIDs := *,//O + expirationTime := ?,//M + dynamicAuthorizationConsultationIDs := *, //O + nodeID := ?,//M + cSE_ID := *,//O + deviceIdentifier := *,//O + ruleLinks := *,//O + niddRequired := *,//O + choice := *//O + } + }//end group responseContent group SpecialContents { diff --git a/LibOneM2M/OneM2M_TypesAndValues.ttcn b/LibOneM2M/OneM2M_TypesAndValues.ttcn index c767fc629c33f23000eec7cb971d6aebc658d2d0..af5e13efc3d6b41852fe9f58369f6b279a3d8897 100644 --- a/LibOneM2M/OneM2M_TypesAndValues.ttcn +++ b/LibOneM2M/OneM2M_TypesAndValues.ttcn @@ -1302,10 +1302,10 @@ group OptionalResourceTypes { Timestamp expirationTime optional, ListOfURIs dynamicAuthorizationConsultationIDs optional, //TODO To be removed/replaced by the type defined in XSDs - XSD.ID M2M_Sub_ID optional, - XSD.ID M2M_SS_ID optional, - ServiceSubscriptionStatus Status optional , - XSD.Boolean Activate optional, + XSD.ID m2M_Sub_ID optional, + XSD.ID m2M_SS_ID optional, + ServiceSubscriptionStatus status optional , + XSD.Boolean activate_ optional, Timestamp activationTime optional, Timestamp deactivationTime optional, XSD.Duration serviceSubscriptionDuration optional, @@ -1322,6 +1322,7 @@ group OptionalResourceTypes { XSD.NonNegativeInteger maxNotificationRate optional, XSD.NonNegativeInteger maxNumFlexContainers optional, XSD.NonNegativeInteger maxNumInstancesPerFlexContainer optional, + XSD.NonNegativeInteger maxNumUsers optional, SetOfAcrs defaultAccessControlPrivileges optional, union { record length(1 .. infinity) of ChildResourceRef childResource_list, diff --git a/LibOneM2M/oneM2M_Types b/LibOneM2M/oneM2M_Types index 2782131b4c78662f8175412cdc69812e7811dfa0..e897c8a8e7c0fddf196e507e464c7a600dea4f05 160000 --- a/LibOneM2M/oneM2M_Types +++ b/LibOneM2M/oneM2M_Types @@ -1 +1 @@ -Subproject commit 2782131b4c78662f8175412cdc69812e7811dfa0 +Subproject commit e897c8a8e7c0fddf196e507e464c7a600dea4f05 diff --git a/OneM2M_Testcases_CSE_Release_4.ttcn b/OneM2M_Testcases_CSE_Release_4.ttcn index f46dd237a10ffd74a508c4f31e1973bcda9493f5..d40d2aff409197cab093bc864e06bd0b7f9f06ae 100644 --- a/OneM2M_Testcases_CSE_Release_4.ttcn +++ b/OneM2M_Testcases_CSE_Release_4.ttcn @@ -10861,7 +10861,4329 @@ module OneM2M_Testcases_CSE_Release_4 { } // Basic_Operation } // Service_Subscription_User_Profile - // group SoftwareManagement { + group Service_Subscription_Profile { + group Basic_Operation { + + /** + * @desc Check that the IUT successfully performs operations on resource m2mServiceSubscriptionProfile for authorized AE + * + */ + testcase TC_CSE_SSM_SSP_001_CRE() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_001_CRE()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_001_CRE() runs on AeSimu system CseSystem { + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var RequestPrimitive v_request; + + var integer v_resourceIndex := -1; + + // Test component configuration + f_cf01Up(true); + + // create ServiceSubscriptionProfile directly on CSEBase from superAE + v_request := f_getCreateRequestPrimitive(int11, v_createServiceSubscriptionProfile, -1); + f_send(e_mcaPort, m_request(v_request)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value vc_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Resource type ServiceSubscriptionProfile created successfully"); + f_checkAttributesToBeSaved(int11, v_request, vc_response.primitive.responsePrimitive); + v_resourceIndex := f_setResource(vc_response.primitive.responsePrimitive.primitiveContent, int11, -1); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Wrong response status code"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value vc_response { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while creating resource type ServiceSubscriptionProfile"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating resource type ServiceSubscriptionProfile"); + } + } + + //Check to see if the resource is present or not + if (f_cse_isResourcePresent(v_resourceIndex)){ + setverdict(pass, __SCOPE__ & ":INFO: Resource created"); + } else { + setverdict(fail, __SCOPE__ & ":ERROR: Resource not created"); + } + + + + + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + }//f_CSE_SSM_SSP_001_CRE + + + /** + * @desc Check that the IUT successfully performs operations on resource m2mServiceSubscriptionProfile for authorized AE + * + */ + testcase TC_CSE_SSM_SSP_001_RET() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_001_RET()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_001_RET() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue2; + var template PrimitiveContent v_contentResponse; + var MsgIn v_response; + + var RequestPrimitive v_request; + + // Test component configuration + f_cf01Up(true); + + // create ServiceSubscriptionProfile directly on CSEBase from superAE + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + v_contentResponse.m2mServiceSubscriptionProfile := mw_contentServiceSubscriptionProfileBase; + + + // Retrieve ServiceSubscriptionProfile from super AE + f_send(e_mcaPort, m_request(m_retrieve(f_getResourceAddress(v_subscriptionProfileIndex), f_getOriginator(-1)))); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2000, v_contentResponse))) -> value v_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": serviceSubscribedAppRule successfully retrived."); + + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2000))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while retrieving serviceSubscribedAppRule with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer from IUT for the last Request!"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT successfully performs operations on resource m2mServiceSubscriptionProfile for authorized AE + * + */ + testcase TC_CSE_SSM_SSP_001_UPD() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_001_UPD()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_001_UPD() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var RequestPrimitive v_updateRequest; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxValue2; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // Update ServiceSubscriptionProfile + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully retrived."); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while retrieving m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Verifiy that the ServiceSubscriptionProfile resource has been updated + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(v_updateRequestPrimitive.primitiveContent.m2mServiceSubscriptionProfile.maxNumAEs, vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumAEs))) { + setverdict(fail, __SCOPE__&":INFO: Retrived ServiceSubscriptionProfile does not match with updated content."); + } else { + setverdict(pass, __SCOPE__ & ": Retrived ServiceSubscriptionProfile matched with updated content."); + } + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT successfully performs operations on resource m2mServiceSubscriptionProfile for authorized AE + * + */ + testcase TC_CSE_SSM_SSP_001_DEL() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_001_DEL()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_001_DEL() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // Delete ServiceSubscribedUserProfile + f_send(e_mcaPort, m_request(m_delete(f_getResourceAddress(v_subscriptionProfileIndex), f_getOriginator(v_subscriptionProfileIndex)))); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2002))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully deleted."); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2002))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while deleting m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while deleting resource"); + } + } + + f_checkAeSimuStatus(); + + // Verify that m2mServiceSubscriptionProfile is not present + if (f_cse_isResourceNotPresent(-1, f_getResourceName(vc_resourcesList[v_subscriptionProfileIndex].resource))){ + setverdict(pass, __SCOPE__ & ":INFO: Resource deleted"); + } else { + setverdict(fail, __SCOPE__ & ":ERROR: Resource not deleted"); + } + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + + /** + * @desc Check that the IUT responds with an SERVICE_SUBSCRIPTION_NOT_ESTABLISHED error when the AE + * not having service subscription tries to perform OPERATION on the resource + * + */ + testcase TC_CSE_SSM_SSP_002_CRE() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_002_CRE()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_002_CRE() runs on AeSimu system CseSystem { + + var RequestPrimitive v_request; + + // Test component configuration + f_cf01Up(true); + + v_request := f_getCreateRequestPrimitive(int3, m_createContainerBase, -1); + v_request.from_ := "S-AEWithoutSSP"; // Random Ae without ServiceSubscriptionProfile (SSP) + + f_send(e_mcaPort, m_request(v_request)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4128))) { //SERVICE_SUBSCRIPTION_NOT_ESTABLISHED(4128) + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Operation properly rejected with 4128 (SERVICE_SUBSCRIPTION_NOT_ESTABLISHED)"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4128))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Wrong response status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + }//f_CSE_SSM_SSP_002_CRE + + + /** + * @desc Check that the IUT responds with an SERVICE_SUBSCRIPTION_NOT_ESTABLISHED error when the AE + * not having service subscription tries to perform OPERATION on the resource + * + */ + testcase TC_CSE_SSM_SSP_002_RET() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_002_RET()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_002_RET() runs on AeSimu system CseSystem { + + var integer v_containerIndex := -1; + + // Test component configuration + f_cf01Up(true); + + // create Container directly on CSEBase from superAE + v_containerIndex := f_cse_createResource(int3, m_createContainerBase, -1); + + // Retrieve Container from S-AEWithoutSSP + f_send(e_mcaPort, m_request(m_retrieve(f_getResourceAddress(v_containerIndex), "S-AEWithoutSSP"))); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4128))) { //SERVICE_SUBSCRIPTION_NOT_ESTABLISHED(4128) + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Operation properly rejected with 4128 (SERVICE_SUBSCRIPTION_NOT_ESTABLISHED)"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4128))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Wrong response status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT responds with an SERVICE_SUBSCRIPTION_NOT_ESTABLISHED error when the AE + * not having service subscription tries to perform OPERATION on the resource + * + */ + testcase TC_CSE_SSM_SSP_002_UPD() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_002_UPD()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_002_UPD() runs on AeSimu system CseSystem { + + var integer v_containerIndex := -1; + var RequestPrimitive v_updateRequest; + var template RequestPrimitive v_updateRequestPrimitive := m_updateContainerBase; + + // Test component configuration + f_cf01Up(true); + + // create Container directly on CSEBase from superAE + v_containerIndex := f_cse_createResource(int3, m_createContainerBase, -1); + + v_updateRequest := f_getUpdateRequestPrimitive(int3, v_containerIndex, v_updateRequestPrimitive); + v_updateRequest.from_ := "S-AEWithoutSSP"; //Update Container from AE without ServiceSubscriptionProfile (SSP) + + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4128))) { //SERVICE_SUBSCRIPTION_NOT_ESTABLISHED(4128) + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Operation properly rejected with 4128 (SERVICE_SUBSCRIPTION_NOT_ESTABLISHED)"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4128))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Wrong response status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT responds with an SERVICE_SUBSCRIPTION_NOT_ESTABLISHED error when the AE + * not having service subscription tries to perform OPERATION on the resource + * + */ + testcase TC_CSE_SSM_SSP_002_DEL() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_002_DEL()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_002_DEL() runs on AeSimu system CseSystem { + + var integer v_containerIndex := -1; + + // Test component configuration + f_cf01Up(true); + + // create Container directly on CSEBase from superAE + v_containerIndex := f_cse_createResource(int3, m_createContainerBase, -1); + + // Delete Container from S-AEWithoutSSP + f_send(e_mcaPort, m_request(m_delete(f_getResourceAddress(v_containerIndex), "S-AEWithoutSSP"))); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4128))) { //SERVICE_SUBSCRIPTION_NOT_ESTABLISHED(4128) + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Operation properly rejected with 4128 (SERVICE_SUBSCRIPTION_NOT_ESTABLISHED)"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4128))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Wrong response status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT responds with an error when the AE having + * inactive service subscription tries to perform a request + * + */ + testcase TC_CSE_SSM_SSP_003_CRE() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_003_CRE()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_003_CRE() runs on AeSimu system CseSystem { + + var RequestPrimitive v_request; + + var integer v_subscriptionProfileIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileDeactivated; + var template RequestPrimitive v_createRequestContainer := m_createContainerBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with INACTIVE status + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create a container resource from same AE + v_request := f_getCreateRequestPrimitive(int3, v_createRequestContainer, -1); + v_request.from_ := PX_ALLOWED_C_AE_IDS[0]; + + f_send(e_mcaPort, m_request(v_request)); + + tc_ac.start; + alt { + + //SERVICE_SUBSCRIPTION_NOT_ACTIVE + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4139))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Request rejected successfully as SERVICE_SUBSCRIPTION_NOT_ACTIVE (4139)"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4139))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should be rejected with 4139 as SERVICE_SUBSCRIPTION_NOT_ACTIVE instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + }//f_CSE_SSM_SSP_003_CRE + + + /** + * @desc Check that the IUT responds with an error when the AE having + * inactive service subscription tries to perform a request + * + */ + testcase TC_CSE_SSM_SSP_003_RET() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_003_RET()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_003_RET() runs on AeSimu system CseSystem { + + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileDeactivated; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with INACTIVE status + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + + // Retrieve AE + f_send(e_mcaPort, m_request(m_retrieve(f_getResourceAddress(v_aeIndex), PX_ALLOWED_C_AE_IDS[0]))); + + tc_ac.start; + alt { + + //SERVICE_SUBSCRIPTION_NOT_ACTIVE + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4139))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Request rejected successfully as SERVICE_SUBSCRIPTION_NOT_ACTIVE (4139)"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4139))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should be rejected with 4139 as SERVICE_SUBSCRIPTION_NOT_ACTIVE instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + }//f_CSE_SSM_SSP_003_RET + + /** + * @desc Check that the IUT responds with an error when the AE having + * inactive service subscription tries to perform a request + * + */ + testcase TC_CSE_SSM_SSP_003_UPD() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_003_UPD()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_003_UPD() runs on AeSimu system CseSystem { + + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileDeactivated; + + var template RequestPrimitive v_updateAeRequestPrimitive := m_updateAeBase; + var RequestPrimitive v_updateRequest; + + var Labels v_labels_1:= {"VALUE_1"}; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with INACTIVE status + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + + //Update AE + v_updateAeRequestPrimitive.primitiveContent.aE.labels := v_labels_1; + v_updateRequest := f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateAeRequestPrimitive); + v_updateRequest.from_ := PX_ALLOWED_C_AE_IDS[0]; + + + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + + //SERVICE_SUBSCRIPTION_NOT_ACTIVE + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4139))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Request rejected successfully as SERVICE_SUBSCRIPTION_NOT_ACTIVE (4139)"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4139))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should be rejected with 4139 as SERVICE_SUBSCRIPTION_NOT_ACTIVE instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + }//f_CSE_SSM_SSP_003_UPD + + /** + * @desc Check that the IUT responds with an error when the AE having + * inactive service subscription tries to perform a request + * + */ + testcase TC_CSE_SSM_SSP_003_DEL() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_003_DEL()); + v_ae1.done; + } + + /** + * @desc + * @verdict + */ + function f_CSE_SSM_SSP_003_DEL() runs on AeSimu system CseSystem { + + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileDeactivated; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with INACTIVE status + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + + f_send(e_mcaPort, m_request(m_delete(f_getResourceAddress(v_aeIndex), PX_ALLOWED_C_AE_IDS[0]))); + + tc_ac.start; + alt { + + //SERVICE_SUBSCRIPTION_NOT_ACTIVE + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4139))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Request rejected successfully as SERVICE_SUBSCRIPTION_NOT_ACTIVE (4139)"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4139))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should be rejected with 4139 as SERVICE_SUBSCRIPTION_NOT_ACTIVE instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + }//f_CSE_SSM_SSP_003_DEL + + + /** + * @desc Check that the IUT processes the request when the AE having an active service subscription tries to perform a request + * + */ + testcase TC_CSE_SSM_SSP_004() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_004()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_004() runs on AeSimu system CseSystem { + + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileDeactivated; + var template RequestPrimitive v_updateServiceSubscriptionProfile := m_updateServiceSubscriptionProfileActivated; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with INACTIVE status + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // Update ServiceSubscriptionProfile with activate = true + f_cse_updateResource(int11, v_subscriptionProfileIndex, v_updateServiceSubscriptionProfile); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + + // Retrieve AE successfully beacuse serviceSubscription ACTIVE now + f_send(e_mcaPort, m_request(m_retrieve(f_getResourceAddress(v_aeIndex), PX_ALLOWED_C_AE_IDS[0]))); + + tc_ac.start; + alt { + + //200 OK + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2000))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Request successfully retrieved resource 200 OK)"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2000))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should successfully retrieve with 200 OK instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + }//f_CSE_SSM_SSP_004 + + /** + * @desc Check that the IUT responds with an error when the authorized AE tries to perform OPERATION on the + * resource TARGET_RESOURCE_ADDRESS and it exceeds the limit for ATTRIBUTE_NAME in its + * m2mServiceSubscriptionProfile resource + * + */ + testcase TC_CSE_SSM_SSP_007_MAE() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_007_MAE()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_007_MAE() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; // maxNumAEs 1 + var RequestPrimitive v_request; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + //Create another Ae : Max 1 allowed as per SSP created above + //Assumtption: PX_ALLOWED_C_AE_IDS: [1]Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + v_request := f_getCreateRequestPrimitive(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[1]), -1); + f_send(e_mcaPort, m_request(v_request)); + + tc_ac.start; + alt { + + // SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4141))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Request successfully Rejected"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4141))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should be rejected with 4141 (SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED) instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + + /** + * @desc Check that the IUT responds with an error when the authorized AE tries to perform OPERATION on the + * resource TARGET_RESOURCE_ADDRESS and it exceeds the limit for ATTRIBUTE_NAME in its + * m2mServiceSubscriptionProfile resource + * + */ + testcase TC_CSE_SSM_SSP_007_MNC() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_007_MNC()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_007_MNC() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + var RequestPrimitive v_updateRequest; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var RequestPrimitive v_requestContainerCreate; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumContainers = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create one container + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + vc_ae2.start(f_cse_createResource(int3, m_createContainerBase, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create another container from same AE. maxNumContainers allowed 1 + v_requestContainerCreate := f_getCreateRequestPrimitive(int3, m_createContainerBase, v_aeIndex); + f_send(e_mcaPort, m_request(v_requestContainerCreate)); + + tc_ac.start; + alt { + + // SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4141))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Request successfully Rejected"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4141))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should be rejected with 4141 (SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED) instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT responds with an error when the authorized AE tries to perform OPERATION on the + * resource TARGET_RESOURCE_ADDRESS and it exceeds the limit for ATTRIBUTE_NAME in its + * m2mServiceSubscriptionProfile resource + * + */ + testcase TC_CSE_SSM_SSP_007_MIC_CRE() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_007_MIC_CRE()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_007_MIC_CRE() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + var integer v_containerIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var template RequestPrimitive v_createContentInstanceRequest := m_createContentInstanceBase; + var RequestPrimitive v_request; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumInstancesPerContainer = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create one container + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + vc_ae2.start(f_cse_createResource(int3, m_createContainerBase, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create 1 content instance under + v_containerIndex := f_getLatestResourceIndex(vc_ae2); + vc_ae2.start(f_cse_createResource(int4, m_createContentInstanceBase, v_containerIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create another content instance from same AE. maxNumInstancesPerContainer allowed 1 + v_createContentInstanceRequest.primitiveContent.contentInstance.resourceName := c_defaultContentInstanceResourceName & int2str(2); + v_request := f_getCreateRequestPrimitive(int4, v_createContentInstanceRequest, v_containerIndex); + f_send(e_mcaPort, m_request(v_request)); + + tc_ac.start; + alt { + + // SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4141))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Request successfully Rejected"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4141))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should be rejected with 4141 (SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED) instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT responds with an error when the authorized AE tries to perform OPERATION on the + * resource TARGET_RESOURCE_ADDRESS and it exceeds the limit for ATTRIBUTE_NAME in its + * m2mServiceSubscriptionProfile resource + * + */ + testcase TC_CSE_SSM_SSP_007_MNT() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_007_MNT()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_007_MNT() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + + var RequestPrimitive v_request; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var template RequestPrimitive v_createTimeSeriesRequest := m_createTimeSeriesBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumTimeSeries = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create one TimeSeries container + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + vc_ae2.start(f_cse_createResource(int29, m_createTimeSeriesBase, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create another TimeSeries container. maxNumTimeSeries allowed 1 + v_createTimeSeriesRequest.primitiveContent.timeSeries.resourceName := c_defaultTimeSeriesResourceName & int2str(2); + v_request := f_getCreateRequestPrimitive(int29, v_createTimeSeriesRequest, v_aeIndex); + f_send(e_mcaPort, m_request(v_request)); + + tc_ac.start; + alt { + + // SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4141))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Request successfully Rejected"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4141))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should be rejected with 4141 (SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED) instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + + /** + * @desc Check that the IUT responds with an error when the authorized AE tries to perform OPERATION on the + * resource TARGET_RESOURCE_ADDRESS and it exceeds the limit for ATTRIBUTE_NAME in its + * m2mServiceSubscriptionProfile resource + * + */ + testcase TC_CSE_SSM_SSP_007_MMG_CRE() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_007_MMG_CRE()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_007_MMG_CRE() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + var integer v_containerOneIndex := -1; + var integer v_containerTwoIndex := -1; + + var RequestPrimitive v_request; + var ListOfURIs v_memberIDs; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxMembersPerGroup = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create one container + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + vc_ae2.start(f_cse_createResource(int3, m_createContainerBase, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + v_containerOneIndex := f_getLatestResourceIndex(vc_ae2); + + // Create another container from same AE + vc_ae2.start(f_cse_createResource(int3, m_createContainerBase, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + v_containerTwoIndex := f_getLatestResourceIndex(vc_ae2); + + // Create one Group resource with 2 containers above as members + v_memberIDs := { + f_getResourceId(vc_resourcesList[v_containerOneIndex].resource), + f_getResourceId(vc_resourcesList[v_containerTwoIndex].resource) + }; + + v_request := f_getCreateRequestPrimitive(int9, m_createGroup(2, v_memberIDs, omit, int2, -, omit,-), -1); + v_request.from_ := PX_ALLOWED_C_AE_IDS[0]; + + f_send(e_mcaPort, m_request(v_request)); + + + tc_ac.start; + alt { + + // SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4141))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Request successfully Rejected"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4141))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should be rejected with 4141 (SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED) instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT responds with an error when the authorized AE tries to perform OPERATION on the + * resource TARGET_RESOURCE_ADDRESS and it exceeds the limit for ATTRIBUTE_NAME in its + * m2mServiceSubscriptionProfile resource + * + */ + testcase TC_CSE_SSM_SSP_007_MNB() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_007_MNB()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_007_MNB() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + var integer v_containerIndex := -1; + + var RequestPrimitive v_request; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxNumBytes100; + var template RequestPrimitive v_createRequestContentInstance; + + var XSD.String v_instanceData := any2unistr(int2oct(1, 200)); //200Bytes + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumTimeSeries = 2 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create one container + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + vc_ae2.start(f_cse_createResource(int3, m_createContainerBase, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create another content instance with 200 bytes size. Max allowed 100 bytes + v_containerIndex := f_getLatestResourceIndex(vc_ae2); + v_createRequestContentInstance := m_createContentInstance(c_defaultContentInstanceResourceName, v_instanceData); + v_request := f_getCreateRequestPrimitive(int4, v_createRequestContentInstance, v_containerIndex); + f_send(e_mcaPort, m_request(v_request)); + + tc_ac.start; + alt { + + // SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4141))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Request successfully Rejected"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4141))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should be rejected with 4141 (SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED) instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + + + /** + * @desc Check that the IUT responds with an error when the authorized AE tries to perform OPERATION on the + * resource TARGET_RESOURCE_ADDRESS and it exceeds the limit for ATTRIBUTE_NAME in its + * m2mServiceSubscriptionProfile resource + * + */ + testcase TC_CSE_SSM_SSP_007_MND() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_007_MND()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_007_MND() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_request; + var integer v_aeIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var template RequestPrimitive v_createNodeRequest := m_createNodeBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumNodes = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create 1 Node resource under CSEBase + v_createNodeRequest.primitiveContent.node.resourceName := c_defaultNodeResourceName; + v_createNodeRequest.from_ := PX_ALLOWED_C_AE_IDS[0]; + + vc_ae2.start(f_CSE_DMR_CRE_001(int14, v_createNodeRequest, -));//Node + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create another Node resource under CSEBase and maxNumNodes set to 1 + v_createNodeRequest.primitiveContent.node.resourceName := c_defaultNodeResourceName & int2str(2); + v_request := f_getCreateRequestPrimitive(int14, v_createNodeRequest, -1); + v_request.from_ := PX_ALLOWED_C_AE_IDS[0]; + f_send(e_mcaPort, m_request(v_request)); + + + tc_ac.start; + alt { + + // SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4141))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Request successfully Rejected"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4141))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should be rejected with 4141 (SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED) instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT responds with an error when the authorized AE tries to perform OPERATION on the + * resource TARGET_RESOURCE_ADDRESS and it exceeds the limit for ATTRIBUTE_NAME in its + * m2mServiceSubscriptionProfile resource + * + */ + testcase TC_CSE_SSM_SSP_007_MNU() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_007_MNU()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_007_MNU() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_request; + var integer v_aeIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var template RequestPrimitive v_createServiceSubscribedUserProfile := m_createServiceSubscribedUserProfileMaxValue1; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumUsers = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + //// Create 1 ServiceSubscriptionUserProfile i.e 1 user associated with this Service Subscription Profile + v_createServiceSubscribedUserProfile.from_ := PX_ALLOWED_C_AE_IDS[0]; + vc_ae2.start(f_cse_createResource(int52, v_createServiceSubscribedUserProfile, v_subscriptionProfileIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + //// Create another ServiceSubscriptionUserProfile, max allowed users associated with this Service Subscription Profile is 1 + v_createServiceSubscribedUserProfile.primitiveContent.serviceSubscribedUserProfile.resourceName := c_defaultServiceSubscribedUserProfileResourceName & int2str(2); + v_request := f_getCreateRequestPrimitive(int52, v_createServiceSubscribedUserProfile, v_subscriptionProfileIndex); + f_send(e_mcaPort, m_request(v_request)); + + tc_ac.start; + alt { + + // SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4141))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Request successfully Rejected"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4141))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should be rejected with 4141 (SERVICE_SUBSCRIPTION_LIMITS_EXCEEDED) instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT processes the request when the authorized AE + * having not exceeded the limit for ATTRIBUTE_NAME in its m2mServiceSubscriptionProfile resource + * tries to perform OPERATION on the resource TARGET_RESOURCE_ADDRESS + * + */ + testcase TC_CSE_SSM_SSP_008_MAE() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_008_MAE()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_008_MAE() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; // maxNumAEs 1 + var RequestPrimitive v_request; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + //Create Ae : Max 1 allowed as per SSP created above + //Assumtption/TODO: PX_ALLOWED_C_AE_IDS[0] is Linked to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + v_request := f_getCreateRequestPrimitive(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1); + f_send(e_mcaPort, m_request(v_request)); + + tc_ac.start; + alt { + + // SUCCESSFULL CREATION + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Resource successfully created"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2001))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should successfully create instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + + /** + * @desc Check that the IUT processes the request when the authorized AE + * having not exceeded the limit for ATTRIBUTE_NAME in its m2mServiceSubscriptionProfile resource + * tries to perform OPERATION on the resource TARGET_RESOURCE_ADDRESS + * + */ + testcase TC_CSE_SSM_SSP_008_MNC() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_008_MNC()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_008_MNC() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + var RequestPrimitive v_updateRequest; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var RequestPrimitive v_requestContainerCreate; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumContainers = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create container from same AE. maxNumContainers allowed 1 + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + v_requestContainerCreate := f_getCreateRequestPrimitive(int3, m_createContainerBase, v_aeIndex); + v_requestContainerCreate.from_ := PX_ALLOWED_C_AE_IDS[0]; + + f_send(e_mcaPort, m_request(v_requestContainerCreate)); + + tc_ac.start; + alt { + + // SUCCESSFULL CREATION + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Resource successfully created"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2001))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should successfully create instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT processes the request when the authorized AE + * having not exceeded the limit for ATTRIBUTE_NAME in its m2mServiceSubscriptionProfile resource + * tries to perform OPERATION on the resource TARGET_RESOURCE_ADDRESS + * + */ + testcase TC_CSE_SSM_SSP_008_MIC_CRE() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_008_MIC_CRE()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_008_MIC_CRE() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + var integer v_containerIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var template RequestPrimitive v_createContentInstanceRequest := m_createContentInstanceBase; + var template RequestPrimitive v_createContainerRequest := m_createContainerBase; + var RequestPrimitive v_request; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumInstancesPerContainer = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create one container + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + v_createContainerRequest.from_ := PX_ALLOWED_C_AE_IDS[0]; + vc_ae2.start(f_cse_createResource(int3, v_createContainerRequest, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + // Create 1 content instance from same AE. maxNumInstancesPerContainer allowed 1 + v_request := f_getCreateRequestPrimitive(int4, m_createContentInstanceBase, v_containerIndex); + f_send(e_mcaPort, m_request(v_request)); + + tc_ac.start; + alt { + + // SUCCESSFULL CREATION + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Resource successfully created"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2001))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should successfully create instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT processes the request when the authorized AE + * having not exceeded the limit for ATTRIBUTE_NAME in its m2mServiceSubscriptionProfile resource + * tries to perform OPERATION on the resource TARGET_RESOURCE_ADDRESS + * + */ + testcase TC_CSE_SSM_SSP_008_MNT() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_008_MNT()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_008_MNT() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + + var RequestPrimitive v_request; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var template RequestPrimitive v_createTimeSeriesRequest := m_createTimeSeriesBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumTimeSeries = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create another TimeSeries container. maxNumTimeSeries allowed 1 + v_request := f_getCreateRequestPrimitive(int29, m_createTimeSeriesBase, v_aeIndex); + v_request.from_ := PX_ALLOWED_C_AE_IDS[0]; + f_send(e_mcaPort, m_request(v_request)); + + tc_ac.start; + alt { + + // SUCCESSFULL CREATION + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Resource successfully created"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2001))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should successfully create instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + + /** + * @desc Check that the IUT processes the request when the authorized AE + * having not exceeded the limit for ATTRIBUTE_NAME in its m2mServiceSubscriptionProfile resource + * tries to perform OPERATION on the resource TARGET_RESOURCE_ADDRESS + * + */ + testcase TC_CSE_SSM_SSP_008_MMG_CRE() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_008_MMG_CRE()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_008_MMG_CRE() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + var integer v_containerOneIndex := -1; + + var RequestPrimitive v_request; + var ListOfURIs v_memberIDs; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var template RequestPrimitive v_createContainerRequest := m_createContainerBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxMembersPerGroup = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create one container + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + v_createContainerRequest.from_ := PX_ALLOWED_C_AE_IDS[0]; + vc_ae2.start(f_cse_createResource(int3, v_createContainerRequest, v_aeIndex)); + + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + v_containerOneIndex := f_getLatestResourceIndex(vc_ae2); + + + // Create one Group resource with 1 container above as members + v_memberIDs := { + f_getResourceId(vc_resourcesList[v_containerOneIndex].resource) + }; + + v_request := f_getCreateRequestPrimitive(int9, m_createGroup(1, v_memberIDs, omit, int2, -, omit,-), -1); + v_request.from_ := PX_ALLOWED_C_AE_IDS[0]; + f_send(e_mcaPort, m_request(v_request)); + + + tc_ac.start; + alt { + + // SUCCESSFULL CREATION + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Resource successfully created"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2001))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should successfully create instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT processes the request when the authorized AE + * having not exceeded the limit for ATTRIBUTE_NAME in its m2mServiceSubscriptionProfile resource + * tries to perform OPERATION on the resource TARGET_RESOURCE_ADDRESS + * + */ + testcase TC_CSE_SSM_SSP_008_MNB() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_008_MNB()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_008_MNB() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + var integer v_containerIndex := -1; + var RequestPrimitive v_request; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxNumBytes100; + var template RequestPrimitive v_createContainerRequest := m_createContainerBase; + var template RequestPrimitive v_createRequestContentInstance; + + var XSD.String v_instanceData := any2unistr(int2oct(1, 50)); //50Bytes + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumTimeSeries = 2 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create one container + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + v_createContainerRequest.from_ := PX_ALLOWED_C_AE_IDS[0]; + vc_ae2.start(f_cse_createResource(int3, v_createContainerRequest, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create another content instance with 50 bytes size. Max allowed 100 bytes + v_containerIndex := f_getLatestResourceIndex(vc_ae2); + v_createRequestContentInstance := m_createContentInstance(c_defaultContentInstanceResourceName, v_instanceData); + v_request := f_getCreateRequestPrimitive(int4, v_createRequestContentInstance, v_containerIndex); + f_send(e_mcaPort, m_request(v_request)); + + tc_ac.start; + alt { + + // SUCCESSFULL CREATION + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Resource successfully created"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2001))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should successfully create instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + + + /** + * @desc Check that the IUT processes the request when the authorized AE + * having not exceeded the limit for ATTRIBUTE_NAME in its m2mServiceSubscriptionProfile resource + * tries to perform OPERATION on the resource TARGET_RESOURCE_ADDRESS + * + */ + testcase TC_CSE_SSM_SSP_008_MND() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_008_MND()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_008_MND() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_request; + var integer v_aeIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var template RequestPrimitive v_createNodeRequest := m_createNodeBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumNodes = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + // Create 1 Node resource under CSEBase and maxNumNodes set to 1 + v_request := f_getCreateRequestPrimitive(int14, m_createNodeBase, -1); + v_request.from_ := PX_ALLOWED_C_AE_IDS[0]; + f_send(e_mcaPort, m_request(v_request)); + + + tc_ac.start; + alt { + + // SUCCESSFULL CREATION + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Resource successfully created"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2001))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should successfully create instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT processes the request when the authorized AE + * having not exceeded the limit for ATTRIBUTE_NAME in its m2mServiceSubscriptionProfile resource + * tries to perform OPERATION on the resource TARGET_RESOURCE_ADDRESS + * + */ + testcase TC_CSE_SSM_SSP_008_MNU() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_008_MNU()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_008_MNU() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_request; + var integer v_aeIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var template RequestPrimitive v_createServiceSubscribedUserProfile := m_createServiceSubscribedUserProfileMaxValue1; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumUsers = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + //// Create ServiceSubscriptionUserProfile, max allowed users associated with this Service Subscription Profile is 1 + v_request := f_getCreateRequestPrimitive(int52, v_createServiceSubscribedUserProfile, v_subscriptionProfileIndex); + v_request.from_ := PX_ALLOWED_C_AE_IDS[0]; + f_send(e_mcaPort, m_request(v_request)); + + tc_ac.start; + alt { + + // SUCCESSFULL CREATION + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Resource successfully created"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2001))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should successfully create instead of " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + + }// Basic_Operation + + + group Update { + + /** + * @desc Check that the IUT updates the value of the attributes activationTime, status, deactivationTime + * in <m2mserviceSubscriptionProfile> resource when activate attribute is set to TRUE in resource representation + * of UPDATE request + * + */ + testcase TC_CSE_SSM_SSP_UPD_001() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_001()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_001() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_updateRequest; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileDeactivated; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileActivated; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // Update ServiceSubscriptionProfile + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // activate attribute set to TRUE + // activationTime attribute set to Current Time + // deactivationTime attribute set to Null + // status attribute set to ACTIVE + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.activate_)) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile Activate is not TRUE"); + + } + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.activationTime, fx_generateTimestamp()))) { //getcurrentTime() + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile activationTime does not match with current time"); + + } + + if(ispresent(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.deactivationTime)){ + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile deactivationTime does not match with null."); + + } + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.status, active ))){ + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile does not has Status as ACTIVE in updated content."); + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT updates the value of the attributes deactivationTime, status when + * activate attribute is set to FALSE in resource representation of UPDATE request + * + */ + testcase TC_CSE_SSM_SSP_UPD_002() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_002()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_002() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_updateRequest; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileDeactivated; //activate default value false + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileDeactivated; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // Update ServiceSubscriptionProfile + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // activate attribute set to FALSE + // deactivationTime attribute set to Current Time + // status attribute set to INACTIVE + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.activate_)) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile Activate is not FALSE"); + + } + + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.deactivationTime, fx_generateTimestamp() ))){ //getCurrentTime() + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile deactivationTime does not match current time"); + + } + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.status, inactive ))){ + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile does not has Status as INACTIVE in updated content."); + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT overrides the value of the attribute ATTRIBUTE_NAME with the current limit + * when the value provided in the resource representation of the UPDATE request is less than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_003_MAE() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_003_MAE()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_003_MAE() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_updateRequest; + var M2mServiceSubscriptionProfile_optional m2mServiceSubscriptionProfile; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue2; // maxNumAEs 2 + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumAEsZero; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Update ServiceSubscriptionProfile and make maxNumAEs to 0 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); +// v_updateRequest.from_ := PX_ALLOWED_C_AE_IDS[0]; + + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumAEs = currentNumberOfAE (1 in this case) + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + m2mServiceSubscriptionProfile := vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile; + + if(not(match(m2mServiceSubscriptionProfile.maxNumAEs, m2mServiceSubscriptionProfile.currentNumAEs))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumAEs should be equal to currentNumberOfAEs"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT overrides the value of the attribute ATTRIBUTE_NAME with the current limit + * when the value provided in the resource representation of the UPDATE request is less than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_003_MNC() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_003_MNC()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_003_MNC() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + var RequestPrimitive v_updateRequest; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue2; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumContainersZero; + var template RequestPrimitive v_createRequestContainer := m_createContainerBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumContainers = 2 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create one container + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + v_createRequestContainer.from_ := PX_ALLOWED_C_AE_IDS[0]; + vc_ae2.start(f_cse_createResource(int3, v_createRequestContainer, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Update ServiceSubscriptionProfile and make maxNumContainers to 0 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumContainers = currentNumContainers (1 in this case) + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumContainers, 1))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumContainers should be equal to currentNumContainers (1 in this case)"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT overrides the value of the attribute ATTRIBUTE_NAME with the current limit + * when the value provided in the resource representation of the UPDATE request is less than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_003_MNI() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_003_MNI()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_003_MNI() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + var RequestPrimitive v_updateRequest; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue2; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumInstancesPerContainerOne; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumInstancesPerContainer = 2 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create container and 2 content instances under + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + //// Create 2 container instances + //trigger 1k bytes data storage 200 bytes of data at 100 bytes at time + // Operations to generate charging info - AE2 stores total 200 bytes of data at 100 bytes at time + vc_ae2.start(f_cse_createContentAndInstances(200, 100, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Update ServiceSubscriptionProfile and make maxNumInstancesPerContainer to 1 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumInstancesPerContainer = currentNumInstancesPerContainer (1 in this case) + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumInstancesPerContainer, 2))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumInstancesPerContainer should be equal to currentNumInstancesPerContainer (2 in this case)"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT overrides the value of the attribute ATTRIBUTE_NAME with the current limit + * when the value provided in the resource representation of the UPDATE request is less than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_003_MNT() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_003_MNT()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_003_MNT() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + + var RequestPrimitive v_updateRequest; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue2; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumTimeSeriesZero; + var template RequestPrimitive v_createTimeSeriesRequest := m_createTimeSeriesBase; + var template RequestPrimitive v_createRequestContainer := m_createContainerBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumTimeSeries = 2 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create one TimeSeries container + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + v_createTimeSeriesRequest.from_ := PX_ALLOWED_C_AE_IDS[0]; + vc_ae2.start(f_cse_createResource(int29, v_createTimeSeriesRequest, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Update ServiceSubscriptionProfile and make maxNumTimeSeries to 0 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumTimeSeries = currentNumTimeSeries (1 in this case) + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumTimeSeries, 1))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumTimeSeries should be equal to currentNumTimeSeries (1 in this case)"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT overrides the value of the attribute ATTRIBUTE_NAME with the current limit + * when the value provided in the resource representation of the UPDATE request is less than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_003_MIT() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_003_MIT()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_003_MIT() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex, v_timeSeriesIndex := -1; + + var RequestPrimitive v_updateRequest; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue2; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumInstancesPerTimeSeriesZero; + var RequestPrimitive v_createTimeSeriesRequest := m_createTimeSeriesBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumInstancesPerContainer = 2 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create TimeSeries and 1 TimeSeriesInstance under + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + v_createTimeSeriesRequest.from_ := PX_ALLOWED_C_AE_IDS[0]; + vc_ae2.start(f_cse_createResource(int29, v_createTimeSeriesRequest, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + v_timeSeriesIndex := f_getLatestResourceIndex(vc_ae2); + vc_ae2.start(f_cse_createResource(int30, m_createTimeSeriesInstanceBase, v_timeSeriesIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + // Update ServiceSubscriptionProfile and make maxNumInstancesPerTimeSeries to 0 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumInstancesPerTimeSeries = currentNumInstancesPerTimeSeries (1 in this case) + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumInstancesPerTimeSeries, 1))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumInstancesPerTimeSeries should be equal to currentNumInstancesPerTimeSeries (1 in this case)"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT overrides the value of the attribute ATTRIBUTE_NAME with the current limit + * when the value provided in the resource representation of the UPDATE request is less than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_003_MMG() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_003_MMG()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_003_MMG() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_updateRequest; + var ListOfURIs v_memberIDs; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue2; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxMembersPerGroupZero; + + var template RequestPrimitive v_createGroupRequest; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumTimeSeries = 2 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create one Group resource having one AE as member + v_memberIDs := {f_getLatestResourceAddress(vc_ae2)}; + v_createGroupRequest := m_createGroup(2, v_memberIDs, omit, int2, -, omit,-); + v_createGroupRequest.from_ := PX_ALLOWED_C_AE_IDS[0]; + + vc_ae2.start(f_cse_createResource(int9, v_createGroupRequest, -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + // Update ServiceSubscriptionProfile and make maxMembersPerGroup to 0 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumTimeSeries = currentNumTimeSeries (1 in this case) + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxMembersPerGroup, 1))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxMembersPerGroup should be equal to current Members in group already created (1 in this case)"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT overrides the value of the attribute ATTRIBUTE_NAME with the current limit + * when the value provided in the resource representation of the UPDATE request is less than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_003_MNB() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_003_MNB()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_003_MNB() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_updateRequest; + var integer v_aeIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxNumBytes200; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumBytes100; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumTimeSeries = 2 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + //// Create 2 container instances saving 200 bytes of data + + //trigger 1k bytes data storage 200 bytes of data at 100 bytes at time + // Operations to generate charging info - AE2 stores total 200 bytes of data at 100 bytes at time + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + vc_ae2.start(f_cse_createContentAndInstances(200, 100, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + // Update ServiceSubscriptionProfile and make maxNumBytes to 100 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumBytes = currentNumBytes (200 in this case) + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumBytes, 200))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumBytes should be equal to currentNumBytes already created (200 in this case)"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + + + /** + * @desc Check that the IUT overrides the value of the attribute ATTRIBUTE_NAME with the current limit + * when the value provided in the resource representation of the UPDATE request is less than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_003_MND() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_003_MND()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_003_MND() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_updateRequest; + var integer v_aeIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue2; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumNodesZero; + var template RequestPrimitive v_createNodeRequest := m_createNodeBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumNodes = 2 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + //// Create 1 Node resource under CSEBase + v_createNodeRequest.primitiveContent.node.resourceName := omit; + v_createNodeRequest.from_ := PX_ALLOWED_C_AE_IDS[0]; + + vc_ae2.start(f_CSE_DMR_CRE_001(int14, v_createNodeRequest, -));//Node + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Update ServiceSubscriptionProfile and make maxNumNodes to 0 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumNodes = currentNumBytes (1 in this case) + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumNodes, 1))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumNodes should be equal to currentNumBytes already created (1 in this case)"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT overrides the value of the attribute ATTRIBUTE_NAME with the current limit + * when the value provided in the resource representation of the UPDATE request is less than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_003_MNU() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_003_MNU()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_003_MNU() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_updateRequest; + var integer v_aeIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumUsersZero; + var template RequestPrimitive v_createServiceSubscribedUserProfile := m_createServiceSubscribedUserProfileMaxValue1; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumUsers = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + //// Create 1 ServiceSubscriptionUserProfile i.e 1 user associated with this Service Subscription Profile + v_createServiceSubscribedUserProfile.from_ := PX_ALLOWED_C_AE_IDS[0]; + vc_ae2.start(f_cse_createResource(int52, v_createServiceSubscribedUserProfile, v_subscriptionProfileIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Update ServiceSubscriptionProfile and make maxNumUsers to 0 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumUsers = current M2M Service Users associated with this M2M Service Subscription. (1 in this case) + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumUsers, 1))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumUsers should be equal to current M2M Service Users associated with this M2M Service Subscription (1 in this case)"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + + /** + * @desc Check that the IUT updates successfully the value of the attribute ATTRIBUTE_NAME of the TARGET_RESOURCE_ADDRESS + * resource, when the value provided in the resource representation of the UPDATE request is more than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_004_MAE() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_004_MAE()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_004_MAE() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_updateRequest; + var M2mServiceSubscriptionProfile_optional m2mServiceSubscriptionProfile; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; // maxNumAEs 1 + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumAEs2; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + // Update ServiceSubscriptionProfile and make maxNumAEs to 2 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumAEs = 2 (1 in this case) + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + m2mServiceSubscriptionProfile := vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile; + + if(not(match(m2mServiceSubscriptionProfile.maxNumAEs, 2))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumAEs should be equal to 2"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT updates successfully the value of the attribute ATTRIBUTE_NAME of the TARGET_RESOURCE_ADDRESS + * resource, when the value provided in the resource representation of the UPDATE request is more than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_004_MNC() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_004_MNC()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_004_MNC() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + var RequestPrimitive v_updateRequest; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumContainers2; + var template RequestPrimitive v_createRequestContainer := m_createContainerBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumContainers = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create one container + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + v_createRequestContainer.from_ := PX_ALLOWED_C_AE_IDS[0]; + vc_ae2.start(f_cse_createResource(int3, v_createRequestContainer, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Update ServiceSubscriptionProfile and make maxNumContainers to 2 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumContainers = 2 + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumContainers, 2))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumContainers should be equal to 2"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT updates successfully the value of the attribute ATTRIBUTE_NAME of the TARGET_RESOURCE_ADDRESS + * resource, when the value provided in the resource representation of the UPDATE request is more than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_004_MNI() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_004_MNI()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_004_MNI() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + var RequestPrimitive v_updateRequest; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue2; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumInstancesPerContainer3; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumInstancesPerContainer = 2 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create container and 2 content instances under + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + //// Create 2 container instances + //trigger 1k bytes data storage 200 bytes of data at 100 bytes at time + // Operations to generate charging info - AE2 stores total 200 bytes of data at 100 bytes at time + vc_ae2.start(f_cse_createContentAndInstances(200, 100, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Update ServiceSubscriptionProfile and make maxNumInstancesPerContainer to 3 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumInstancesPerContainer = 3 + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumInstancesPerContainer, 3))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumInstancesPerContainer should be equal to 3"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT updates successfully the value of the attribute ATTRIBUTE_NAME of the TARGET_RESOURCE_ADDRESS + * resource, when the value provided in the resource representation of the UPDATE request is more than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_004_MNT() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_004_MNT()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_004_MNT() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex := -1; + + var RequestPrimitive v_updateRequest; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue2; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumTimeSeries3; + + var template RequestPrimitive v_createTimeSeriesRequest := m_createTimeSeriesBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumTimeSeries = 2 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create one TimeSeries container + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + v_createTimeSeriesRequest.from_ := PX_ALLOWED_C_AE_IDS[0]; + vc_ae2.start(f_cse_createResource(int29, v_createTimeSeriesRequest, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Update ServiceSubscriptionProfile and make maxNumTimeSeries to 3 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumTimeSeries = 3 + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumTimeSeries, 3))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumTimeSeries should be equal to updated value (3)"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT updates successfully the value of the attribute ATTRIBUTE_NAME of the TARGET_RESOURCE_ADDRESS + * resource, when the value provided in the resource representation of the UPDATE request is more than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_004_MIT() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_004_MIT()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_004_MIT() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_aeIndex, v_timeSeriesIndex := -1; + + var RequestPrimitive v_updateRequest; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue2; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumInstancesPerTimeSeries3; + var RequestPrimitive v_createTimeSeriesRequest := m_createTimeSeriesBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumInstancesPerContainer = 2 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create TimeSeries and 1 TimeSeriesInstance under + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + v_createTimeSeriesRequest.from_ := PX_ALLOWED_C_AE_IDS[0]; + vc_ae2.start(f_cse_createResource(int29, v_createTimeSeriesRequest, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + v_timeSeriesIndex := f_getLatestResourceIndex(vc_ae2); + vc_ae2.start(f_cse_createResource(int30, m_createTimeSeriesInstanceBase, v_timeSeriesIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Update ServiceSubscriptionProfile and make maxNumInstancesPerTimeSeries to 3 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumInstancesPerTimeSeries = 3 + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumInstancesPerTimeSeries, 3))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumInstancesPerTimeSeries should be equal to updated value (3)"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT updates successfully the value of the attribute ATTRIBUTE_NAME of the TARGET_RESOURCE_ADDRESS + * resource, when the value provided in the resource representation of the UPDATE request is more than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_004_MMG() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_004_MMG()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_004_MMG() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_updateRequest; + var ListOfURIs v_memberIDs; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue2; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxMembersPerGroup3; + var template RequestPrimitive v_createGroupRequest; + + var template RequestPrimitive v_createRequestContainer := m_createContainerBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumTimeSeries = 2 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Create one Group resource container + v_memberIDs := {f_getLatestResourceAddress(vc_ae2)}; + v_createGroupRequest := m_createGroup(2, v_memberIDs, omit, int2, -, omit,-); + v_createGroupRequest.from_ := PX_ALLOWED_C_AE_IDS[0]; + vc_ae2.start(f_cse_createResource(int9, v_createGroupRequest, -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + // Update ServiceSubscriptionProfile and make maxMembersPerGroup to 3 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumTimeSeries = 3 + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxMembersPerGroup, 3))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxMembersPerGroup should be equal to 3 (updated value)"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT updates successfully the value of the attribute ATTRIBUTE_NAME of the TARGET_RESOURCE_ADDRESS + * resource, when the value provided in the resource representation of the UPDATE request is more than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_004_MNB() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_004_MNB()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_004_MNB() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_updateRequest; + var integer v_aeIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxNumBytes200; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumBytes300; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumBytes = 200 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + //// Create 2 container instances saving 200 bytes of data + + //trigger 1k bytes data storage 200 bytes of data at 100 bytes at time + // Operations to generate charging info - AE2 stores total 200 bytes of data at 100 bytes at time + v_aeIndex := f_getLatestResourceIndex(vc_ae2); + vc_ae2.start(f_cse_createContentAndInstances(200, 100, v_aeIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + // Update ServiceSubscriptionProfile and make maxNumBytes to 300 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumBytes = updatedValue (300 in this case) + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumBytes, 300))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumBytes should be equal to 300"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + + + /** + * @desc Check that the IUT updates successfully the value of the attribute ATTRIBUTE_NAME of the TARGET_RESOURCE_ADDRESS + * resource, when the value provided in the resource representation of the UPDATE request is more than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_004_MND() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_004_MND()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_004_MND() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_updateRequest; + var integer v_aeIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue2; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumNodes3; + var template RequestPrimitive v_createNodeRequest := m_createNodeBase; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumNodes = 2 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + //// Create 1 Node resource under CSEBase + v_createNodeRequest.primitiveContent.node.resourceName := omit; + v_createNodeRequest.from_ := PX_ALLOWED_C_AE_IDS[0]; + vc_ae2.start(f_CSE_DMR_CRE_001(int14, v_createNodeRequest, -));//Node + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Update ServiceSubscriptionProfile and make maxNumNodes to 3 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumNodes = currentNumBytes (1 in this case) + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumNodes, 3))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumNodes should be equal to updated value (3)"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT updates successfully the value of the attribute ATTRIBUTE_NAME of the TARGET_RESOURCE_ADDRESS + * resource, when the value provided in the resource representation of the UPDATE request is more than the current limit. + * + */ + testcase TC_CSE_SSM_SSP_UPD_004_MNU() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSP_UPD_004_MNU()); + v_ae1.done; + } + + function f_CSE_SSM_SSP_UPD_004_MNU() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var RequestPrimitive v_updateRequest; + var integer v_aeIndex := -1; + + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscriptionProfileMaxNumUsers2; + var template RequestPrimitive v_createServiceSubscribedUserProfile := m_createServiceSubscribedUserProfileMaxValue1; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE, Create serviceSubscriptionProfile with maxNumUsers = 1 + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + // register one AE + // TODO: Link this AE to Subscription Profile created above + // NOTE: Its assumed that the CSE has the mapping of this AE with ServiceSubscriptionProfile + vc_ae2.start(f_cse_createResource(int2, m_createAe(vc_aeSimuDesc.appId, omit, PX_ALLOWED_C_AE_IDS[0]), -1)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + + //// Create 1 ServiceSubscriptionUserProfile i.e 1 user associated with this Service Subscription Profile + v_createServiceSubscribedUserProfile.from_ := PX_ALLOWED_C_AE_IDS[0]; + vc_ae2.start(f_cse_createResource(int52, v_createServiceSubscribedUserProfile, v_subscriptionProfileIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Update ServiceSubscriptionProfile and make maxNumUsers to 2 + v_updateRequest := f_getUpdateRequestPrimitive(int11, v_subscriptionProfileIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { + + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": m2mServiceSubscriptionProfile successfully Updated."); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while updating m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + // Verifiy that the ServiceSubscriptionProfile resource has been updated correctly: + // maxNumUsers = 2 + + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_subscriptionProfileIndex); + + if(not(match(vc_primitiveContentRetrievedResource.m2mServiceSubscriptionProfile.maxNumUsers, 2))) { + + setverdict(fail, __SCOPE__&":INFO: Retrieved ServiceSubscriptionProfile maxNumUsers should be equal to updated value (2)"); + + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + + + + + + }// Update + + }// Service_Subscription_Profile + + group Service_Subscribed_App_Rule { + + group g_CSE_SSAR_001 { + + /** + * @desc Check that the IUT successfully performs operations on + * resource seriviceSubscribedAppRule for authorized AE. + * + */ + testcase TC_CSE_SSM_SSAR_001_CRE() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSAR_001_CRE()); + v_ae1.done; + } + + function f_CSE_SSM_SSAR_001_CRE() runs on AeSimu system CseSystem { + + var RequestPrimitive v_request; + var integer v_resourceIndex := -1; + var template RequestPrimitive v_createRequest := m_createServiceSubscribedAppRuleBase; + + // Test component configuration + f_cf01Up(true); + + // Create seriviceSubscribedAppRule under CSEBase + v_request := f_getCreateRequestPrimitive(int19, v_createRequest, -1); + f_send(e_mcaPort, m_request(v_request)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value vc_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Resource type seriviceSubscribedAppRule created successfully"); + f_checkAttributesToBeSaved(int19, v_request, vc_response.primitive.responsePrimitive); + v_resourceIndex := f_setResource(vc_response.primitive.responsePrimitive.primitiveContent, int19, -1); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Wrong response status code"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value vc_response { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while creating resource type seriviceSubscribedAppRule "); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating resource type seriviceSubscribedAppRule" ); + } + } + + //Check to see if the resource is present or not + if (f_cse_isResourcePresent(v_resourceIndex)){ + setverdict(pass, __SCOPE__ & ":INFO: Resource created"); + } else { + setverdict(fail, __SCOPE__ & ":ERROR: Resource not created"); + } + + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT successfully performs operations on + * resource seriviceSubscribedAppRule for authorized AE. + * + */ + testcase TC_CSE_SSM_SSAR_001_RET() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSAR_001_RET()); + v_ae1.done; + } + + function f_CSE_SSM_SSAR_001_RET() runs on AeSimu system CseSystem { + + var RequestPrimitive v_request; + var integer v_serviceSubscribedAppRuleIndex := -1; + var template RequestPrimitive v_createRequest := m_createServiceSubscribedAppRuleBase; + var template PrimitiveContent v_contentResponse; + var MsgIn v_response; + + // Test component configuration + f_cf01Up(true); + + // Create seriviceSubscribedAppRule under CSEBase + v_serviceSubscribedAppRuleIndex := f_cse_createResource(int19, m_createServiceSubscribedAppRuleBase, -1); + + v_contentResponse.serviceSubscribedAppRule := mw_contentServiceSubscribedAppRuleBase; + + // Retrieve v_serviceSubscribedAppRule + f_send(e_mcaPort, m_request(m_retrieve(f_getResourceAddress(v_serviceSubscribedAppRuleIndex), f_getOriginator(-1)))); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2000, v_contentResponse))) -> value v_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": serviceSubscribedAppRule successfully retrived."); + + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2000))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while retrieving serviceSubscribedAppRule with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer from IUT for the last Request!"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT successfully performs operations on + * resource seriviceSubscribedAppRule for authorized AE. + * + */ + testcase TC_CSE_SSM_SSAR_001_UPD() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSAR_001_UPD()); + v_ae1.done; + } + + function f_CSE_SSM_SSAR_001_UPD() runs on AeSimu system CseSystem { + + var integer v_serviceSubscribedAppRuleIndex := -1; + var template RequestPrimitive v_createRequest := m_createServiceSubscribedAppRuleBase; + + var RequestPrimitive v_updateRequest; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscribedAppRule; + + // Test component configuration + f_cf01Up(true); + + // Create serviceSubscribedAppRule under CSEBase + v_serviceSubscribedAppRuleIndex := f_cse_createResource(int19, m_createServiceSubscribedAppRuleBase, -1); + + // Update serviceSubscribedAppRule + v_updateRequest := f_getUpdateRequestPrimitive(int19, v_serviceSubscribedAppRuleIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": serviceSubscribedAppRule successfully updated."); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while retrieving m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Verifiy that the seriviceSubscribedAppRule resource has been updated + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_serviceSubscribedAppRuleIndex); + + if(not(match(v_updateRequestPrimitive.primitiveContent.serviceSubscribedAppRule.allowedApp_IDs, vc_primitiveContentRetrievedResource.serviceSubscribedAppRule.allowedApp_IDs))) { + setverdict(fail, __SCOPE__&":INFO: Retrived ServiceSubscriptionProfile does not match with updated content."); + } else { + setverdict(pass, __SCOPE__ & ": Retrived ServiceSubscriptionProfile matched with updated content."); + } + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT successfully performs operations on resource m2mServiceSubscriptionProfile for authorized AE + * + */ + testcase TC_CSE_SSM_SSAR_001_DEL() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSAR_001_DEL()); + v_ae1.done; + } + + function f_CSE_SSM_SSAR_001_DEL() runs on AeSimu system CseSystem { + + var integer v_serviceSubscribedAppRuleIndex := -1; + var template RequestPrimitive v_createRequest := m_createServiceSubscribedAppRuleBase; + + // Test component configuration + f_cf01Up(true); + + // Create serviceSubscribedAppRule under CSEBase + v_serviceSubscribedAppRuleIndex := f_cse_createResource(int19, m_createServiceSubscribedAppRuleBase, -1); + + // Delete serviceSubscribedAppRule + f_send(e_mcaPort, m_request(m_delete(f_getResourceAddress(v_serviceSubscribedAppRuleIndex), f_getOriginator(v_serviceSubscribedAppRuleIndex)))); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2002))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": v_serviceSubscribedAppRuleIndex successfully deleted."); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2002))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while deleting v_serviceSubscribedAppRuleIndex with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while deleting resource"); + } + } + + f_checkAeSimuStatus(); + + // Verify that m2mServiceSubscriptionProfile is not present + if (f_cse_isResourceNotPresent(-1, f_getResourceName(vc_resourcesList[v_serviceSubscribedAppRuleIndex].resource))){ + setverdict(pass, __SCOPE__ & ":INFO: Resource deleted"); + } else { + setverdict(fail, __SCOPE__ & ":ERROR: Resource not deleted"); + } + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + + + }// g_CSE_SSAR_001 + + }//Service_Subscribed_App_Rule + + group Service_Subscribed_Node { + + group Basic_Operation { + + group g_CSE_SSN_001 { + + + /** + * @desc Check that the IUT successfully performs operations on resource seriviceSubscribedNode for authorized AE + * + */ + testcase TC_CSE_SSM_SSN_001_CRE() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSN_001_CRE()); + v_ae1.done; + } + + function f_CSE_SSM_SSN_001_CRE() runs on AeSimu system CseSystem { + + var integer v_resourceIndex := -1; + var integer v_serviceSubscribedAppRuleIndex, v_subscriptionProfileIndex := -1; + var XSD.ID v_cseId := PX_TS_CSE1.cseId; + + var template ListOfM2MID v_allowedUsers := {""}; + var ListOfM2MID v_allowedAEs := {""} + var NodeID v_nodeID := "urn:gsma:imei:90420156-025763-0"; //Dummy ID + + var RequestPrimitive v_createServiceSubscribedNode; + var template RequestPrimitive v_createServiceSubscribedAppRule; + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; // maxNumAEs 1 + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + v_createServiceSubscribedAppRule := m_createServiceSubscribedAppRule({"None"}, {vc_aeSimuDesc.appId}, v_allowedAEs, valueof(v_allowedUsers)); + // Create AppRule under CSEBase + v_serviceSubscribedAppRuleIndex := f_cse_createResource(int19, v_createServiceSubscribedAppRule); + + // ServiceSubscribedNode as a child of SubscriptionProfile with ruleLinks pointing to SubscribedAppRule + v_createServiceSubscribedNode := m_createServiceSubscribedNodeBase({f_getResourceAddress(v_serviceSubscribedAppRuleIndex)}, v_nodeID, v_cseId); + v_createServiceSubscribedNode := f_getCreateRequestPrimitive(int20, v_createServiceSubscribedNode, v_subscriptionProfileIndex); + + f_send(e_mcaPort, m_request(v_createServiceSubscribedNode)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value vc_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Resource type ServiceSubscribedNode created successfully"); + f_checkAttributesToBeSaved(int11, v_createServiceSubscribedNode, vc_response.primitive.responsePrimitive); + v_resourceIndex := f_setResource(vc_response.primitive.responsePrimitive.primitiveContent, int11, -1); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Wrong response status code"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value vc_response { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while creating resource type ServiceSubscribedNode"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating resource type ServiceSubscribedNode"); + } + } + + //Check to see if the resource is present or not + if (f_cse_isResourcePresent(v_resourceIndex)){ + setverdict(pass, __SCOPE__ & ":INFO: Resource created"); + } else { + setverdict(fail, __SCOPE__ & ":ERROR: Resource not created"); + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT successfully performs operations on resource seriviceSubscribedNode for authorized AE + * + */ + testcase TC_CSE_SSM_SSN_001_RET() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSN_001_RET()); + v_ae1.done; + } + + function f_CSE_SSM_SSN_001_RET() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_serviceSubscribedAppRuleIndex := -1; + var integer v_serviceSubscribedNodeIndex := -1; + var template ListOfM2MID v_allowedUsers := {""}; + var XSD.ID v_cseId := PX_TS_CSE1.cseId; + + var ListOfM2MID v_allowedAEs := {""} + var NodeID v_nodeID := "urn:gsma:imei:90420156-025763-0"; //Dummy ID + + var template PrimitiveContent v_contentResponse; + + var template RequestPrimitive v_createServiceSubscribedNode; + var template RequestPrimitive v_createServiceSubscribedAppRule; + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; // maxNumAEs 1 + + var MsgIn v_response; + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + v_createServiceSubscribedAppRule := m_createServiceSubscribedAppRule({"None"}, {vc_aeSimuDesc.appId}, v_allowedAEs, valueof(v_allowedUsers)); + // Create AppRule under CSEBase + v_serviceSubscribedAppRuleIndex := f_cse_createResource(int19, v_createServiceSubscribedAppRule); + + // ServiceSubscribedNode as a child of SubscriptionProfile with ruleLinks pointing to SubscribedAppRule + v_createServiceSubscribedNode := m_createServiceSubscribedNodeBase({f_getResourceAddress(v_serviceSubscribedAppRuleIndex)}, v_nodeID, v_cseId); + v_serviceSubscribedNodeIndex := f_cse_createResource(int20, v_createServiceSubscribedNode, v_subscriptionProfileIndex); + + v_contentResponse.serviceSubscribedNode := mw_contentServiceSubscribedNodeBase; + + // Retrieve ServiceSubscribedNode + f_send(e_mcaPort, m_request(m_retrieve(f_getResourceAddress(v_serviceSubscribedNodeIndex), f_getOriginator(-1)))); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2000, v_contentResponse))) -> value v_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": ServiceSubscribedNode successfully retrived."); + + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2000))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while retrieving ServiceSubscribedNode with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer from IUT for the last Request!"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT successfully performs operations on resource seriviceSubscribedNode for authorized AE + * + */ + testcase TC_CSE_SSM_SSN_001_UPD() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSN_001_UPD()); + v_ae1.done; + } + + function f_CSE_SSM_SSN_001_UPD() runs on AeSimu system CseSystem { + + var RequestPrimitive v_updateRequest; + var template RequestPrimitive v_updateRequestPrimitive := m_updateServiceSubscribedNode; + + var integer v_subscriptionProfileIndex := -1; + var integer v_serviceSubscribedAppRuleIndex := -1; + var integer v_serviceSubscribedNodeIndex := -1; + var template ListOfM2MID v_allowedUsers := {""}; + var XSD.ID v_cseId := PX_TS_CSE1.cseId; + + var ListOfM2MID v_allowedAEs := {""} + var NodeID v_nodeID := "urn:gsma:imei:90420156-025763-0"; //Dummy ID + + var template PrimitiveContent v_contentResponse; + + var template RequestPrimitive v_createServiceSubscribedNode; + var template RequestPrimitive v_createServiceSubscribedAppRule; + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; // maxNumAEs 1 + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + v_createServiceSubscribedAppRule := m_createServiceSubscribedAppRule({"None"}, {vc_aeSimuDesc.appId}, v_allowedAEs, valueof(v_allowedUsers)); + // Create AppRule under CSEBase + v_serviceSubscribedAppRuleIndex := f_cse_createResource(int19, v_createServiceSubscribedAppRule); + + // ServiceSubscribedNode as a child of SubscriptionProfile with ruleLinks pointing to SubscribedAppRule + v_createServiceSubscribedNode := m_createServiceSubscribedNodeBase({f_getResourceAddress(v_serviceSubscribedAppRuleIndex)}, v_nodeID, v_cseId); + v_serviceSubscribedNodeIndex := f_cse_createResource(int20, v_createServiceSubscribedNode, v_subscriptionProfileIndex); + + // Update ServiceSubscribedNode + v_updateRequest := f_getUpdateRequestPrimitive(int20, v_serviceSubscribedNodeIndex, v_updateRequestPrimitive); + f_send(e_mcaPort, m_request(v_updateRequest)); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": serviceSubscribedAppRule successfully updated."); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2004))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while retrieving m2mServiceSubscriptionProfile with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while retrieving resource"); + } + } + + f_checkAeSimuStatus(); + + // Verifiy that the ServiceSubscribedNode resource has been updated + vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_serviceSubscribedNodeIndex); + + if(not(match(v_updateRequestPrimitive.primitiveContent.serviceSubscribedNode.niddRequired, vc_primitiveContentRetrievedResource.serviceSubscribedNode.niddRequired))) { + setverdict(fail, __SCOPE__&":INFO: Retrived serviceSubscribedNode does not match with updated content."); + } else { + setverdict(pass, __SCOPE__ & ": Retrived serviceSubscribedNode matched with updated content."); + } + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + /** + * @desc Check that the IUT successfully performs operations on resource seriviceSubscribedNode for authorized AE + * + */ + testcase TC_CSE_SSM_SSN_001_DEL() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSN_001_DEL()); + v_ae1.done; + } + + function f_CSE_SSM_SSN_001_DEL() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_serviceSubscribedAppRuleIndex := -1; + var integer v_serviceSubscribedNodeIndex := -1; + var template ListOfM2MID v_allowedUsers := {""}; + var XSD.ID v_cseId := PX_TS_CSE1.cseId; + + var ListOfM2MID v_allowedAEs := {""} + var NodeID v_nodeID := "urn:gsma:imei:90420156-025763-0"; //Dummy ID + + var template PrimitiveContent v_contentResponse; + + var template RequestPrimitive v_createServiceSubscribedNode; + var template RequestPrimitive v_createServiceSubscribedAppRule; + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; // maxNumAEs 1 + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + v_createServiceSubscribedAppRule := m_createServiceSubscribedAppRule({"None"}, {vc_aeSimuDesc.appId}, v_allowedAEs, valueof(v_allowedUsers)); + // Create AppRule under CSEBase + v_serviceSubscribedAppRuleIndex := f_cse_createResource(int19, v_createServiceSubscribedAppRule); + + // ServiceSubscribedNode as a child of SubscriptionProfile with ruleLinks pointing to SubscribedAppRule + v_createServiceSubscribedNode := m_createServiceSubscribedNodeBase({f_getResourceAddress(v_serviceSubscribedAppRuleIndex)}, v_nodeID, v_cseId); + v_serviceSubscribedNodeIndex := f_cse_createResource(int20, v_createServiceSubscribedNode, v_subscriptionProfileIndex); + + // Delete ServiceSubscribedNode + f_send(e_mcaPort, m_request(m_delete(f_getResourceAddress(v_serviceSubscribedNodeIndex), f_getOriginator(v_serviceSubscribedNodeIndex)))); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2002))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": ServiceSubscribedNode successfully deleted."); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2002))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while deleting ServiceSubscribedNode with status code " & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while deleting resource"); + } + } + + f_checkAeSimuStatus(); + + // Verify that ServiceSubscribedNode is not present + if (f_cse_isResourceNotPresent(-1, f_getResourceName(vc_resourcesList[v_serviceSubscribedNodeIndex].resource))){ + setverdict(pass, __SCOPE__ & ":INFO: Resource deleted"); + } else { + setverdict(fail, __SCOPE__ & ":ERROR: Resource not deleted"); + } + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + + + + + + } + + + group Create { + + /** + * @desc Check that the IUT rejects CREATE request If the ruleLinks attribute + * is present in the resource representation, but the CSE-ID attribute + * is not present in the resource representation of <serviceSubscribedNode> resource + * + */ + testcase TC_CSE_SSM_SSN_CRE_001() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_SSM_SSN_CRE_001()); + v_ae1.done; + } + + function f_CSE_SSM_SSN_CRE_001() runs on AeSimu system CseSystem { + + var integer v_subscriptionProfileIndex := -1; + var integer v_serviceSubscribedAppRuleIndex := -1; + var integer v_serviceSubscribedNodeIndex := -1; + var template ListOfM2MID v_allowedUsers := {""}; + + var ListOfM2MID v_allowedAEs := {""} + var NodeID v_nodeID := "urn:gsma:imei:90420156-025763-0"; //Dummy ID + + var template PrimitiveContent v_contentResponse; + + var RequestPrimitive v_createServiceSubscribedNode; + var template RequestPrimitive v_createServiceSubscribedAppRule; + var template RequestPrimitive v_createServiceSubscriptionProfile := m_createM2mServiceSubscriptionProfileMaxValue1; // maxNumAEs 1 + + // Test component configuration + f_cf01Up(true); + + // directly on CSEBase from superAE + v_subscriptionProfileIndex := f_cse_createResource(int11, v_createServiceSubscriptionProfile, -1); + + v_createServiceSubscribedAppRule := m_createServiceSubscribedAppRule({"None"}, {vc_aeSimuDesc.appId}, v_allowedAEs, valueof(v_allowedUsers)); + // Create AppRule under CSEBase + v_serviceSubscribedAppRuleIndex := f_cse_createResource(int19, v_createServiceSubscribedAppRule); + + // ServiceSubscribedNode as a child of SubscriptionProfile with ruleLinks pointing to SubscribedAppRule + // and no CSE-ID + v_createServiceSubscribedNode := m_createServiceSubscribedNodeBase({f_getResourceAddress(v_serviceSubscribedAppRuleIndex)}, v_nodeID, omit); + + v_createServiceSubscribedNode := f_getCreateRequestPrimitive(int20, v_createServiceSubscribedNode, v_subscriptionProfileIndex); + + f_send(e_mcaPort, m_request(v_createServiceSubscribedNode)); + + tc_ac.start; + alt { + // BAD_REQUEST + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4000))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": ServiceSubscribedNode creation successfully rejected with 4000 (BAD_REQUEST)."); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4000))) -> value vc_response{ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Request should be rejected with BAD_REQUEST instead of" & int2str(enum2int(vc_response.primitive.responsePrimitive.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while Creating resource"); + } + } + + f_checkAeSimuStatus(); + + // Postamble + f_cse_postamble_deleteResources(); + + // Tear down + f_cf01Down(); + } + + } + + } + + }//Service_Subscribed_Node + + group SoftwareManagement { /** * @desc Check that the IUT rejects the creation request of <softwareCampaign> resource if target node referenced in softwareTargets attribute does not exist * @@ -11785,7 +16107,7 @@ module OneM2M_Testcases_CSE_Release_4 { f_cf02DownCseSimuMaster(); } // f_CSE_SM_014 - // } End group SoftwareManagement + }// End group SoftwareManagement group Transaction_Management {