| /////////////////////////////////////////////////////////////////////////////// |
| // |
| // Copyright (c) 2000-2019 Ericsson Telecom AB |
| // |
| // All rights reserved. This program and the accompanying materials |
| // are made available under the terms of the Eclipse Public License v2.0 |
| // which accompanies this distribution, and is available at |
| // https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html |
| /////////////////////////////////////////////////////////////////////////////// |
| // File: IOT_LGen_Steps.ttcn |
| // Description: |
| // Rev: <RnXnn> |
| // Prodnr: CNL 113 909 |
| // Updated: 2020-02-06 |
| // Contact: http://ttcn.ericsson.se |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| /////////////////////////////////////////////////////////// |
| // Module: IOT_LGen_Steps |
| // |
| // Purpose: |
| // This module contains test step functions for an IoT load generator component |
| // |
| // See also: |
| // <IOT_LGen_Definitions> |
| // |
| // Module depends on: |
| // - <IOT_LGen_Definitions> |
| // - <EPTF_MQTT_LGen_Functions> |
| // - <EPTF_COAP_LGen_Definitions> |
| // - <EPTF_COAP_LGen_Functions> |
| // - <EPTF_LwM2M_LGen_Functions> |
| // - <EPTF_LwM2M_Object_Definitions> |
| // - <EPTF_LwM2M_Object_Functions> |
| // - <EPTF_HTTP_Functions> |
| // - <EPTF_HTTP_Transport_Functions> |
| // - <EPTF_CLL_Common_Definitions> |
| // - <EPTF_CLL_ExecCtrlClient_Functions> |
| // - <EPTF_CLL_LGenBase_Definitions> |
| // - <EPTF_CLL_LGenBase_StepFunctions> |
| // - <EPTF_CLL_LGenBase_ConfigFunctions> |
| // - <EPTF_CLL_Variable_Definitions> |
| // - <EPTF_CLL_Variable_Functions> |
| // |
| // Test Steps [Generic]: |
| // testcase finished - <f_IOT_LGen_step_tcFinished_withVerdict>, <c_IOT_stepName_tcFinished_withVerdict> |
| // print - <f_IOT_LGen_step_print_stringParam>, <c_IOT_stepName_print_stringParam> |
| // RND generator - <f_IOT_LGen_step_genRndValue_varParams>, <c_IOT_stepName_genRndValue_varParams> |
| // |
| // Test Steps [COAP]: |
| // set local address - <f_IOT_LGen_step_COAP_setLocalAddress_byVars>, <c_IOT_stepName_COAP_setLocalAddress_byVars> |
| // |
| // Test Steps [LwM2M]: |
| // set client name - <f_IOT_LGen_step_LwM2M_setClientNameInRegister>, <c_IOT_stepName_LwM2M_setClientNameInRegister> |
| // <f_IOT_LGen_step_LwM2M_setClientNameInRegister_stringVar>, <c_IOT_stepName_LwM2M_setClientNameInRegister_stringVar> |
| // |
| // Test Steps [MQTT]: |
| // set local address - <f_IOT_LGen_step_MQTT_setLocalAddress_byVars>, <c_IOT_stepName_MQTT_setLocalAddress_byVars> |
| // <f_IOT_LGen_step_MQTT_setClientId_stringParam>, <c_IOT_stepName_MQTT_setClientId_stringParam> |
| // |
| // Test Steps [HTTP]: |
| // init entity context - <f_IOT_LGen_step_HTTP_initEntityContext>, <c_IOT_stepName_HTTP_initEntityContext> |
| // open connection - <f_IOT_LGen_step_HTTP_openConnection_byVars>, <c_IOT_stepName_HTTP_openConnection_byVars> |
| // close connection - <f_IOT_LGen_step_HTTP_closeConnection>, <c_IOT_stepName_HTTP_closeConnection> |
| // set HTTP method - <f_IOT_LGen_step_HTTP_setMethod_stringParam>, <c_IOT_stepName_HTTP_setMethod_stringParam> |
| // set HTTP URI - <f_IOT_LGen_step_HTTP_setUri_stringParam>, <c_IOT_stepName_HTTP_addToUri_stringParam> |
| // <f_IOT_LGen_step_HTTP_addToUri_byVars>, <c_IOT_stepName_HTTP_addToUri_byVars> |
| // add HTTP Host header - <f_IOT_LGen_step_HTTP_addHostHeader_byVars>, <c_IOT_stepName_HTTP_addHostHeader_byVars> |
| // |
| // Test Steps [Leshan]: |
| // get client name - <f_IOT_LGen_step_Leshan_getClientFromResponse_intoVar>, <c_IOT_stepName_Leshan_getClientFromResponse_intoVar> |
| // |
| // Test Steps [RegDereg FSM]: |
| // init resource values - <f_IOT_LGen_step_FSM_RegDereg_initResourceValues>, <c_IOT_stepName_FSM_RegDereg_initResourceValues> |
| // |
| // Test Steps [SimDev FSM]: |
| // create resources - <f_IOT_LGen_step_FSM_SimDevice_createResources>, <c_IOT_stepName_FSM_SimDevice_createResources> |
| // init resource values - <f_IOT_LGen_step_FSM_SimDevice_initResourceValues>, <c_IOT_stepName_FSM_SimDevice_initResourceValues> |
| // init transport - <f_IOT_LGen_step_FSM_SimDevice_initTransport_boolVar>, <c_IOT_stepName_FSM_SimDevice_initTransport_boolVar> |
| // update resource values - <f_IOT_LGen_step_FSM_SimDevice_updateResourceValues>, <c_IOT_stepName_FSM_SimDevice_updateResourceValues> |
| // handle EXECUTE - <f_IOT_LGen_step_FSM_SimDevice_handleExecute>, <c_IOT_stepName_FSM_SimDevice_handleExecute> |
| /////////////////////////////////////////////////////////////// |
| module IOT_LGen_Steps { |
| |
| import from JSON_Types all; |
| import from IOT_LGen_Definitions all; |
| import from EPTF_COAP_LGen_Definitions all; |
| import from EPTF_COAP_LGen_Functions all; |
| import from EPTF_MQTT_LGen_Functions all; |
| import from EPTF_LwM2M_LGen_Functions all; |
| import from EPTF_LwM2M_Object_Definitions all; |
| import from EPTF_LwM2M_Object_Functions all; |
| import from LightweightM2M_Types all; |
| import from EPTF_HTTP_Functions all; |
| import from EPTF_HTTP_Transport_Functions all; |
| |
| import from EPTF_CLL_Common_Definitions all; |
| import from EPTF_CLL_Variable_Definitions all; |
| import from EPTF_CLL_Variable_Functions all; |
| import from EPTF_CLL_LGenBase_Definitions all; |
| import from EPTF_CLL_LGenBase_StepFunctions all; |
| import from EPTF_CLL_LGenBase_ConfigFunctions all; |
| import from EPTF_CLL_ExecCtrlClient_Functions all; |
| |
| ////////////////////// |
| // Generic |
| ////////////////////// |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_tcFinished_withVerdict |
| // |
| // Purpose: |
| // Charstring constant for the RIoT test case finished test step |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_tcFinished_withVerdict> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_tcFinished_withVerdict := "IOT App: tcFinished_withVerdict"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_print_stringParam |
| // |
| // Purpose: |
| // Charstring constant for the RIoT print string test step |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_print_stringParam> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_print_stringParam := "IOT App: print_stringParam"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_genRndValue_varParams |
| // |
| // Purpose: |
| // Charstring constant for the RIoT random number generator test step |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_genRndValue_varParams> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_genRndValue_varParams := "IOT App: genRndValue_varParams"; |
| |
| ////////////////////// |
| // COAP |
| ////////////////////// |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_COAP_setLocalAddress_byVars |
| // |
| // Purpose: |
| // Charstring constant for setting the COAP local address test step |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_COAP_setLocalAddress_byVars> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_COAP_setLocalAddress_byVars := "IOT App COAP: setLocalAddress_byVars"; |
| |
| ////////////////////// |
| // MQTT |
| ////////////////////// |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_MQTT_setLocalAddress_byVars |
| // |
| // Purpose: |
| // Charstring constant for setting the MQTT local address test step |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_MQTT_setLocalAddress_byVars> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_MQTT_setLocalAddress_byVars := "IOT App MQTT: setLocalAddress_byVars"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_MQTT_setClientId_stringParam |
| // |
| // Purpose: |
| // Charstring constant for the test step that sets the MQTT client id |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_MQTT_setClientId_stringParam> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_MQTT_setClientId_stringParam := "IOT App MQTT: setClientId_stringParam"; |
| |
| ////////////////////// |
| // LwM2M |
| ////////////////////// |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_LwM2M_setClientNameInRegister |
| // |
| // Purpose: |
| // Charstring constant for the test step that sets the LwM2M endpoint name in the Register message |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_LwM2M_setClientNameInRegister> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_LwM2M_setClientNameInRegister := "IOT App LwM2M: setClientNameInRegister"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_LwM2M_setClientNameInRegister_stringVar |
| // |
| // Purpose: |
| // Charstring constant for the test step that sets the LwM2M endpoint name in the Register message |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_LwM2M_setClientNameInRegister_stringVar> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_LwM2M_setClientNameInRegister_stringVar := "IOT App LwM2M: setClientNameInRegister_stringVar"; |
| |
| ////////////////////// |
| // HTTP |
| ////////////////////// |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_HTTP_initEntityContext |
| // |
| // Purpose: |
| // Charstring constant for the test step that initializes the HTTP entity context |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_HTTP_initEntityContext> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_HTTP_initEntityContext := "IOT App HTTP: initEntityContext"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_HTTP_openConnection_byVars |
| // |
| // Purpose: |
| // Charstring constant for the test step that opens an HTTP connection |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_HTTP_openConnection_byVars> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_HTTP_openConnection_byVars := "IOT App HTTP: openConnection_byVars"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_HTTP_closeConnection |
| // |
| // Purpose: |
| // Charstring constant for the test step that closes the opened HTTP connection |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_HTTP_closeConnection> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_HTTP_closeConnection := "IOT App HTTP: closeConnection"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_HTTP_setMethod_stringParam |
| // |
| // Purpose: |
| // Charstring constant for the test step that sets the HTTP method for the HTTP message to be sent |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_HTTP_setMethod_stringParam> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_HTTP_setMethod_stringParam := "IOT App HTTP: setMethod_stringParam"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_HTTP_setUri_stringParam |
| // |
| // Purpose: |
| // Charstring constant for the test step that sets the HTTP request URI for the HTTP message to be sent |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_HTTP_setUri_stringParam> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_HTTP_setUri_stringParam := "IOT App HTTP: setUri_stringParam"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_HTTP_addToUri_stringParam |
| // |
| // Purpose: |
| // Charstring constant for the test step that concatenates a string to the HTTP request URI for the HTTP message to be sent |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_HTTP_addToUri_stringParam> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_HTTP_addToUri_stringParam := "IOT App HTTP: addToUri_stringParam"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_HTTP_addToUri_byVars |
| // |
| // Purpose: |
| // Charstring constant for the test step that concatenates a string to the HTTP request URI for the HTTP message to be sent |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_HTTP_addToUri_byVars> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_HTTP_addToUri_byVars := "IOT App HTTP: addToUri_byVars"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_HTTP_addHostHeader_byVars |
| // |
| // Purpose: |
| // Charstring constant for the test step that adds a Host header to the HTTP message to be sent |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_HTTP_addHostHeader_byVars> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_HTTP_addHostHeader_byVars := "IOT App HTTP: addHostHeader_byVars"; |
| |
| ////////////////////// |
| // Leshan |
| ////////////////////// |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_Leshan_getClientFromResponse_intoVar |
| // |
| // Purpose: |
| // Charstring constant for the test step that loads the client name into a variable from an HTTP response |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_Leshan_getClientFromResponse_intoVar> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_Leshan_getClientFromResponse_intoVar := "IOT App Leshan: getClientFromResponse_intoVar"; |
| |
| ////////////////////// |
| // FSM_RegDereg |
| ////////////////////// |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_FSM_RegDereg_initResourceValues |
| // |
| // Purpose: |
| // Charstring constant for the test step that inits the resources of the RegDereg FSM |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_FSM_RegDereg_initResourceValues> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_FSM_RegDereg_initResourceValues := "IOT Fsm LWM2M_RegDereg: initResourceValues"; |
| |
| ////////////////////// |
| // FSM SimDevice |
| ////////////////////// |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_FSM_SimDevice_createResources |
| // |
| // Purpose: |
| // Charstring constant for the test step that creates the resources of the SimDevice FSM |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_FSM_SimDevice_createResources> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_FSM_SimDevice_createResources := "IOT Fsm LWM2M_SimDevice: createResources"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_FSM_SimDevice_initResourceValues |
| // |
| // Purpose: |
| // Charstring constant for the test step that inits the resources of the SimDevice FSM |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_FSM_SimDevice_initResourceValues> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_FSM_SimDevice_initResourceValues := "IOT Fsm LWM2M_SimDevice: initResourceValues"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_FSM_SimDevice_initTransport_boolVar |
| // |
| // Purpose: |
| // Charstring constant for the test step that inits the transport (UDP, or DTLS-PSK) for the SimDev FSM's LwM2M protocol |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_FSM_SimDevice_initTransport_boolVar> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_FSM_SimDevice_initTransport_boolVar := "IOT Fsm LWM2M_SimDevice: initTransport_boolVar"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_FSM_SimDevice_updateResourceValues |
| // |
| // Purpose: |
| // Charstring constant for the test step that updates the resource values of the SimDevice FSM |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_FSM_SimDevice_updateResourceValues> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_FSM_SimDevice_updateResourceValues := "IOT Fsm LWM2M_SimDevice: updateResourceValues"; |
| |
| /////////////////////////////////////////////////////////// |
| // const: c_IOT_stepName_FSM_SimDevice_handleExecute |
| // |
| // Purpose: |
| // Charstring constant for the test step that handles LwM2M EXECUTE requests on the SimDevice FSM |
| // |
| // Related Function: |
| // - <f_IOT_LGen_step_FSM_SimDevice_handleExecute> |
| /////////////////////////////////////////////////////////// |
| const charstring c_IOT_stepName_FSM_SimDevice_handleExecute := "IOT Fsm LWM2M_SimDevice: handleExecute"; |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_declareSteps |
| // |
| // Purpose: |
| // Function to declare all the RIoT application related test steps |
| // |
| // Related Types: |
| // <IOT_LGen_CT> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_declareSteps() |
| runs on IOT_LGen_CT |
| { |
| // COAP |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_COAP_setLocalAddress_byVars, refers(f_IOT_LGen_step_COAP_setLocalAddress_byVars)}); |
| // MQTT |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_MQTT_setLocalAddress_byVars, refers(f_IOT_LGen_step_MQTT_setLocalAddress_byVars)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_MQTT_setClientId_stringParam, refers(f_IOT_LGen_step_MQTT_setClientId_stringParam)}); |
| // LwM2M |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_FSM_RegDereg_initResourceValues, refers(f_IOT_LGen_step_FSM_RegDereg_initResourceValues)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_FSM_SimDevice_createResources, refers(f_IOT_LGen_step_FSM_SimDevice_createResources)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_FSM_SimDevice_initResourceValues, refers(f_IOT_LGen_step_FSM_SimDevice_initResourceValues)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_FSM_SimDevice_initTransport_boolVar, refers(f_IOT_LGen_step_FSM_SimDevice_initTransport_boolVar)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_FSM_SimDevice_updateResourceValues, refers(f_IOT_LGen_step_FSM_SimDevice_updateResourceValues)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_FSM_SimDevice_handleExecute, refers(f_IOT_LGen_step_FSM_SimDevice_handleExecute)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_LwM2M_setClientNameInRegister, refers(f_IOT_LGen_step_LwM2M_setClientNameInRegister)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_LwM2M_setClientNameInRegister_stringVar, refers(f_IOT_LGen_step_LwM2M_setClientNameInRegister_stringVar)}); |
| // HTTP |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_HTTP_initEntityContext, refers(f_IOT_LGen_step_HTTP_initEntityContext)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_HTTP_openConnection_byVars, refers(f_IOT_LGen_step_HTTP_openConnection_byVars)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_HTTP_closeConnection, refers(f_IOT_LGen_step_HTTP_closeConnection)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_HTTP_setMethod_stringParam, refers(f_IOT_LGen_step_HTTP_setMethod_stringParam)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_HTTP_setUri_stringParam, refers(f_IOT_LGen_step_HTTP_setUri_stringParam)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_HTTP_addToUri_stringParam, refers(f_IOT_LGen_step_HTTP_addToUri_stringParam)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_HTTP_addToUri_byVars, refers(f_IOT_LGen_step_HTTP_addToUri_byVars)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_HTTP_addHostHeader_byVars, refers(f_IOT_LGen_step_HTTP_addHostHeader_byVars)}); |
| // Leshan |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_Leshan_getClientFromResponse_intoVar, refers(f_IOT_LGen_step_Leshan_getClientFromResponse_intoVar)}); |
| // Common |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_tcFinished_withVerdict, refers(f_IOT_LGen_step_tcFinished_withVerdict)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_print_stringParam, refers(f_IOT_LGen_step_print_stringParam)}); |
| f_EPTF_LGenBase_declareStep(c_IOT_behaviorType, {c_IOT_stepName_genRndValue_varParams, refers(f_IOT_LGen_step_genRndValue_varParams)}); |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_getEntityIdxinEntityGroup |
| // |
| // Purpose: |
| // Calculates the index of the entity inside its entity group |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step parameters |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_getEntityIdxinEntityGroup(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| return integer |
| { |
| var integer vl_eGrpIdx := f_EPTF_LGenBase_getEGrpOfEntity(pl_ptr.eIdx); |
| var charstring vl_eGrpName := f_EPTF_LGenBase_entityGroupName(vl_eGrpIdx); |
| |
| var integer vl_eRelIdxInEGrp := |
| f_EPTF_ExecCtrlClient_getFirstEntityOffsetInEGrp(vl_eGrpName) + |
| f_EPTF_LGenBase_getERelIdx(pl_ptr.eIdx); |
| |
| //action("========================"); |
| //action("f_EPTF_ExecCtrlClient_getEntityGroupSize: ", f_EPTF_ExecCtrlClient_getEntityGroupSize(eGrpName)); |
| //action("f_EPTF_ExecCtrlClient_getFirstEntityGlobalOffset: ", f_EPTF_ExecCtrlClient_getFirstEntityGlobalOffset(eGrpName)); |
| //action("f_EPTF_ExecCtrlClient_getEntityGroupGlobalOffset: ", f_EPTF_ExecCtrlClient_getEntityGroupGlobalOffset(eGrpName)); |
| //action("f_EPTF_ExecCtrlClient_getFirstEntityOffsetInEGrp: ", f_EPTF_ExecCtrlClient_getFirstEntityOffsetInEGrp(eGrpName)); |
| //action("f_EPTF_LGenBase_getERelIdx(pl_ptr.eIdx): ", f_EPTF_LGenBase_getERelIdx(pl_ptr.eIdx)); |
| //action("eIdx: ", pl_ptr.eIdx); |
| |
| return vl_eRelIdxInEGrp; |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_COAP_setLocalAddress_byVars |
| // |
| // Purpose: |
| // Test step to set the local address in the COAP entity context <COAP_EntityCtx>. Parameters are required. |
| // The function will take the base port number from the parameters and adds the entity's offset |
| // inside its entity group (or in case the 3rd parameter is present, then the value found there) |
| // to get its assigned port number. |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.varNames[0] - *charstring variable* - local host |
| // contextArgs.varNames[1] - *integer variable* - local port |
| // contextArgs.varNames[2] - *integer variable* - offset [optional] |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_COAP_setLocalAddress_byVars> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_COAP_setLocalAddress_byVars(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| // 1st param: localHost: charstring |
| // 2nd param: localPort: integer |
| // 3rd param: offset: integer |
| f_EPTF_COAP_Logging_DEBUG(log2str(%definitionId, pl_ptr)); |
| |
| if (not f_EPTF_COAP_setStepCtx(pl_ptr, v_COAP_ctx)) { return; } |
| |
| var integer vl_eRelIdxInEGrp := f_IOT_LGen_getEntityIdxinEntityGroup(pl_ptr); |
| |
| var EPTF_IntegerList vl_varIds := {}; |
| f_EPTF_LGenBase_fsmVarIdListFromStep(pl_ptr, vl_varIds); |
| |
| if (sizeof(vl_varIds)>=2) |
| { |
| var EPTF_Var_DirectContent vl_host, vl_port, vl_offset; |
| f_EPTF_Var_getContent(vl_varIds[0], vl_host); |
| f_EPTF_Var_getContent(vl_varIds[1], vl_port); |
| if (sizeof(vl_varIds)==3) { f_EPTF_Var_getContent(vl_varIds[2], vl_offset); } |
| else { vl_offset.intVal := vl_eRelIdxInEGrp; } |
| |
| if (not ischosen(vl_host.charstringVal)) { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " first param is not charstring variable!")); |
| return; |
| } |
| if (not ischosen(vl_port.intVal)) { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " second param is not integer variable!")); |
| return; |
| } |
| if (not ischosen(vl_offset.intVal)) { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " third param is not integer variable!")); |
| return; |
| } |
| |
| var integer vl_localPort := vl_port.intVal + vl_offset.intVal; |
| f_EPTF_COAP_Logging_VERBOSE(log2str(%definitionId, " calculated local port ",vl_localPort)); |
| |
| if (vl_localPort < 65535) |
| { |
| f_EPTF_COAP_transportEndpointDB_add( |
| { |
| socket := { |
| hostName := vl_host.charstringVal, |
| portNumber := vl_localPort |
| }, |
| proto := { udp := {} } |
| }, |
| v_COAP_EntityCtxDB.data[v_COAP_ctx.eCtxIdx].localAddressIdx |
| ); |
| } |
| else { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " calculated local port ",vl_localPort," would be larger than 65536! step aborted.")); |
| } |
| } |
| else { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " at least two variables are needed as params!")); |
| } |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_MQTT_setLocalAddress_byVars |
| // |
| // Purpose: |
| // Test step to set the local address in the MQTT entity context. Parameters are required. |
| // The function will take the base port number from the parameters and adds the entity's offset |
| // inside its entity group (or in case the 3rd parameter is present, then the value found there) |
| // to get its assigned port number. |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.varNames[0] - *charstring variable* - local host |
| // contextArgs.varNames[1] - *integer variable* - local port |
| // contextArgs.varNames[2] - *integer variable* - offset [optional] |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_MQTT_setLocalAddress_byVars> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_MQTT_setLocalAddress_byVars(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| // 1st param: localHost: charstring |
| // 2nd param: localPort: integer |
| // 3rd param: offset: integer |
| f_EPTF_MQTT_Logging_DEBUG(log2str(%definitionId, pl_ptr)); |
| |
| if (not f_EPTF_MQTT_setStepCtx(pl_ptr, v_MQTT_ctx)) { return; } |
| |
| var integer vl_eRelIdxInEGrp := f_IOT_LGen_getEntityIdxinEntityGroup(pl_ptr); |
| |
| var EPTF_IntegerList vl_varIds := {}; |
| f_EPTF_LGenBase_fsmVarIdListFromStep(pl_ptr, vl_varIds); |
| |
| if (sizeof(vl_varIds)>=2) |
| { |
| var EPTF_Var_DirectContent vl_host, vl_port, vl_offset; |
| f_EPTF_Var_getContent(vl_varIds[0], vl_host); |
| f_EPTF_Var_getContent(vl_varIds[1], vl_port); |
| if (sizeof(vl_varIds)==3) { f_EPTF_Var_getContent(vl_varIds[2], vl_offset); } |
| else { vl_offset.intVal := vl_eRelIdxInEGrp; } |
| |
| if (not ischosen(vl_host.charstringVal)) { |
| f_EPTF_MQTT_Logging_WARNING(log2str(%definitionId, " first param is not charstring variable!")); |
| return; |
| } |
| if (not ischosen(vl_port.intVal)) { |
| f_EPTF_MQTT_Logging_WARNING(log2str(%definitionId, " second param is not integer variable!")); |
| return; |
| } |
| if (not ischosen(vl_offset.intVal)) { |
| f_EPTF_MQTT_Logging_WARNING(log2str(%definitionId, " third param is not integer variable!")); |
| return; |
| } |
| |
| var integer vl_localPort := vl_port.intVal + vl_offset.intVal; |
| f_EPTF_MQTT_Logging_VERBOSE(log2str(%definitionId, " calculated local port ",vl_localPort)); |
| |
| if (vl_localPort < 65535) |
| { |
| f_EPTF_MQTT_addressDB_add( |
| { |
| hostName := vl_host.charstringVal, |
| portNumber := vl_localPort |
| }, |
| v_MQTT_sessionDB.data[v_MQTT_ctx.sessionIdx].localAddrIdx |
| ); |
| } |
| else { |
| f_EPTF_MQTT_Logging_WARNING(log2str(%definitionId, " calculated local port ",vl_localPort," would be larger than 65536! step aborted.")); |
| } |
| } |
| else { |
| f_EPTF_MQTT_Logging_WARNING(log2str(%definitionId, " at least two variables are needed as params!")); |
| } |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_MQTT_setClientId_stringParam |
| // |
| // Purpose: |
| // Test step to set the client id the MQTT entity context. Parameters are required. |
| // The function will take the entity's offset inside its entity group and concatenate it |
| // to the string parameter of the test step |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.charstringVal - *charstring* - base client id |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_MQTT_setClientId_stringParam> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_MQTT_setClientId_stringParam(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| f_EPTF_MQTT_Logging_DEBUG(log2str(%definitionId)); |
| |
| if (not f_EPTF_MQTT_setStepCtx(pl_ptr, v_MQTT_ctx)) { return; } |
| |
| var charstring vl_clientId := f_EPTF_LGenBase_charstringValOfStep(pl_ptr); |
| |
| var integer vl_eRelIdxInEGrp := f_IOT_LGen_getEntityIdxinEntityGroup(pl_ptr); |
| |
| v_MQTT_sessionDB.data[v_MQTT_ctx.sessionIdx].clientId := vl_clientId & int2str(vl_eRelIdxInEGrp); |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_LwM2M_setClientNameInRegister |
| // |
| // Purpose: |
| // Test step to set the endpoint client name in the LWM2M Register message |
| // that must be previously loaded into *v_LwM2M_msgToSend*. The test step |
| // currently hard codes the base name to "eantwuhDev_" and concatenates the entity's index |
| // inside its entity group |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_LwM2M_setClientNameInRegister> |
| // |
| // Related test steps: |
| // - <f_COAP_step_loadTemplate_byStringId> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_LwM2M_setClientNameInRegister(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| f_EPTF_LwM2M_Logging_DEBUG(log2str(%definitionId)); |
| |
| var integer vl_eRelIdxInEGrp := f_IOT_LGen_getEntityIdxinEntityGroup(pl_ptr); |
| |
| v_LwM2M_msgToSend.pdu.Register.endpointClientName := "eantwuhDev_" & int2str(vl_eRelIdxInEGrp); |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_LwM2M_setClientNameInRegister_stringVar |
| // |
| // Purpose: |
| // Test step to set the endpoint client name in the LWM2M Register message |
| // that must be previously loaded into *v_LwM2M_msgToSend*. The test step |
| // expects the base name to be passed as a string parameter and concatenates the entity's index |
| // inside its entity group |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.varNames[0] - *charstring variable* - base name |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_LwM2M_setClientNameInRegister_stringVar> |
| // |
| // Related test steps: |
| // - <f_COAP_step_loadTemplate_byStringId> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_LwM2M_setClientNameInRegister_stringVar(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| f_EPTF_LwM2M_Logging_DEBUG(log2str(%definitionId)); |
| |
| var EPTF_IntegerList vl_varIds := {}; |
| f_EPTF_LGenBase_fsmVarIdListFromStep(pl_ptr, vl_varIds); |
| |
| if (sizeof(vl_varIds)==1) |
| { |
| var EPTF_Var_DirectContent vl_endpoint; |
| f_EPTF_Var_getContent(vl_varIds[0], vl_endpoint); |
| |
| if (not ischosen(vl_endpoint.charstringVal)) { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " first param is not charstring variable!")); |
| return; |
| } |
| |
| var integer vl_eRelIdxInEGrp := f_IOT_LGen_getEntityIdxinEntityGroup(pl_ptr); |
| v_LwM2M_msgToSend.pdu.Register.endpointClientName := vl_endpoint.charstringVal & int2str(vl_eRelIdxInEGrp); |
| } |
| else { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " one variable (base name) is needed as parameter!")); |
| } |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_HTTP_initEntityContext |
| // |
| // Purpose: |
| // Test step to initialize the HTTP entity context by calling |
| // <f_EPTF_HTTP_setEntityContext>. |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_HTTP_initEntityContext> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_HTTP_initEntityContext(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| f_EPTF_HTTP_setEntityContext( |
| pl_eIdx := pl_ptr.eIdx, |
| pl_method := "GET", pl_uri := "", |
| pl_version_major := 1, pl_version_minor := 1, |
| pl_headerlines := {{"Connection","Keep-Alive"}}, |
| pl_connId := -1, //v_HTTP_portGroupConnectionHandle, |
| pl_authDetails := -, |
| pl_body := { charVal := "" }); |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_HTTP_openConnection_byVars |
| // |
| // Purpose: |
| // Test step to open a TCP connection for HTTP. Requires parameters |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.varNames[0] - *charstring variable* - local host |
| // contextArgs.varNames[1] - *integer variable* - local port |
| // contextArgs.varNames[2] - *charstring variable* - remote host |
| // contextArgs.varNames[3] - *integer variable* - remote port |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_HTTP_openConnection_byVars> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_HTTP_openConnection_byVars(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| // 1st param: localHost: charstring |
| // 2nd param: localPort: integer |
| // 3rd param: remoteHost: charstring |
| // 4th param: remotePort: integer |
| f_EPTF_COAP_Logging_DEBUG(log2str(%definitionId, pl_ptr)); |
| |
| var integer vl_eRelIdxInEGrp := f_IOT_LGen_getEntityIdxinEntityGroup(pl_ptr); |
| |
| var EPTF_IntegerList vl_varIds := {}; |
| f_EPTF_LGenBase_fsmVarIdListFromStep(pl_ptr, vl_varIds); |
| |
| if (sizeof(vl_varIds)==4) |
| { |
| var EPTF_Var_DirectContent vl_localHost, vl_localPort, vl_remoteHost, vl_remotePort; |
| f_EPTF_Var_getContent(vl_varIds[0], vl_localHost); |
| f_EPTF_Var_getContent(vl_varIds[1], vl_localPort); |
| f_EPTF_Var_getContent(vl_varIds[2], vl_remoteHost); |
| f_EPTF_Var_getContent(vl_varIds[3], vl_remotePort); |
| |
| if (not ischosen(vl_localHost.charstringVal)) { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " first param is not charstring variable!")); |
| return; |
| } |
| if (not ischosen(vl_localPort.intVal)) { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " second param is not integer variable!")); |
| return; |
| } |
| if (not ischosen(vl_remoteHost.charstringVal)) { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " third param is not charstring variable!")); |
| return; |
| } |
| if (not ischosen(vl_remotePort.intVal)) { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " fourth param is not integer variable!")); |
| return; |
| } |
| |
| var integer vl_clientPort := vl_localPort.intVal + vl_eRelIdxInEGrp; |
| f_EPTF_COAP_Logging_VERBOSE(log2str(%definitionId, " calculated local port ", vl_clientPort)); |
| |
| if (vl_clientPort < 65535) |
| { |
| var integer vl_portGroupId := f_EPTF_HTTP_LocalTransport_newPort({ |
| name := "httpPort_"&int2str(vl_eRelIdxInEGrp), |
| localHostInformation := { vl_localHost.charstringVal, vl_clientPort}, |
| remoteHostInformation := { vl_remoteHost.charstringVal, vl_remotePort.intVal}, |
| instantConnOpen := true, |
| instantConnClose := false, |
| useSSL := false, |
| userFunctions := omit |
| }); |
| |
| f_EPTF_HTTP_setEntityContextConnectionId(pl_ptr.eIdx, vl_portGroupId); |
| } |
| else { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " calculated local port ",vl_clientPort," would be larger than 65536! step aborted.")); |
| } |
| } |
| else { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " exactly 4 variables are needed as params!")); |
| } |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_HTTP_closeConnection |
| // |
| // Purpose: |
| // Test step to close an already opened TCP connection for HTTP |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_HTTP_closeConnection> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_HTTP_closeConnection(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| f_EPTF_COAP_Logging_DEBUG(log2str(%definitionId, pl_ptr)); |
| |
| var integer vl_portGroupId := f_EPTF_HTTP_getEntityContextConnectionId(pl_ptr.eIdx); |
| |
| f_EPTF_HTTP_LocalTransport_deletePort(vl_portGroupId); |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_HTTP_setUri_stringParam |
| // |
| // Purpose: |
| // Test step to set a string - specified as a parameter - to the HTTP request URI |
| // of the message to be sent |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.charstringVal - *charstring* - URI to be set |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_HTTP_setUri_stringParam> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_HTTP_setUri_stringParam(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| var charstring vl_param := f_EPTF_LGenBase_charstringValOfStep(pl_ptr); |
| f_EPTF_HTTP_setEntityContextURI(pl_ptr.eIdx, vl_param); |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_HTTP_addToUri_stringParam |
| // |
| // Purpose: |
| // Test step to add a string - specified as a parameter - to the HTTP request URI |
| // of the message to be sent |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.charstringVal - *charstring* - URI part to be concatenated |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_HTTP_addToUri_stringParam> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_HTTP_addToUri_stringParam(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| var charstring vl_param := f_EPTF_LGenBase_charstringValOfStep(pl_ptr); |
| var charstring vl_uri := f_EPTF_HTTP_getEntityContextURI(pl_ptr.eIdx); |
| f_EPTF_HTTP_setEntityContextURI(pl_ptr.eIdx, vl_uri & vl_param); |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_HTTP_addToUri_byVars |
| // |
| // Purpose: |
| // Test step to add a string - specified as variadic parameter - to the HTTP request URI |
| // of the message to be sent |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.varNames[*] - *charstring variable* - string to be added |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_HTTP_addToUri_stringParam> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_HTTP_addToUri_byVars(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| var EPTF_IntegerList vl_varIds := {}; |
| f_EPTF_LGenBase_fsmVarIdListFromStep(pl_ptr, vl_varIds); |
| |
| var EPTF_Var_DirectContent vl_var; |
| var charstring vl_vars := "" |
| |
| for (var integer i:=0; i<sizeof(vl_varIds); i:=i+1) { |
| f_EPTF_Var_getContent(vl_varIds[i], vl_var); |
| if (ischosen(vl_var.charstringVal)) { |
| vl_vars := vl_vars & vl_var.charstringVal; |
| } |
| // Could handle charstring list as well |
| } |
| |
| var charstring vl_uri := f_EPTF_HTTP_getEntityContextURI(pl_ptr.eIdx); |
| f_EPTF_HTTP_setEntityContextURI(pl_ptr.eIdx, vl_uri & vl_vars); |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_HTTP_setMethod_stringParam |
| // |
| // Purpose: |
| // Test step to set the method - specified as a string parameter - of the |
| // HTTP request to be sent |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.charstringVal - *charstring* - method to be set |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_HTTP_setMethod_stringParam> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_HTTP_setMethod_stringParam(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| var charstring vl_param := f_EPTF_LGenBase_charstringValOfStep(pl_ptr); |
| f_EPTF_HTTP_setEntityContextMethod(pl_ptr.eIdx, vl_param); |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_HTTP_addHostHeader_byVars |
| // |
| // Purpose: |
| // Test step to add a Host header to the HTTP messager to be sent. Requires parameters. |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.varNames[0] - *charstring variable* - host name |
| // contextArgs.varNames[1] - *integer variable* - port name |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_HTTP_addHostHeader_byVars> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_HTTP_addHostHeader_byVars(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| // 1st param: remoteHost: charstring |
| // 2nd param: remotePort: integer |
| |
| //f_EPTF_HTTP_setEntityContextMethod(pl_ptr.eIdx, vl_param); |
| |
| var EPTF_IntegerList vl_varIds := {}; |
| f_EPTF_LGenBase_fsmVarIdListFromStep(pl_ptr, vl_varIds); |
| |
| if (sizeof(vl_varIds)==2) |
| { |
| var EPTF_Var_DirectContent vl_host, vl_port; |
| f_EPTF_Var_getContent(vl_varIds[0], vl_host); |
| f_EPTF_Var_getContent(vl_varIds[1], vl_port); |
| |
| if (not ischosen(vl_host.charstringVal)) { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " first param is not charstring variable!")); |
| return; |
| } |
| if (not ischosen(vl_port.intVal)) { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " second param is not integer variable!")); |
| return; |
| } |
| |
| f_EPTF_HTTP_setEntityContextAddCustomHeader(pl_ptr.eIdx, |
| "Host", |
| vl_host.charstringVal & ":" & int2str(vl_port.intVal) |
| ) |
| |
| } |
| else { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " two variables are needed as params!")); |
| } |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_Leshan_getClientFromResponse_intoVar |
| // |
| // Purpose: |
| // Test step to fetch the client name of an HTTP response sent by Leshan |
| // into a variable |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.varNames[0] - *charstring variable* - client name will be loaded here |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_Leshan_getClientFromResponse_intoVar> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_Leshan_getClientFromResponse_intoVar(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| var EPTF_IntegerList vl_varIds := {}; |
| f_EPTF_LGenBase_fsmVarIdListFromStep(pl_ptr, vl_varIds); |
| |
| if (sizeof(vl_varIds)!=1) { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " one variable is needed!")); |
| return; |
| } |
| |
| //action("HTTP resp: ", v_EPTF_HTTP_incomingMessage,"\n"); |
| var JSON_PDU vl_json := dec_JSON(char2oct(v_EPTF_HTTP_incomingMessage.response.body)); |
| //action("JSON resp:" , vl_json,"\n"); |
| |
| var EPTF_CharstringList vl_clients := {}; |
| |
| // Let's fetch the first |
| if (ischosen(vl_json.json_array) and sizeof(vl_json.json_array)>0) { |
| if (ischosen(vl_json.json_array[0].json_object)) { |
| for (var integer valIdx :=0; valIdx<sizeof(vl_json.json_array[0].json_object); valIdx:=valIdx+1) { |
| if (vl_json.json_array[0].json_object[valIdx].json_name == "endpoint") { |
| vl_clients[sizeof(vl_clients)] := unichar2char(vl_json.json_array[0].json_object[valIdx].json_value.json_string); |
| break; |
| } |
| } |
| } |
| } |
| |
| /* |
| if (ischosen(vl_json.json_array)) { |
| for (var integer objIdx:=0; objIdx<sizeof(vl_json.json_array); objIdx:=objIdx+1) { |
| if (ischosen(vl_json.json_array[objIdx].json_object)) { |
| for (var integer valIdx :=0; valIdx<sizeof(vl_json.json_array[objIdx].json_object); valIdx:=valIdx+1) { |
| if (vl_json.json_array[objIdx].json_object[valIdx].json_name == "endpoint") { |
| vl_clients[sizeof(vl_clients)] := vl_json.json_array[objIdx].json_object[valIdx].json_value.json_string; |
| break; |
| } |
| } |
| } |
| } |
| } |
| */ |
| /* |
| JSON resp:= |
| { |
| json_array := |
| { |
| { |
| json_object := |
| { |
| { json_name := "endpoint", json_value := { json_string := "client_0" } }, |
| { json_name := "registrationId", json_value := { json_string := "V18qVv4RL8" } }, |
| { json_name := "registrationDate", json_value := { json_string := "2017-02-01T14:20:39+01:00" } }, |
| { json_name := "lastUpdate", json_value := { json_string := "2017-02-01T14:20:39+01:00" } }, |
| { json_name := "address", json_value := { json_string := "127.0.0.1:30000" } }, |
| { json_name := "lwM2mVersion", json_value := { json_string := "1.0" } }, |
| { json_name := "lifetime", json_value := { json_number := 30 } }, |
| { json_name := "bindingMode", json_value := { json_string := "U" } }, |
| { json_name := "rootPath", json_value := { json_string := "/" } }, |
| { json_name := "objectLinks", json_value := { |
| json_array := { |
| { json_object := { |
| { json_name := "url", json_value := { json_string := "/3/0" } }, |
| { json_name := "attributes", json_value := { json_object := { } } } |
| } } } |
| } |
| }, |
| { json_name := "secure", json_value := { json_false := { } } }, |
| { json_name := "additionalRegistrationAttributes", json_value := { json_object := { } } } |
| } |
| } |
| } |
| } |
| */ |
| //action("clients: ", vl_clients,"\n"); |
| |
| if (sizeof(vl_clients)>0) |
| { |
| // Selecting and loading the last one: |
| //action("selected client: ", vl_clients[sizeof(vl_clients)-1],"\n"); |
| f_EPTF_Var_setContent(vl_varIds[0], { charstringVal := vl_clients[0]}); |
| } |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_tcFinished_withVerdict |
| // |
| // Purpose: |
| // Test step to set the final verdict reported by the FSM using a verdict variable as parameter. |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.verdict - *verdicttype* - verdict to be reported |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_tcFinished_withVerdict> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_tcFinished_withVerdict(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| var charstring vl_reason := ""; |
| var verdicttype vl_verdict := pass; |
| |
| var charstring vl_behavior := "behavior ["&f_EPTF_LGenBase_bIdx2Str(pl_ptr.reportedEvent.event.bIdx)&"]"; |
| var charstring vl_event := "event ["& |
| f_EPTF_LGenBase_iIdx2Str( |
| pl_ptr.reportedEvent.event.bIdx, |
| pl_ptr.reportedEvent.event.iIdx, |
| f_EPTF_LGenBase_getFsmIndexByCtxIdx(pl_ptr.eIdx, pl_ptr.refContext.fCtxIdx) |
| )&"]"; |
| |
| f_EPTF_LGenBase_verdictOfStep(pl_ptr, vl_verdict, vl_reason); |
| |
| var charstring vl_state := "state ["&f_EPTF_LGenBase_getFsmStateNameByStepArgs(pl_ptr)&"]"; |
| |
| f_EPTF_LGenBase_step_cancelAllTimers(pl_ptr); |
| f_COAP_step_cleanUp(pl_ptr); |
| f_MQTT_step_cleanUp(pl_ptr); |
| f_LwM2M_step_cleanupDevice(pl_ptr); |
| |
| if (vl_verdict == pass) |
| { |
| action("=> pass"); |
| f_EPTF_LGenBase_step_trafficSuccess(pl_ptr); |
| } |
| else if (vl_verdict == fail) |
| { |
| action(vl_state); action(vl_behavior); action(vl_event); |
| action("=> fail"); |
| f_EPTF_LGenBase_step_trafficFailed(pl_ptr); |
| } |
| else if (vl_verdict == inconc) |
| { |
| action(vl_state); action(vl_behavior); action(vl_event); |
| action("=> inconc"); |
| f_EPTF_LGenBase_step_trafficTimeout(pl_ptr); |
| } |
| else if (vl_verdict == error) |
| { |
| action(vl_state); action(vl_behavior); action(vl_event); |
| action("=> error"); |
| f_EPTF_LGenBase_step_trafficError(pl_ptr); |
| } |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_print_stringParam |
| // |
| // Purpose: |
| // Test step to print a string parameter as a TTCN-3 action() statement |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.charstringVal - *charstring* - the string to be printed |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_print_stringParam> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_print_stringParam(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| f_EPTF_MQTT_Logging_DEBUG(log2str(%definitionId)); |
| |
| var charstring vl_toPrint := f_EPTF_LGenBase_charstringValOfStep(pl_ptr); |
| |
| action(vl_toPrint); |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_FSM_RegDereg_initResourceValues |
| // |
| // Purpose: |
| // Test step to init resources of the RegDereg FSM |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_FSM_RegDereg_initResourceValues> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_FSM_RegDereg_initResourceValues(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| f_EPTF_LwM2M_Logging_DEBUG(log2str(%definitionId)); |
| f_EPTF_LwM2M_setStepCtx(pl_ptr, v_LwM2M_ctx); |
| |
| if (v_LwM2M_ctx.deviceIdx >= 0) |
| { |
| f_LwM2M_ObjectDB_setResourceValue( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := c_LwM2M_Device_obj_id, p_objInstId := 0, p_resourceId := c_LwM2M_Device_Manufacturer, |
| p_value := { strValue := "TitanSim" } |
| ); |
| } |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_FSM_SimDevice_createResources |
| // |
| // Purpose: |
| // Test step to create resources of the SimDevice FSM |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_FSM_SimDevice_createResources> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_FSM_SimDevice_createResources(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_FSM_SimDevice_initTransport_boolVar |
| // |
| // Purpose: |
| // Test step to initialize the COAP transport (either UDP, or DTLS-PSK) |
| // of the SimDevice FSM. Requires parameter. |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.varNames[0] - *boolean variable* - will use DTLS-PSK when true, UDP otherwise |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_FSM_SimDevice_initTransport_boolVar> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_FSM_SimDevice_initTransport_boolVar(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| f_EPTF_COAP_Logging_DEBUG(log2str(%definitionId)); |
| |
| if (not f_EPTF_COAP_setStepCtx(pl_ptr, v_COAP_ctx)) { return; } |
| |
| var EPTF_IntegerList vl_varIds := {}; |
| f_EPTF_LGenBase_fsmVarIdListFromStep(pl_ptr, vl_varIds); |
| |
| if (sizeof(vl_varIds)==1) |
| { |
| var EPTF_Var_DirectContent vl_dtlsOn; |
| f_EPTF_Var_getContent(vl_varIds[0], vl_dtlsOn); |
| |
| if (not ischosen(vl_dtlsOn.boolVal)) { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " first param is not boolean variable!")); |
| return; |
| } |
| |
| // If we have to use DTLS |
| if (vl_dtlsOn.boolVal == true) |
| { |
| // We need to adjust the local and remote protocol to dtls |
| if (v_COAP_FsmCtxDB.data[v_COAP_ctx.fsmCtxIdx].remoteAddressIdx >= 0) |
| { |
| v_COAP_transportEndpointDB.data[v_COAP_EntityCtxDB.data[v_COAP_ctx.eCtxIdx].localAddressIdx].proto := |
| { dtls := { udp := {} }}; |
| v_COAP_transportEndpointDB.data[v_COAP_FsmCtxDB.data[v_COAP_ctx.fsmCtxIdx].remoteAddressIdx].proto := |
| { dtls := { udp := {} }}; |
| } |
| // We also need to initialize the DTLS connection: |
| // - we need to set the identity and the keys first into the fsmCtx |
| // we will use the tsp_EPTF_COAP_LGen_psks module par as a base and add the entity index inside the group to create the identity |
| if (sizeof(tsp_EPTF_COAP_LGen_psks) >= 1) |
| { |
| var integer vl_eRelIdxInEGrp := f_IOT_LGen_getEntityIdxinEntityGroup(pl_ptr); |
| v_COAP_FsmCtxDB.data[v_COAP_ctx.fsmCtxIdx].psk.identity := tsp_EPTF_COAP_LGen_psks[0].identity & int2str(vl_eRelIdxInEGrp); |
| v_COAP_FsmCtxDB.data[v_COAP_ctx.fsmCtxIdx].psk.key := tsp_EPTF_COAP_LGen_psks[0].key; |
| f_COAP_step_startDTLS(pl_ptr); |
| } |
| else { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " we want to use the first item in tsp_EPTF_COAP_LGen_psks to generate the identity and key!")); |
| } |
| } |
| // If we use plain UDP |
| else |
| { |
| f_COAP_step_startListening(pl_ptr); |
| } |
| } |
| else { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " one variable (useDTLS) is needed as parameter!")); |
| } |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_FSM_SimDevice_initResourceValues |
| // |
| // Purpose: |
| // Test step to init the resource values of the SimDevice FSM |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_FSM_SimDevice_initResourceValues> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_FSM_SimDevice_initResourceValues(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| f_EPTF_LwM2M_Logging_DEBUG(log2str(%definitionId)); |
| f_EPTF_LwM2M_setStepCtx(pl_ptr, v_LwM2M_ctx); |
| |
| if (v_LwM2M_ctx.deviceIdx >= 0) |
| { |
| var LwM2M_Resource v_res; |
| |
| // Manufacturer |
| f_LwM2M_ObjectDB_setResourceValue( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := c_LwM2M_Device_obj_id, p_objInstId := 0, p_resourceId := c_LwM2M_Device_Manufacturer, |
| p_value := { strValue := "RIoT" } |
| ); |
| |
| // Latitude |
| f_LwM2M_ObjectDB_getResource( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 6, p_objInstId := 0, p_resourceId := 0, |
| p_resource := v_res |
| ); |
| v_res.dataSample := { |
| samplesName := "Latitude", |
| samplesPointer := -1, |
| valuePointer := -1 |
| } |
| f_LwM2M_Resource_setNextDataSample(v_res, v_IOT_LGen_DataSamples_DB); |
| f_LwM2M_ObjectDB_setResource( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 6, p_objInstId := 0, p_resourceId := 0, |
| p_resource := v_res |
| ); |
| /* f_LwM2M_ObjectDB_setResourceValue( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 6, p_objInstId := 0, p_resourceId := 0, |
| p_value := { floatValue := 47.475096 } |
| );*/ |
| |
| //Longitude |
| f_LwM2M_ObjectDB_getResource( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 6, p_objInstId := 0, p_resourceId := 1, |
| p_resource := v_res |
| ); |
| v_res.dataSample := { |
| samplesName := "Longitude", |
| samplesPointer := -1, |
| valuePointer := -1 |
| } |
| f_LwM2M_Resource_setNextDataSample(v_res, v_IOT_LGen_DataSamples_DB); |
| f_LwM2M_ObjectDB_setResource( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 6, p_objInstId := 0, p_resourceId := 1, |
| p_resource := v_res |
| ); |
| /*f_LwM2M_ObjectDB_setResourceValue( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 6, p_objInstId := 0, p_resourceId := 1, |
| p_value := { floatValue := 19.057871 } |
| );*/ |
| |
| // Altitude |
| f_LwM2M_ObjectDB_setResourceValue( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 6, p_objInstId := 0, p_resourceId := 2, |
| p_value := { floatValue := 12.0 } |
| ); |
| |
| // Temperature |
| f_LwM2M_ObjectDB_setResourceValue( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 3303, p_objInstId := 0, p_resourceId := 5700, |
| p_value := { floatValue := 34.35 } |
| ); |
| |
| // Dropped |
| f_LwM2M_ObjectDB_setResourceValue( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 3400, p_objInstId := 0, p_resourceId := 1, |
| p_value := { boolValue := false } |
| ); |
| } |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_FSM_SimDevice_updateResourceValues |
| // |
| // Purpose: |
| // Test step to update the resource values of the SimDevice FSM |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_FSM_SimDevice_updateResourceValues> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_FSM_SimDevice_updateResourceValues(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| f_EPTF_LwM2M_Logging_DEBUG(log2str(%definitionId)); |
| f_EPTF_LwM2M_setStepCtx(pl_ptr, v_LwM2M_ctx); |
| |
| var LwM2M_Resource v_res; |
| |
| ////////////////// |
| // Dropped |
| |
| if( |
| f_LwM2M_ObjectDB_getResource( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 3400, p_objInstId := 0, p_resourceId := 1, |
| p_resource := v_res |
| ) |
| ){ |
| var boolean droppableChanged := false; |
| if (v_res.val.boolValue) { |
| v_res.val.boolValue := false; |
| droppableChanged := true; |
| action("Drop cleared") |
| } |
| else { |
| var float v_rnd := rnd(); |
| if (v_rnd>=0.5) { |
| v_res.val.boolValue := true; |
| droppableChanged := true; |
| action("Dropped: ",v_rnd); |
| } |
| } |
| |
| if (droppableChanged) |
| { |
| f_LwM2M_ObjectDB_setResource( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 3400, p_objInstId := 0, p_resourceId := 1, |
| p_resource := v_res |
| ); |
| f_EPTF_LwM2M_sendNotificationForResource(pl_ptr, v_res); |
| } |
| } |
| |
| ////////////////// |
| // Temperature |
| |
| if ( |
| f_LwM2M_ObjectDB_getResource( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 3303, p_objInstId := 0, p_resourceId := 5700, |
| p_resource := v_res //{ floatValue := int2float(vl_randomVal) } |
| ) |
| ){ |
| v_res.val.floatValue := int2float(32 - 10 +1)*rnd() + 10.0; |
| f_LwM2M_ObjectDB_setResource( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 3303, p_objInstId := 0, p_resourceId := 5700, |
| p_resource := v_res |
| ); |
| f_EPTF_LwM2M_sendNotificationForResource(pl_ptr, v_res); |
| } |
| |
| ////////////////// |
| // Latitude |
| |
| if ( |
| f_LwM2M_ObjectDB_getResource( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 6, p_objInstId := 0, p_resourceId := 0, |
| p_resource := v_res |
| ) |
| ){ |
| f_LwM2M_Resource_setNextDataSample(v_res, v_IOT_LGen_DataSamples_DB); |
| f_LwM2M_ObjectDB_setResource( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 6, p_objInstId := 0, p_resourceId := 0, |
| p_resource := v_res |
| ); |
| f_EPTF_LwM2M_sendNotificationForResource(pl_ptr, v_res); |
| } |
| |
| ////////////////// |
| // Longitude |
| |
| if ( |
| f_LwM2M_ObjectDB_getResource( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 6, p_objInstId := 0, p_resourceId := 1, |
| p_resource := v_res |
| ) |
| ){ |
| f_LwM2M_Resource_setNextDataSample(v_res, v_IOT_LGen_DataSamples_DB); |
| f_LwM2M_ObjectDB_setResource( |
| p_db := v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| p_objId := 6, p_objInstId := 0, p_resourceId := 1, |
| p_resource := v_res |
| ); |
| f_EPTF_LwM2M_sendNotificationForResource(pl_ptr, v_res); |
| } |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_FSM_SimDevice_handleExecute |
| // |
| // Purpose: |
| // Test step to handle incoming LwM2M EXECUTE request in |
| // the SimDevice FSM |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_FSM_SimDevice_handleExecute> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_FSM_SimDevice_handleExecute(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| f_EPTF_LwM2M_Logging_DEBUG(log2str(%definitionId)); |
| f_EPTF_LwM2M_setStepCtx(pl_ptr, v_LwM2M_ctx); |
| |
| if (ischosen(v_LwM2M_msgToProcess.pdu.Execute) and v_LwM2M_ctx.deviceIdx >= 0) |
| { |
| var LwM2M_Resource v_res; |
| var boolean vl_found := false; |
| if (f_LwM2M_ObjectPath_isResource(v_LwM2M_msgToProcess.pdu.Execute.path)) |
| { |
| f_EPTF_LwM2M_Logging_DEBUG(log2str(%definitionId, " Looking up resource")); |
| vl_found := f_LwM2M_ObjectDB_getResource( |
| v_LwM2M_DeviceDB.data[v_LwM2M_ctx.deviceIdx].objects, |
| v_LwM2M_msgToProcess.pdu.Execute.path.objectId, |
| v_LwM2M_msgToProcess.pdu.Execute.path.objectInstanceId, |
| v_LwM2M_msgToProcess.pdu.Execute.path.resourceId, |
| v_res |
| ); |
| f_EPTF_LwM2M_Logging_DEBUG(log2str(%definitionId, " resource found: ", v_res)); |
| |
| action("executed: ", v_res); |
| |
| v_LwM2M_msgToSend.eIdx := v_LwM2M_ctx.eIdx; |
| v_LwM2M_msgToSend.fsmIdx := v_LwM2M_ctx.fsmIdx; |
| v_LwM2M_msgToSend.pdu := |
| { |
| Response := { |
| location := {}, |
| code := 204, |
| contentFormat := omit, |
| resources := {} |
| } |
| } |
| vf_EPTF_LwM2M_Transport_send.apply(v_LwM2M_msgToSend); |
| } |
| else { f_EPTF_LwM2M_Logging_DEBUG(log2str(%definitionId, " Only resource can be executed, ignoring request")); } |
| } |
| else { f_EPTF_LwM2M_Logging_DEBUG(log2str(%definitionId, " not execute pdu, or no device available, returning")); } |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_IOT_LGen_step_genRndValue_varParams |
| // |
| // Purpose: |
| // Test step to generate a random number and load it into an integer variable. |
| // The generated random number will be between two integers provided as parameters |
| // to set the limits for RNG. |
| // |
| // Parameters: |
| // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args |
| // contextArgs.varNames[0] - *in integer variable* - min value |
| // contextArgs.varNames[1] - *in integer variable* - max value |
| // contextArgs.varNames[2] - *out integer variable* - generated value |
| // |
| // Related Constants: |
| // - <c_IOT_stepName_FSM_SimDevice_genRndValue_varParams> |
| /////////////////////////////////////////////////////////// |
| function f_IOT_LGen_step_genRndValue_varParams(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on IOT_LGen_CT |
| { |
| // 1st param: min value (in): integer |
| // 2nd param: max value (in): integer |
| // 3rd param: rnd value (out): integer |
| f_EPTF_COAP_Logging_DEBUG(log2str(%definitionId, pl_ptr)); |
| |
| var EPTF_IntegerList vl_varIds := {}; |
| f_EPTF_LGenBase_fsmVarIdListFromStep(pl_ptr, vl_varIds); |
| |
| if (sizeof(vl_varIds)==3) |
| { |
| var EPTF_Var_DirectContent vl_min, vl_max, vl_rnd; |
| f_EPTF_Var_getContent(vl_varIds[0], vl_min); |
| f_EPTF_Var_getContent(vl_varIds[1], vl_max); |
| f_EPTF_Var_getContent(vl_varIds[2], vl_rnd); |
| |
| if (not ischosen(vl_min.intVal)) { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " first param is not integer variable!")); |
| return; |
| } |
| if (not ischosen(vl_max.intVal)) { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " second param is not integer variable!")); |
| return; |
| } |
| |
| var integer vl_randomVal := float2int(int2float(vl_max.intVal - vl_min.intVal +1)*rnd()) + vl_min.intVal; |
| f_EPTF_COAP_Logging_VERBOSE(log2str(%definitionId, " calculated random value ",vl_randomVal)); |
| |
| f_EPTF_Var_setContent(vl_varIds[2], { intVal := vl_randomVal }); |
| } |
| else { |
| f_EPTF_COAP_Logging_WARNING(log2str(%definitionId, " at least three variables are needed as params!")); |
| } |
| } |
| } |
| |
| // contextArgs.varNames[0] - *in variable* - min value |