diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index fb1fa8f033d3ca12656f80d94b27ee57f1331f42..a951cbdfb56808ebdbbd98881e3b328993160d0a 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -12742,7 +12742,212 @@ module OneM2M_PermutationFunctions { }//end group Non_Blocking_Requests }//end of group Response_Type - + group Interworking_3GPP { + + group device_trigerring { + + function f_CSE_3GPP_TRIG_001(in TriggerPurpose p_triggerPurpose, in template (value) Bytes p_triggerPayload ) runs on ScefSimu system ScefSystem{ + + var integer v_aeIndex := -1; + + var RequestPrimitive v_request; + + //{apiRoot}/3gpp-device-triggering/v1/{scsAsId}/transactions + var OneM2M_Types_3GPP_T8.URI v_requestResourceURI := m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), oct2char(unichar2oct(vc_scefSimuDesc.scefId)) & "/transactions"); + + var template T8Request v_requestPrimitive; + + var template DeviceTriggering v_deviceTriggering := m_deviceTriggering_externalId("externl_id", -, -, 30123, p_triggerPayload, "link"); + var template RequestBodyT8 v_3GPPDeviceTriggeringRequest := {individualDeviceTriggeringTransaction := v_deviceTriggering}; + + var template RequestPrimitive v_createTriggerRequestResource := m_createTriggerRequest; + + v_createTriggerRequestResource.primitiveContent.triggerRequest.triggerPurpose := p_triggerPurpose; //TriggerPurpose TriggerPayload + //int1 establishConnection ---> resource address of the <remoteCSE> or <AE> + //int2 registrationRequest ---> the resource address (triggerInfoAddress) of the <MEFBase> + //int3 executeCRUD ---> the resource address (triggerInfoAddress) of the <cseBase> + //int4 enrolmentRequest ---> the type of CRUDN operation (triggerInfoOperation), the address of the resource that the operation should be performed on (triggerInfoAddress) and the resource type (targetedResourceType) + + + // Test component configuration + f_cf05Up(); + + // Test Body + + // Register AE1 + vc_ae1.start(f_cse_preamble_registerAe()); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); + v_aeIndex := f_getLatestResourceIndex(vc_ae1); + + // TriggerRequest under AE + vc_ae1.start(f_cse_createResource(int47, v_createTriggerRequestResource, v_aeIndex)); + + v_requestPrimitive := mw_t8_request_post(v_requestResourceURI, -, v_3GPPDeviceTriggeringRequest); + + tc_ac.start; + alt{ + [] mcnPortIn.receive(mw_t8Request(v_requestPrimitive)) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": 3GPP Device Triggering received."); + } + [] mcnPortIn.receive(mw_t8Request(?)){ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Other operation received"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer"); + } + } + + // Postamble: NOTE This needs to be done. + //f_cse_postamble_deleteResourcesCSE(); + + //Tear Down + f_cf05Down(); + } // end of function f_CSE_3GPP_TRIG_001 + + function f_CSE_3GPP_TRIG_004(in TriggerStatus p_triggerStatus, in template (value) DeliveryResult p_deliveryResult) runs on ScefSimu system ScefSystem{ + + var integer v_aeIndex := -1, v_triggerRequestIndex := -1; + var PrimitiveContent v_contentTriggerRequest; + var RequestPrimitive v_request; + + //{apiRoot}/3gpp-device-triggering/v1/{scsAsId}/transactions + var OneM2M_Types_3GPP_T8.URI v_requestResourceURI := m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), oct2char(unichar2oct(vc_scefSimuDesc.scefId)) & "/transactions"); + + var template T8Request v_requestPrimitive; + + var template DeviceTriggering v_deviceTriggering := m_deviceTriggering_externalId("externl_id", -, -, 30123, "This is Trigger payload- CAFEDECA", "link"); + var template RequestBodyT8 v_3GPPDeviceTriggeringRequest := {individualDeviceTriggeringTransaction := v_deviceTriggering}; + + var template DeviceTriggering v_deviceTriggeringResponse := m_deviceTriggering_response_delieveryResult(p_deliveryResult, "URI to the resource created by the SCEF",-,-,-,-,-,-); + + var template RequestPrimitive v_createTriggerRequestResource := m_createTriggerRequest; + + v_createTriggerRequestResource.primitiveContent.triggerRequest.triggerPurpose := int1; //int1 establishConnection + + // Test component configuration + f_cf05Up(); + + //Preamble + + // Register AE1 + vc_ae1.start(f_cse_preamble_registerAe()); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); + v_aeIndex := f_getLatestResourceIndex(vc_ae1); + + // TriggerRequest under AE + vc_ae1.start(f_cse_createResource(int47, v_createTriggerRequestResource, v_aeIndex)); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); + v_triggerRequestIndex := f_getLatestResourceIndex(vc_ae1); + + //IUT sent a 3GPP Device Trigger Request + v_requestPrimitive := mw_t8_request_post(v_requestResourceURI, -, v_3GPPDeviceTriggeringRequest); + mcnPortIn.receive(mw_t8Request(v_requestPrimitive)); + + // Test Body + + // SCEF sends Device Triggering response + mcnPort.send(mw_t8Response(mw_t8_response_201_created(-, mw_response_body_individualDeviceTriggering(v_deviceTriggeringResponse)))); + + // Verifiy that the <triggerRequest> resource containing triggerStatus attribute set to p_triggerStatus + v_contentTriggerRequest := f_cse_retrieveResource(v_triggerRequestIndex); + + if(not(match(valueof(v_contentTriggerRequest.triggerRequest.triggerStatus), p_triggerStatus))) { + setverdict(fail, __SCOPE__&":INFO: <triggerRequest> resource doesn't contain triggerStatus attribute set correctly"); + } else { + setverdict(pass, __SCOPE__ & ": Retrived triggerRequest matched with updated content."); + } + + // Postamble: NOTE This needs to be done. + //f_cse_postamble_deleteResourcesCSE(); + + //Tear Down + f_cf05Down(); + } // end of function f_CSE_3GPP_TRIG_004 + + + function f_CSE_3GPP_TRIG_005(in TriggerStatus p_triggerStatus, in template (value) DeliveryResult p_deliveryResult) runs on ScefSimu system ScefSystem{ + + var integer v_aeIndex := -1, v_triggerRequestIndex := -1; + var PrimitiveContent v_contentTriggerRequest; + var RequestPrimitive v_request; + + //{apiRoot}/3gpp-device-triggering/v1/{scsAsId}/transactions + var OneM2M_Types_3GPP_T8.URI v_requestResourceURI := m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), oct2char(unichar2oct(vc_scefSimuDesc.scefId)) & "/transactions"); + + var template T8Request v_requestPrimitive; + + var template DeviceTriggering v_deviceTriggering := m_deviceTriggering_externalId("externl_id", -, -, 30123, "This is Trigger payload- CAFEDECA", "notificationDestination"); + var template RequestBodyT8 v_3GPPDeviceTriggeringRequest := {individualDeviceTriggeringTransaction := v_deviceTriggering}; + + var template DeviceTriggering v_deviceTriggeringResponse := m_deviceTriggering_response_delieveryResult(p_deliveryResult, "URI to the resource created by the SCEF",-,-,-,-,-,-); + + var template RequestPrimitive v_createTriggerRequestResource := m_createTriggerRequest; + + v_createTriggerRequestResource.primitiveContent.triggerRequest.triggerPurpose := int1; //int1 establishConnection + + // Test component configuration + f_cf05Up(); + + //Preamble + + // Register AE1 + vc_ae1.start(f_cse_preamble_registerAe()); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); + v_aeIndex := f_getLatestResourceIndex(vc_ae1); + + // TriggerRequest under AE + vc_ae1.start(f_cse_createResource(int47, v_createTriggerRequestResource, v_aeIndex)); + f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1); + v_triggerRequestIndex := f_getLatestResourceIndex(vc_ae1); + + //IUT sent a 3GPP Device Trigger Request + v_requestPrimitive := mw_t8_request_post(v_requestResourceURI, -, v_3GPPDeviceTriggeringRequest); + mcnPortIn.receive(mw_t8Request(v_requestPrimitive)); + + // Test Body + + // SCEF sends DeviceTriggeringDeliveryReportNotification + mcnPort.send(mw_t8Request(mw_t8_request_post(mw_uri_3gpp_device_triggering(-, "notificationDestination", omit), -, + mw_request_body_deviceTriggeringDeliveryReportNotification(mw_deviceTriggeringDeliveryReportNotification(v_requestResourceURI + "/cf_001" , SUCCESS))))); // deliveryResult SUCCESS, cf_001: Uri of deviceTriggeringTransaction + + tc_ac.start; + alt{ + [] mcnPortIn.receive(mw_t8Response(mw_t8_response_204_no_content)) { //Check if 204 no content is received from IUT + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": 204 no content is received."); + } + [] mcnPortIn.receive(mw_t8Request(?)){ + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Other operation received"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No Answer"); + } + } + + // Verifiy that the <triggerRequest> resource containing triggerStatus attribute set to p_triggerStatus + v_contentTriggerRequest := f_cse_retrieveResource(v_triggerRequestIndex); + + if(not(match(valueof(v_contentTriggerRequest.triggerRequest.triggerStatus), p_triggerStatus))) { + setverdict(fail, __SCOPE__&":INFO: <triggerRequest> resource doesn't contain triggerStatus attribute set correctly"); + } else { + setverdict(pass, __SCOPE__ & ": Retrived triggerRequest matched with updated content."); + } + + // Postamble: NOTE This needs to be done. + //f_cse_postamble_deleteResourcesCSE(); + + //Tear Down + f_cf05Down(); + } // end of function f_CSE_3GPP_TRIG_005 + + + } // end group device_trigerring + } //end group Interworking_3GPP + + }//end group CSE