| /////////////////////////////////////////////////////////////////////////////// |
| // // |
| // 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 // |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| /////////////////////////////////////////////////////////// |
| // Module: EPTF_ExecCtrl_Test_Functions |
| // |
| // Purpose: |
| // This module contains the functions of the EPTF ExecCtrl test enviroment. |
| // |
| // Module depends on: |
| // <EPTF_CLL_Base_Definitions> |
| // <EPTF_CLL_Base_Functions> |
| // <EPTF_CLL_Common_Definitions> |
| // <EPTF_CLL_LGenBase_Definitions> |
| // <EPTF_CLL_LGenBase_Functions> |
| // <EPTF_CLL_LGenBase_ConfigDefinitions> |
| // <EPTF_CLL_LGenBase_ConfigFunctions> |
| // <EPTF_CLL_LGenBase_PhaseFunctions> |
| // <EPTF_CLL_LGenBase_PhaseDefinitions> |
| // <EPTF_CLL_LGenBase_TrafficFunctions> |
| // <EPTF_CLL_LGenBase_StepFunctions> |
| // <EPTF_CLL_LGenBaseStats_Functions> |
| // <EPTF_CLL_LGenBaseStats_Definitions> |
| // <EPTF_CLL_LoadRegulator_Functions> |
| // <EPTF_CLL_ExecCtrlTimeProfile_Definitions> |
| // <EPTF_CLL_ExecCtrl_Functions> |
| // <EPTF_CLL_ExecCtrl_Definitions> |
| // <EPTF_CLL_HashMapStr2Int_Functions> |
| // <EPTF_CLL_UIHandler_Definitions> |
| // <EPTF_CLL_ExecCtrlUIHandler_Definitions> |
| // <EPTF_CLL_ExecCtrlUIHandler_Functions> |
| // <EPTF_CLL_ExecCtrlClient_Functions> |
| // <EPTF_CLL_ExecCtrl_ScenarioFunctions> |
| // <EPTF_CLL_ExecCtrl_ScenarioDefinitions> |
| // <EPTF_CLL_ExecCtrl_PhaseFunctions> |
| // <EPTF_CLL_UIHandler_WidgetFunctions> |
| // <EPTF_CLL_UIHandlerClient_Functions> |
| // <EPTF_CLL_Variable_Definitions> |
| // <EPTF_CLL_Variable_Functions> |
| // <EPTF_CLL_Logging_Functions> |
| // <EPTF_CLL_StatHandler_Definitions> |
| // |
| // Current Owner: |
| // Balazs Barcsik (EBALBAR) |
| // |
| // Last Review Date: |
| // 2007-xx-xx |
| // |
| // Detailed Comments: |
| // - |
| // |
| /////////////////////////////////////////////////////////////// |
| module EPTF_ExecCtrl_Test_Functions { |
| |
| //========================================================================= |
| // Import Part |
| //========================================================================= |
| |
| import from EPTF_ExecCtrl_Test_Definitions all; |
| |
| import from EPTF_CLL_Base_Definitions all; |
| import from EPTF_CLL_Base_Functions all; |
| import from EPTF_CLL_Common_Definitions all; |
| import from EPTF_CLL_LGenBase_Definitions all; |
| import from EPTF_CLL_LGenBase_Functions all; |
| import from EPTF_CLL_LGenBase_ConfigDefinitions all; |
| import from EPTF_CLL_LGenBase_ConfigFunctions all; |
| import from EPTF_CLL_LGenBase_PhaseFunctions all; |
| import from EPTF_CLL_LGenBase_PhaseDefinitions all; |
| import from EPTF_CLL_LGenBase_TrafficFunctions all; |
| import from EPTF_CLL_LGenBase_StepFunctions all; |
| import from EPTF_CLL_LGenBaseStats_Functions all; |
| import from EPTF_CLL_LGenBaseStats_Definitions all; |
| import from EPTF_CLL_LoadRegulator_Functions all; |
| import from EPTF_CLL_LoadRegulator_Definitions all; |
| import from EPTF_CLL_ExecCtrlTimeProfile_Definitions all; |
| import from EPTF_CLL_LGenBase_EventHandlingFunctions all; |
| import from EPTF_CLL_ExecCtrl_Functions all; |
| import from EPTF_CLL_ExecCtrl_Definitions all; |
| import from EPTF_CLL_ExecCtrlClient_Functions all; |
| import from EPTF_CLL_ExecCtrl_ScenarioFunctions all; |
| import from EPTF_CLL_ExecCtrl_ScenarioDefinitions all; |
| import from EPTF_CLL_ExecCtrl_PhaseDefinitions all; |
| import from EPTF_CLL_ExecCtrl_PhaseFunctions all; |
| import from EPTF_CLL_HashMapStr2Int_Functions all; |
| import from EPTF_CLL_UIHandler_Definitions all; |
| import from EPTF_CLL_ExecCtrlUIHandler_Definitions all; |
| import from EPTF_CLL_ExecCtrlUIHandler_Functions all; |
| import from EPTF_CLL_UIHandler_WidgetFunctions all; |
| import from EPTF_CLL_UIHandler_XULFunctions all; |
| |
| import from EPTF_CLL_UIHandlerClient_Functions all; |
| import from EPTF_CLL_Variable_Definitions all; |
| import from EPTF_CLL_Variable_Functions all; |
| |
| import from EPTF_CLL_StatHandlerClient_Definitions all; |
| |
| import from EPTF_CLL_UIHandlerCLI_Definitions all; |
| import from EPTF_CLL_DataSource_Definitions all; |
| import from EPTF_CLL_DataSource_Functions all; |
| import from EPTF_CLL_DataSourceClient_Functions all; |
| import from EPTF_CLL_StatMeasure_Functions all; |
| import from EPTF_CLL_Logging_Functions all; |
| import from EPTF_CLL_StatHandler_Definitions all; |
| import from TCCConversion_Functions all; |
| import from ttcn_ericsson_se_protocolModules_xtdp_xtdl all; |
| |
| |
| group DefaultLGen { |
| |
| function f_EPTF_ExecCtrl_CLITest_defaultLGenBehaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrlClient_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_defaultFSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_EPTF_ExecCtrl_CLITest_defaultLGenBehaviourWithFSMStats( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrlClient_UIHandler_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_defaultFSMWithFSMStats); |
| f_EPTF_ExecCtrlClient_UIHandler_init_CT(pl_name, pl_execCtrlCompRef,mtc); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_EPTF_ExecCtrl_CLITest_defaultLGenBehaviourWithFSMStatsLive( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrlClient_UIHandler_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_defaultFSMWithFSMStatsLive); |
| f_EPTF_ExecCtrlClient_UIHandler_init_CT(pl_name, pl_execCtrlCompRef,mtc); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_ExecCtrl_Test_createDefaultLGen ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrlClient_CT vl_lgen := EPTF_ExecCtrlClient_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_CLITest_defaultLGenBehaviour("ExecCtrl_DefaultLGen_"&log2str(vl_lgen),self) ); |
| return vl_lgen; |
| } |
| |
| function f_ExecCtrl_Test_createDefaultLGenWithSpeed ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrlClient_CT vl_lgen := EPTF_ExecCtrlClient_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_CLITest_defaultLGenBehaviour("ExecCtrl_DefaultLGen_"&log2str(vl_lgen),self) ); |
| if("LGen2.LGenDefaultPool.localhost" == pl_componentName){ |
| action("Slow is running"); |
| timer t; |
| t.start(10.0); |
| t.timeout; |
| action("Slow ends"); |
| } |
| return vl_lgen; |
| } |
| |
| function f_ExecCtrl_Test_createDefaultLGenWithSpecId ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on ExecCtrlDSClient_Test_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrlClient_CT vl_lgen := EPTF_ExecCtrlClient_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_CLITest_defaultLGenBehaviour("ExecCtrl_DefaultLGen_"&log2str(v_lgenId),self) ); |
| v_lgenId := v_lgenId + 1; |
| return vl_lgen; |
| } |
| |
| function f_ExecCtrl_Test_createDefaultLGenWithSpecIdWithFSMStats ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on ExecCtrlDSClient_Test_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrlClient_UIHandler_CT vl_lgen := EPTF_ExecCtrlClient_UIHandler_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_CLITest_defaultLGenBehaviourWithFSMStats("ExecCtrl_DefaultLGen_"&log2str(v_lgenId),self) ); |
| v_lgenId := v_lgenId + 1; |
| return vl_lgen; |
| } |
| |
| function f_ExecCtrl_Test_createDefaultLGenWithSpecIdWithFSMStatsLive ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on ExecCtrlDSClient_Test_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrlClient_UIHandler_CT vl_lgen := EPTF_ExecCtrlClient_UIHandler_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_CLITest_defaultLGenBehaviourWithFSMStatsLive("ExecCtrl_DefaultLGen_"&log2str(v_lgenId),self) ); |
| v_lgenId := v_lgenId + 1; |
| return vl_lgen; |
| } |
| |
| // const EPTF_ExecCtrl_LGenFunction_Entry c_EPTF_ExecCtrl_defaultLGenCreatorFunction := { |
| // name := "createDefaultLGen", |
| // fn := refers(f_ExecCtrl_Test_createDefaultLGen) |
| // } |
| |
| } // ~group DefaultLGen |
| |
| //========================================================================= |
| // Functions |
| //========================================================================= |
| function f_EPTF_ExecCtrlTest_isWeightedScenariobyName( |
| in charstring pl_eGrpName, |
| in charstring pl_scName) |
| runs on EPTF_LGenBase_CT return boolean |
| { |
| var integer vl_eGrpIdx := f_EPTF_LGenBase_entityGrpNameIndex(pl_eGrpName); |
| f_EPTF_Base_assert(%definitionId&": Invalid entity group name: "&pl_eGrpName,-1 != vl_eGrpIdx); |
| var integer vl_scIdx := f_EPTF_LGenBase_scNameIndexInEG(vl_eGrpIdx, pl_scName); |
| f_EPTF_Base_assert(%definitionId&": Invalid scenario name: "&pl_scName,-1 != vl_scIdx); |
| return f_EPTF_LGenBase_isWeightedScenario(vl_eGrpIdx, vl_scIdx); |
| } |
| /*function f_EPTF_ExecCtrlTest_getWeightedScenarioCps( |
| in charstring pl_eGrpName, |
| in charstring pl_scName) |
| runs on EPTF_LGenBase_CT return float |
| { |
| var float vl_scenCPS := 0.0; |
| var integer vl_eGrpIdx := f_EPTF_LGenBase_entityGrpNameIndex(pl_eGrpName); |
| f_EPTF_Base_assert(%definitionId&": Invalid entity group name: "&pl_eGrpName,-1 != vl_eGrpIdx); |
| var integer vl_scIdx := f_EPTF_LGenBase_scNameIndexInEG(vl_eGrpIdx, pl_scName); |
| f_EPTF_Base_assert(%definitionId&": Invalid scenario name: "&pl_scName,-1 != vl_scIdx); |
| // NOTE/FIXME: f_EPTF_LGenBase_getCPS keeps returning the last non-zero CPS for weighted TCs if the targetCPS was set to 0.0 |
| // for (var integer i := 0; i < sizeof(v_LGenBase_entityGroups[vl_eGrpIdx].scenarios[vl_scIdx].tcIdxList); i := i + 1) { |
| // vl_scenCPS := vl_scenCPS + f_EPTF_LGenBase_getCPS(v_LGenBase_entityGroups[vl_eGrpIdx].scenarios[vl_scIdx].tcIdxList[i]); |
| // } |
| for (var integer i := 0; i < sizeof(v_LGenBase_entityGroups[vl_eGrpIdx].scenarios[vl_scIdx].tcIdxList); i := i + 1) { |
| var integer vl_tcIdx := v_LGenBase_entityGroups[vl_eGrpIdx].scenarios[vl_scIdx].tcIdxList[i]; |
| var charstring vl_varNameBase := f_EPTF_LGenBaseStats_getNamePrefix(pl_eGrpName, pl_scName, v_LGenBase_trafficCases[vl_tcIdx].privateName); |
| var EPTF_Var_DirectContent vl_Var_content; |
| var charstring vl_varName := vl_varNameBase&c_EPTF_LGenBaseStats_nameOfTcLastCps; |
| var integer vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_refreshContent(vl_varID); |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| vl_scenCPS := vl_scenCPS + vl_Var_content.floatVal; |
| } else { |
| log(%definitionId & ": EPTF Variable doesn't exist: ", vl_varName); |
| f_EPTF_Base_stopAll(); |
| } |
| } |
| return vl_scenCPS; |
| }*/ |
| function f_EPTF_ExecCtrlTest_getWeightedScenarioCps( |
| in charstring pl_eGrpName, |
| in charstring pl_scName) |
| runs on EPTF_LGenBase_CT return float { |
| return f_EPTF_LGenBase_getScCpsSoReachByName(pl_eGrpName,pl_scName); |
| } |
| |
| function f_EPTF_ExecCtrl_Regulator_getRegulatorNames() |
| runs on EPTF_ExecCtrl_CT |
| return EPTF_CharstringList |
| { |
| return v_EPTF_ExecCtrl_RegulatorNames; |
| } |
| |
| function f_EPTF_ExecCtrl_Regulator_getRegulatorIdByName( |
| in charstring pl_regulatorName) |
| runs on EPTF_ExecCtrl_CT return integer |
| { |
| var EPTF_CharstringList vl_regulatorNames; |
| vl_regulatorNames := f_EPTF_ExecCtrl_Regulator_getRegulatorNames(); |
| for (var integer i := 0; i < sizeof(vl_regulatorNames); i := i + 1) { |
| |
| if ( vl_regulatorNames[i] == pl_regulatorName ) { |
| return i; |
| } |
| } |
| return -1; |
| } |
| |
| function f_EPTF_ExecCtrl_getScenarioTypeByName(in charstring pl_scenName) runs on EPTF_ExecCtrl_CT return integer { |
| for (var integer i := 0; i < sizeof(v_ExecCtrl_ScenarioDeclarators); i := i + 1) |
| { |
| if(v_ExecCtrl_ScenarioDeclarators[i].name == pl_scenName) { |
| return 1; |
| } |
| } |
| for (var integer i := 0; i < sizeof(v_ExecCtrl_ScenarioDeclarators2); i := i + 1) |
| { |
| if(v_ExecCtrl_ScenarioDeclarators2[i].name == pl_scenName) { |
| return 2; |
| } |
| } |
| for (var integer i := 0; i < sizeof(v_ExecCtrl_ScenarioDeclarators3); i := i + 1) |
| { |
| if(v_ExecCtrl_ScenarioDeclarators3[i].name == pl_scenName) { |
| return 3; |
| } |
| } |
| return -1; |
| |
| } |
| |
| function f_EPTF_ExecCtrl_getScenarioIdxByName(in charstring pl_scenName) runs on EPTF_ExecCtrl_CT return integer |
| { |
| for (var integer i := 0; i < sizeof(v_ExecCtrl_ScenarioDeclarators); i := i + 1) |
| { |
| if(v_ExecCtrl_ScenarioDeclarators[i].name == pl_scenName) { |
| return i; |
| } |
| } |
| for (var integer i := 0; i < sizeof(v_ExecCtrl_ScenarioDeclarators2); i := i + 1) |
| { |
| if(v_ExecCtrl_ScenarioDeclarators2[i].name == pl_scenName) { |
| return i; |
| } |
| } |
| for (var integer i := 0; i < sizeof(v_ExecCtrl_ScenarioDeclarators3); i := i + 1) |
| { |
| if(v_ExecCtrl_ScenarioDeclarators3[i].name == pl_scenName) { |
| return i; |
| } |
| } |
| return -1; |
| } |
| function f_EPTF_ExecCtrl_getTimeProfileDescrByName( |
| in charstring pl_name, |
| out EPTF_ExecCtrl_TimeProfileItemList pl_timeProfile |
| ) runs on EPTF_ExecCtrl_CT |
| { |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_TimeProfileDescrList); i := i + 1) |
| { |
| log("v_EPTF_ExecCtrl_TimeProfileDescrList", v_EPTF_ExecCtrl_TimeProfileDescrList[i]); |
| if (v_EPTF_ExecCtrl_TimeProfileDescrList[i].name == pl_name) |
| { |
| pl_timeProfile := v_EPTF_ExecCtrl_TimeProfileDescrList[i].timeProfileData |
| } |
| |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_getTimeProfileListByName( |
| in charstring pl_name, |
| out EPTF_ExecCtrl_TimeProfileDataList pl_profileList) runs on EPTF_ExecCtrl_CT |
| { |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_TimeProfileList); i := i + 1) |
| { |
| if (v_EPTF_ExecCtrl_TimeProfileList[i].name == pl_name) |
| { |
| pl_profileList := v_EPTF_ExecCtrl_TimeProfileList[i].timeProfileList |
| } |
| |
| } |
| } |
| |
| |
| function f_EPTF_ExecCtrl_set_StartStopScenarioDisable( |
| in EPTF_ExecCtrl_StartStopScenarioDisableItem pl_disable) runs on EPTF_ExecCtrl_CT |
| { |
| v_EPTF_ExecCtrl_StartStopScenarioDisable[sizeof(v_EPTF_ExecCtrl_StartStopScenarioDisable)] := pl_disable; |
| } |
| |
| function f_EPTF_ExecCtrl_set_StartStopTCDisable( |
| in EPTF_ExecCtrl_StartStopTCDisableItem pl_disable) runs on EPTF_ExecCtrl_CT |
| { |
| v_EPTF_ExecCtrl_StartStopTCDisable[sizeof(v_EPTF_ExecCtrl_StartStopTCDisable)] := pl_disable; |
| } |
| |
| function f_EPTF_ExecCtrl_Test_setManualControlTrue() runs on EPTF_ExecCtrl_CT |
| { |
| f_EPTF_ExecCtrl_setManualControl(true); |
| } |
| |
| function f_EPTF_ExecCtrl_Test_setManualControlFalse() runs on EPTF_ExecCtrl_CT |
| { |
| f_EPTF_ExecCtrl_setManualControl(false); |
| } |
| |
| function f_EPTF_ExecCtrl_getManualControl() runs on EPTF_ExecCtrl_CT return boolean |
| { |
| return v_ExecCtrl_manualControl; |
| } |
| |
| function f_EPTF_ExecCtrl_get_Scenarios2Grps( |
| out EPTF_LGenBase_TcMgmt_Scenarios2GrpList pl_scenario2Grps) |
| runs on EPTF_ExecCtrl_CT |
| { |
| pl_scenario2Grps := v_ExecCtrl_Scenarios2Grps; |
| } |
| function f_EPTF_ExecCtrl_get_ScenarioDeclarators( |
| out EPTF_LGenBase_ScenarioDeclaratorList pl_scenarioDeclarators) |
| runs on EPTF_ExecCtrl_CT |
| { |
| pl_scenarioDeclarators := v_ExecCtrl_ScenarioDeclarators; |
| } |
| |
| function f_EPTF_ExecCtrl_get_tcTypeDeclarators(out EPTF_LGenBase_tcTypeDeclaratorList pl_tcTypeDeclarators) |
| runs on EPTF_ExecCtrl_CT |
| { |
| pl_tcTypeDeclarators := v_ExecCtrl_tcTypeDeclarators; |
| } |
| |
| function f_EPTF_ExecCtrl_get_entityGrpDeclarators( |
| out EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList pl_entityGrpDeclarators) |
| runs on EPTF_ExecCtrl_CT |
| { |
| pl_entityGrpDeclarators := v_ExecCtrl_EntityGrpDeclarators; |
| } |
| |
| function f_EPTF_ExecCtrl_get_TimeProfile2TcList( |
| out EPTF_ExecCtrl_TimeProfile2TcList pl_timeProfile2TcList) |
| runs on EPTF_ExecCtrl_CT |
| { |
| pl_timeProfile2TcList := v_EPTF_ExecCtrl_TimeProfile2TcList; |
| } |
| function f_setCPStoClients(inout EPTF_ExecCtrl_Test_SCDataList pl_scens, in integer pl_nofClients) |
| { |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) |
| { |
| for (var integer j := 0; j < sizeof(pl_scens[i].timeProfile); j := j + 1) |
| { |
| pl_scens[i].timeProfile[j].targetValue := pl_scens[i].timeProfile[j].targetValue / int2float(pl_nofClients); |
| } |
| } |
| } |
| function f_setCPSforLGens(in EPTF_ExecCtrl_Test_SCDataList pl_scens, in integer pl_nofLGens) return EPTF_ExecCtrl_Test_SCDataList |
| { |
| var EPTF_ExecCtrl_Test_SCDataList vl_scens := pl_scens; |
| |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) |
| { |
| for (var integer j := 0; j < sizeof(pl_scens[i].timeProfile); j := j + 1) |
| { |
| vl_scens[i].timeProfile[j].targetValue := pl_scens[i].timeProfile[j].targetValue / int2float(pl_nofLGens); |
| } |
| } |
| return vl_scens; |
| } |
| |
| function f_ExecCtrl_Test_initGui() runs on myMTC_UI { |
| |
| var Widgets execCtrlMainWindow := { |
| tabpage := { |
| customclass := omit, |
| disabledongui := omit, |
| id := omit, |
| label_ := "", |
| maxheight := omit, |
| orientation := vertical, |
| tooltiptext := omit, |
| embeddedwidgets := { |
| { |
| { |
| hbox := { |
| customclass := omit, |
| disabled := omit, |
| disabledongui := omit, |
| fixedposition := omit, |
| flex := omit, |
| id := omit, |
| orientation := horizontal, |
| scrollable := omit, |
| embeddedwidgets := { |
| { |
| { |
| hbox := { |
| customclass := omit, |
| disabled := omit, |
| disabledongui := omit, |
| fixedposition := omit, |
| flex := omit, |
| id := omit, |
| orientation := vertical, |
| scrollable := omit, |
| embeddedwidgets := { |
| { |
| { |
| tabpages := { |
| customclass := omit, |
| disabled := omit, |
| disabledongui := omit, |
| flex := omit, |
| id := c_EPTF_GUI_Main_Tabbox_WidgetId, |
| layout := omit, |
| tabpagegroups := { |
| tabpagegroup_list := {} |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| }; |
| |
| var boolean widgetExist := false; |
| log("execCtrlMainWindow: ", execCtrlMainWindow); |
| f_EPTF_UIHandler_XSD_addElementToGui( |
| execCtrlMainWindow, |
| "", |
| widgetExist); |
| } |
| function f_ExecCtrl_Test_storeDataFromTspScenario2Grps() runs on EPTF_ExecCtrl_Test_CT { |
| |
| var integer vl_idx := 0; |
| var EPTF_LGenBase_TcMgmt_Scenarios2GrpList vl_scenario2Grps; |
| f_EPTF_ExecCtrl_get_Scenarios2Grps(vl_scenario2Grps); |
| |
| for (var integer i := 0; i < sizeof(vl_scenario2Grps); i := i + 1) { |
| for (var integer j := 0; j < sizeof(vl_scenario2Grps[i].scenarioNames); j := j + 1) { |
| vl_idx := sizeof(v_EPTF_ExecCtrl_Test_scenarios); |
| v_EPTF_ExecCtrl_Test_scenarios[vl_idx].scenName := vl_scenario2Grps[i].scenarioNames[j]; |
| v_EPTF_ExecCtrl_Test_scenarios[vl_idx].eGrpName := vl_scenario2Grps[i].eGrpName; |
| v_EPTF_ExecCtrl_Test_scenarios[vl_idx].state := -1; |
| v_EPTF_ExecCtrl_Test_scenarios[vl_idx].timeProfile := {}; |
| v_EPTF_ExecCtrl_Test_scenarios[vl_idx].tcName := ""; |
| } |
| } |
| } |
| |
| function f_ExecCtrl_Test_convertScenarioType(in integer pl_type) runs on EPTF_ExecCtrl_Test_CT return charstring { |
| |
| select (pl_type) { |
| case (1) { return ""} |
| case (2) { return "SC2"} |
| case (3) { return "SC3"} |
| } |
| return "Error"; |
| } |
| |
| function f_myApplib_init(in integer pl_eCount := tsp_behaviorTypes[0].eCount) |
| runs on EPTF_ExecCtrlClient_Test_CT { |
| |
| v_myBIdx := f_EPTF_LGenBase_declareBehaviorType(tsp_behaviorTypes[0].bName, pl_eCount, null, null, null); |
| |
| if(//steps |
| c_myApplib_stepIdx_action1 !=f_EPTF_LGenBase_declareStep(tsp_behaviorTypes[0].bName, {c_myApplib_stepName_action1,refers(f_myApplib_step_action1)}) |
| or c_myApplib_stepIdx_action2 !=f_EPTF_LGenBase_declareStep(tsp_behaviorTypes[0].bName, {c_myApplib_stepName_action2,refers(f_myApplib_step_action2)}) |
| |
| //inputs |
| or c_myApplib_inputIdx_doAction1 != f_EPTF_LGenBase_declareFsmEvent(tsp_behaviorTypes[0].bName,c_myApplib_inputName_doAction1)//0 |
| |
| //fsms |
| or c_myApplib_fsmIdx_basicFSM != f_EPTF_LGenBase_declareCompactFsmTable( |
| f_myApplib_return_compactFsm_BasicFSM()) |
| or c_myApplib_fsmIdx_basicFSM2 != f_EPTF_LGenBase_declareCompactFsmTable( |
| f_myApplib_return_compactFsm_BasicFSM2()) |
| ) { |
| //fixme |
| f_EPTF_LGenBase_log(); |
| log("error"); mtc.stop |
| } |
| } |
| |
| function f_myApplibB_init(in integer pl_eCount := tsp_behaviorTypes[1].eCount) |
| runs on EPTF_ExecCtrlClient_Test_CT { |
| |
| v_myBIdx := f_EPTF_LGenBase_declareBehaviorType(tsp_behaviorTypes[1].bName, pl_eCount, null, null, null); |
| } |
| function f_myApplib_step_action1(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| //log(%definitionId, " started..."); |
| v_trafficCount := v_trafficCount + 1; |
| } |
| |
| function f_myApplib_step_action2(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| //log(%definitionId, " started..."); |
| v_trafficCount := v_trafficCount + 1; |
| } |
| |
| function f_myApplib_return_compactFsm_BasicFSM() |
| runs on EPTF_ExecCtrlClient_Test_CT return EPTF_LGenBase_CompactFsmTable |
| { |
| return { |
| name := "DUMMY_FSM", |
| // [0] |
| stateList := {"idle1","waiting1"}, //note: state==idle is unnecessary |
| timerList := {{"T_Progress1",1.0}}, |
| table := { |
| {eventToListen := {c_EPTF_LGenBase_bIdx,c_EPTF_LGenBase_inputIdx_testMgmt_startTC,fsm}, |
| cellRow := { |
| //state[0]==idle |
| {{{refers(f_myApplib_step_action1),{}}, |
| {refers(f_EPTF_LGenBase_step_timerStart),{0}}}, omit,1}, |
| //state[1]==waiting |
| {omit,omit,omit} |
| } |
| }, |
| {eventToListen := {c_EPTF_LGenBase_specialBIdx_timerTimeout,0,fsm}, |
| cellRow := { |
| //state[0]==idle |
| {omit,omit,omit}, |
| //state[1]==waiting |
| {{ |
| {refers(f_EPTF_LGenBase_step_trafficSuccess),{}}}, omit,0} |
| } |
| }, |
| {eventToListen := {c_EPTF_LGenBase_bIdx,c_EPTF_LGenBase_inputIdx_testMgmt_stopTC,fsm}, |
| cellRow := { |
| //state[0]==idle |
| {{ |
| {refers(f_EPTF_LGenBase_step_timerCancelIfRunning),{0}}, |
| {refers(f_EPTF_LGenBase_step_entityStopped),{}} |
| }, omit,0}, |
| //state[1]==waiting |
| {{ |
| {refers(f_EPTF_LGenBase_step_timerCancelIfRunning),{0}}, |
| //{refers(f_EPTF_LGenBase_step_trafficFailed),{}}, |
| {refers(f_EPTF_LGenBase_step_entityStopped),{}} |
| }, omit,0} |
| } |
| }, |
| {eventToListen := {c_EPTF_LGenBase_bIdx,c_EPTF_LGenBase_inputIdx_testMgmt_abortTC,fsm}, |
| cellRow := { |
| //state[0]==idle |
| {{ |
| {refers(f_EPTF_LGenBase_step_timerCancelIfRunning),{0}} |
| }, omit,0}, |
| //state[1]==waiting |
| {{ |
| {refers(f_EPTF_LGenBase_step_timerCancelIfRunning),{0}} |
| }, omit,0} |
| } |
| } |
| } |
| } |
| } |
| |
| function f_myApplib_return_compactFsm_BasicFSM2() |
| runs on EPTF_ExecCtrlClient_Test_CT return EPTF_LGenBase_CompactFsmTable |
| { |
| return { |
| name := "DUMMY_FSM2", |
| // [0] |
| stateList := {"idle","waiting"}, //note: state==idle is unnecessary |
| timerList := {{"T_Progress",1.0}}, |
| table := { |
| {eventToListen := {c_EPTF_LGenBase_bIdx,c_EPTF_LGenBase_inputIdx_testMgmt_startTC,fsm}, |
| cellRow := { |
| //state[0]==idle |
| {{{refers(f_myApplib_step_action2),{}}, |
| {refers(f_EPTF_LGenBase_step_timerStart),{0}}}, omit,1}, |
| //state[1]==waiting |
| {omit,omit,omit} |
| } |
| }, |
| {eventToListen := {c_EPTF_LGenBase_specialBIdx_timerTimeout,0,fsm}, |
| cellRow := { |
| //state[0]==idle |
| {omit,omit,omit}, |
| //state[1]==waiting |
| {{ |
| {refers(f_EPTF_LGenBase_step_trafficSuccess),{}}}, omit,0} |
| } |
| }, |
| {eventToListen := {c_EPTF_LGenBase_bIdx,c_EPTF_LGenBase_inputIdx_testMgmt_stopTC,fsm}, |
| cellRow := { |
| //state[0]==idle |
| {{ |
| {refers(f_EPTF_LGenBase_step_timerCancelIfRunning),{0}}, |
| {refers(f_EPTF_LGenBase_step_entityStopped),{}} |
| }, omit,0}, |
| //state[1]==waiting |
| {{ |
| {refers(f_EPTF_LGenBase_step_timerCancelIfRunning),{0}}, |
| {refers(f_EPTF_LGenBase_step_entityStopped),{}} |
| }, omit,0} |
| } |
| }, |
| {eventToListen := {c_EPTF_LGenBase_bIdx,c_EPTF_LGenBase_inputIdx_testMgmt_abortTC,fsm}, |
| cellRow := { |
| //state[0]==idle |
| {{ |
| {refers(f_EPTF_LGenBase_step_timerCancelIfRunning),{0}} |
| }, omit,0}, |
| //state[1]==waiting |
| {{ |
| {refers(f_EPTF_LGenBase_step_timerCancelIfRunning),{0}} |
| }, omit,0} |
| } |
| } |
| } |
| } |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_init( |
| in charstring pl_selfName, |
| in EPTF_ExecCtrl_Test_CT pl_ExecCtrlRef, in integer pl_eCount := -1, |
| in boolean pl_reportReady := true) |
| runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| if(not v_EPTF_ExecCtrlClient_Test_initialized) { |
| |
| f_EPTF_LGenBase_init(pl_selfName, 0, "DemoEntity#"); |
| if (pl_eCount == -1) { |
| f_myApplib_init(); //behavior type index==1 |
| f_myApplibB_init(); |
| } else { |
| f_myApplib_init(pl_eCount); //behavior type index==1 |
| f_myApplibB_init(pl_eCount); |
| } |
| var integer vl_eTypeIdx; |
| |
| for (var integer i := 0; i < sizeof(tsp_entityTypes); i := i + 1) { |
| vl_eTypeIdx := f_EPTF_LGenBase_declareEntityType(tsp_entityTypes[i].eType, tsp_entityTypes[i].behaviors); |
| } |
| |
| //log("DEBUG: v_LGenBase_entityTypes = ", v_LGenBase_entityTypes); |
| |
| //connect(self:port_A,self:port_A); |
| |
| f_EPTF_ExecCtrlClient_init_CT(pl_selfName, pl_ExecCtrlRef, pl_reportReady); // Only after library init(s) |
| |
| //log("DEBUG: v_LGenBase_behaviorTypes = ", v_LGenBase_behaviorTypes); |
| v_EPTF_ExecCtrlClient_Test_initialized := true; |
| } |
| } |
| |
| function f_ExecCtrlClient_Test_behaviour( in charstring pl_selfName, |
| in EPTF_ExecCtrl_Test_CT pl_ExecCtrlRef, |
| in boolean pl_cleanupNeeded := false, |
| in boolean pl_reportReady := true) |
| runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| f_EPTF_ExecCtrlClient_Test_init(pl_selfName, pl_ExecCtrlRef, -, pl_reportReady); |
| if(pl_cleanupNeeded){ |
| f_EPTF_Base_registerCleanup(refers(f_EPTF_ExecCtrlClient_Test_cleanupWaiting)); |
| } |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_EPTF_ExecCtrlClient_UIHandler_Test_init( |
| in charstring pl_selfName, |
| in EPTF_ExecCtrl_Test_CT pl_ExecCtrlRef) |
| runs on EPTF_ExecCtrlClient_UIHandler_Test_CT |
| { |
| f_EPTF_LGenBase_init(pl_selfName, 0, "DemoEntity#"); |
| f_myApplib_init(); //behavior type index==1 |
| f_myApplibB_init(); |
| var integer vl_eTypeIdx; |
| |
| for (var integer i := 0; i < sizeof(tsp_entityTypes); i := i + 1) { |
| vl_eTypeIdx := f_EPTF_LGenBase_declareEntityType(tsp_entityTypes[i].eType, tsp_entityTypes[i].behaviors); |
| } |
| //log("DEBUG: v_LGenBase_entityTypes = ", v_LGenBase_entityTypes); |
| |
| //connect(self:port_A,self:port_A); |
| |
| f_EPTF_ExecCtrlClient_init_CT(pl_selfName, pl_ExecCtrlRef); // Only after library init(s) |
| |
| //log("DEBUG: v_LGenBase_behaviorTypes = ", v_LGenBase_behaviorTypes); |
| f_EPTF_ExecCtrlClient_UIHandler_init_CT(pl_selfName,pl_ExecCtrlRef,mtc); |
| } |
| |
| function f_EPTF_ExecCtrl_Test_checkInit(in integer pl_nOfClients) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| if (f_EPTF_ExecCtrl_nrOfClients() == pl_nOfClients) { |
| setverdict(pass); |
| } else { |
| //log(%definitionId,": incorrect v_ExecCtrl_nrOfClients value: ", f_EPTF_ExecCtrl_nrOfClients(), " expected: ", pl_nOfClients); |
| setverdict(fail); |
| } |
| |
| f_EPTF_ExecCtrl_Test_checkRegulatorInit( |
| tsp_EPTF_ExecCtrl_RegulatorNames, |
| tsp_EPTF_ExecCtrl_RegulatedItems); |
| // FIXME: update this for R3 |
| |
| /* if (v_ExecCtrl_nrOfPendingResourceStatusMsgs ==pl_nOfClients){ |
| setverdict(pass); |
| } else { |
| log(%definitionId,": incorrect v_ExecCtrl_nrOfPendingResourceStatusMsgs value: ", v_ExecCtrl_nrOfPendingResourceStatusMsgs, " expected: ", pl_nOfClients); |
| setverdict(fail); |
| }*/ |
| |
| /* if (v_ExecCtrl_scenNamesHash != c_ExecCtrl_invalidIdx) |
| {setverdict(pass); |
| } else { |
| log(%definitionId,": incorrect v_ExecCtrl_scenNamesHash", v_ExecCtrl_scenNamesHash, " expected value must be different from it"); |
| setverdict(fail); |
| } |
| if (v_ExecCtrl_scenNames2Hash != c_ExecCtrl_invalidIdx) { |
| setverdict(pass); |
| } else{ |
| log(%definitionId,": incorrect v_ExecCtrl_scenNamesHash", v_ExecCtrl_scenNames2Hash, " expected value must be different from it"); |
| setverdict(fail); |
| } |
| if (v_ExecCtrl_scenNames3Hash != c_ExecCtrl_invalidIdx) { |
| setverdict(pass); |
| } else{ |
| log(%definitionId,": incorrect v_ExecCtrl_scenNamesHash", v_ExecCtrl_scenNames3Hash, " expected value must be different from it"); |
| setverdict(fail); |
| } |
| if (v_ExecCtrl_grpNamesHash != c_ExecCtrl_invalidIdx){ |
| setverdict(pass); |
| } else{ |
| log(%definitionId,": incorrect v_ExecCtrl_scenNamesHash", v_ExecCtrl_grpNamesHash, " expected value must be different from it"); |
| setverdict(fail); |
| }*/ |
| // if (sizeof(v_EPTF_ExecCtrl_ScenarioStateChangedCallbackFns) != 0){ |
| // setverdict(pass); |
| // } else{ |
| // log(%definitionId,": incorrect v_EPTF_ExecCtrl_ScenarioStateChangedCallbackFns value, ", v_EPTF_ExecCtrl_ScenarioStateChangedCallbackFns, " expected value must be nonzero"); |
| // setverdict(fail); |
| // } |
| // if (sizeof(v_EPTF_ExecCtrl_ScenarioStateChangedCallbackFns) != 0) { |
| // setverdict(pass); |
| // } else { |
| // log("error: v_EPTF_ExecCtrl_ScenarioStateChangedCallbackFns is empty"); |
| // setverdict(fail); |
| // } |
| var integer vl_expectedSize:=-1; |
| f_EPTF_ExecCtrl_Test_countExpectedScenario2GrpsSize(vl_expectedSize); |
| // if (sizeof(v_ExecCtrl_Scenarios2Grps) == vl_expectedSize){ |
| // setverdict(pass); |
| // } else{ |
| // log(%definitionId,": incorrect v_ExecCtrl_Scenarios2Grps size, ", sizeof(v_ExecCtrl_Scenarios2Grps), " expected value: ", vl_expectedSize); |
| // setverdict(fail); |
| // } |
| } |
| |
| function f_EPTF_ExecCtrl_Test_init_CT(in integer pl_nOfClients) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| if(v_EPTF_ExecCtrl_Test_initialized) { return;} |
| |
| f_EPTF_ExecCtrl_init_CT("ExecCtrl", pl_nOfClients); |
| v_EPTF_ExecCtrl_Test_statError:=0; |
| v_EPTF_ExecCtrl_Test_scenarios := {}; |
| v_steps := 0; |
| v_EPTF_ExecCtrl_Test_CPSChangedCallback_Called := false; |
| |
| f_EPTF_ExecCtrl_Test_checkInit(pl_nOfClients); |
| } |
| |
| function f_EPTF_ExecCtrl_Test_checkCleanup() runs on EPTF_ExecCtrl_Test_CT |
| { |
| |
| // FIXME: update this for R3 |
| |
| var integer vl_id := 0; |
| if (f_EPTF_str2int_HashMap_GetID(c_EPTF_ExecCtrl_ScenarioGroupInstanceDB_HashName, vl_id) == false) { |
| setverdict(pass); |
| } else { |
| log(%definitionId,": error: ScenarioGroupInstanceDB was not cleaned up, id: ", vl_id); |
| setverdict(fail); |
| } |
| vl_id := 0; |
| if (f_EPTF_str2int_HashMap_GetID(c_EPTF_ExecCtrl_PhaseListDeclaratorDB_HashName, vl_id) == false) { |
| setverdict(pass); |
| } else { |
| log(%definitionId,": error: PhaseListDeclaratorDB was not cleaned up, id: ", vl_id); |
| setverdict(fail); |
| } |
| |
| |
| /* var integer vl_tempHashID; |
| |
| if (sizeof(v_ExecCtrl_LGenResourceDB) == 0) { |
| setverdict(pass); |
| } else { |
| log(%definitionId,": error: v_ExecCtrl_LGenResourceDB not empty: ", v_ExecCtrl_LGenResourceDB); |
| setverdict(fail); |
| } |
| if (not f_EPTF_str2int_HashMap_GetID(c_ExecCtrl_scenarioNames, vl_tempHashID)) { |
| setverdict(pass); |
| } else { |
| log("error: ",c_ExecCtrl_scenarioNames, " hash table not deleted"); |
| setverdict(fail); |
| } |
| if (not f_EPTF_str2int_HashMap_GetID(c_ExecCtrl_scenarioNames2, vl_tempHashID)) { |
| setverdict(pass); |
| } else { |
| log("error: ",c_ExecCtrl_scenarioNames2, " hash table not deleted"); |
| setverdict(fail); |
| } |
| if (not f_EPTF_str2int_HashMap_GetID(c_ExecCtrl_scenarioNames3, vl_tempHashID)) { |
| setverdict(pass); |
| } else { |
| log("error: ",c_ExecCtrl_scenarioNames3, " hash table not deleted"); |
| setverdict(fail); |
| } |
| if (not f_EPTF_str2int_HashMap_GetID(c_ExecCtrl_grpNames, vl_tempHashID)) { |
| setverdict(pass); |
| } else { |
| log("error: ",c_ExecCtrl_grpNames, " hash table not deleted"); |
| setverdict(fail); |
| }*/ |
| } |
| |
| function f_EPTF_ExecCtrl_Test_initScTimeProfileListDB( |
| in EPTF_ExecCtrl_TimeProfileDescrList pl_TimeProfileDescrList, |
| in EPTF_ExecCtrl_TimeProfileList pl_TimeProfileList, |
| in EPTF_ExecCtrl_TimeProfile2TcList pl_TimeProfile2TcList) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| var EPTF_ExecCtrl_TimeProfileItemList vl_timeProfileDescr := {}; |
| var EPTF_ExecCtrl_TimeProfileDataList vl_timeProfileDataList := {}; |
| var EPTF_ExecCtrl_TimeProfile_TCName vl_TcId := { |
| eGrpName := "", |
| scName := "", |
| tcName := "" |
| }; |
| |
| f_EPTF_ExecCtrl_getTimeProfileDescrByName("monday", vl_timeProfileDescr); |
| if(sizeof(vl_timeProfileDescr) != 0){ |
| setverdict(pass); |
| }else { |
| log("Wrong time profile initiation"); |
| setverdict(fail); |
| } |
| |
| f_EPTF_ExecCtrl_getTimeProfileListByName("Days", vl_timeProfileDataList); |
| if (sizeof(vl_timeProfileDataList) != 0){ |
| setverdict(pass); |
| }else { |
| log("Wrong time profile initiation"); |
| setverdict(fail); |
| } |
| |
| } |
| |
| function f_EPTF_ExecCtrl_Test_checkRegulatorInit( |
| in EPTF_CharstringList pl_regulatorNames, |
| in EPTF_ExecCtrl_RegulatedItems pl_regulatorItems) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| for(var integer i := 1; i < sizeof(pl_regulatorNames); i := i +1 ) |
| { |
| var integer vl_regulatorId := |
| f_EPTF_ExecCtrl_Regulator_getRegulatorId(pl_regulatorNames[i]); |
| if (vl_regulatorId != -1) { |
| setverdict(pass); |
| } else { |
| log("Error: There is no regulator Id with this name - ", pl_regulatorNames[i]); |
| setverdict(fail); |
| } |
| } |
| } |
| |
| |
| function f_EPTF_ExecCtrl_Test_countExpectedScenario2GrpsSize( |
| out integer pl_grp) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| pl_grp := 0; |
| for(var integer i:=0; i<sizeof(tsp_LGenBase_Scenarios2Grps); i:=i+1) { |
| for(var integer j:=0; j<sizeof(tsp_LGenBase_Scenarios2Grps[i].scenarioNames);j:=j+1) { |
| pl_grp := pl_grp + 1; |
| } |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_Test_StartScenario( |
| in charstring pl_eGrpName, |
| in charstring pl_scenName, |
| in charstring pl_state) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_Test_scenarios); i := i + 1) { |
| |
| if (pl_eGrpName == v_EPTF_ExecCtrl_Test_scenarios[i].eGrpName and |
| pl_scenName == v_EPTF_ExecCtrl_Test_scenarios[i].scenName and |
| pl_state == "Idle" and |
| v_EPTF_ExecCtrl_Test_scenarios[i].state == -1) |
| { |
| log("-1 -> Idle"); |
| f_EPTF_ExecCtrl_startScenarioOnLGensByName(pl_eGrpName,pl_scenName); |
| v_EPTF_ExecCtrl_Test_scenarios[i].state := c_EPTF_LGenBase_tcStateIdle; |
| } |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_Test_StartTC( |
| in charstring pl_eGrpName, |
| in charstring pl_scenName, |
| in charstring pl_tcName, |
| in charstring pl_state) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| var integer vl_sIdx; |
| var integer vl_tcInstanceIdx; |
| var integer vl_tcIdx; |
| |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_Test_scenarios); i := i + 1) { |
| |
| if (pl_eGrpName == v_EPTF_ExecCtrl_Test_scenarios[i].eGrpName and |
| pl_scenName == v_EPTF_ExecCtrl_Test_scenarios[i].scenName and |
| v_EPTF_ExecCtrl_Test_scenarios[i].tcName == pl_tcName and |
| pl_state == "Idle" and |
| v_EPTF_ExecCtrl_Test_scenarios[i].state == -1) |
| { |
| vl_sIdx := f_EPTF_ExecCtrl_getScenarioIdx(v_EPTF_ExecCtrl_Test_scenarios[i].eGrpName,v_EPTF_ExecCtrl_Test_scenarios[i].scenName); |
| vl_tcInstanceIdx := f_EPTF_ExecCtrl_getTrafficCaseIdx(v_EPTF_ExecCtrl_Test_scenarios[i].eGrpName,v_EPTF_ExecCtrl_Test_scenarios[i].scenName,v_EPTF_ExecCtrl_Test_scenarios[i].tcName); |
| vl_tcIdx := f_EPTF_ExecCtrl_getTcOfScenarioIdx(vl_tcInstanceIdx); |
| log("-1 -> Idle"); |
| f_EPTF_ExecCtrl_startTCOnLGens(vl_sIdx, vl_tcIdx); |
| |
| v_EPTF_ExecCtrl_Test_scenarios[i].state := c_EPTF_LGenBase_tcStateIdle; |
| } |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_Test_UpdateScenarioState( |
| in charstring pl_eGrpName, |
| in charstring pl_scenName, |
| in charstring pl_state) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_Test_scenarios); i := i + 1) { |
| if (pl_eGrpName == v_EPTF_ExecCtrl_Test_scenarios[i].eGrpName and |
| pl_scenName == v_EPTF_ExecCtrl_Test_scenarios[i].scenName) { |
| log("### v_EPTF_ExecCtrl_Test_scenarios[i].scenName: ", v_EPTF_ExecCtrl_Test_scenarios[i].scenName); |
| log("### old v_EPTF_ExecCtrl_Test_scenarios[i].sate: ", v_EPTF_ExecCtrl_Test_scenarios[i].state); |
| if (pl_state == "Off") { |
| v_EPTF_ExecCtrl_Test_scenarios[i].state := c_EPTF_LGenBase_tcStateCount; |
| //log("### new v_EPTF_ExecCtrl_Test_scenarios[i].state: Off"); |
| } else { |
| for(var integer j:=0; j<sizeof(c_EPTF_LGenBase_stateNames); j:=j+1) { |
| if(c_EPTF_LGenBase_stateNames[j] == pl_state) { |
| |
| v_EPTF_ExecCtrl_Test_scenarios[i].state := j; |
| log("### new v_EPTF_ExecCtrl_Test_scenarios[i].state: ", c_EPTF_LGenBase_stateNames[j]); |
| // found := true; |
| } |
| } |
| } |
| } |
| } |
| |
| } |
| |
| function f_EPTF_ExecCtrl_Test_UpdateTCState( |
| in charstring pl_eGrpName, |
| in charstring pl_scenName, |
| in charstring pl_tcName, |
| in charstring pl_state) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_Test_scenarios); i := i + 1) { |
| if (pl_eGrpName == v_EPTF_ExecCtrl_Test_scenarios[i].eGrpName and |
| pl_scenName == v_EPTF_ExecCtrl_Test_scenarios[i].scenName and |
| pl_tcName == v_EPTF_ExecCtrl_Test_scenarios[i].tcName) { |
| log("### v_EPTF_ExecCtrl_Test_scenarios[i].scenName: ", v_EPTF_ExecCtrl_Test_scenarios[i].tcName); |
| log("### old v_EPTF_ExecCtrl_Test_scenarios[i].sate: ", v_EPTF_ExecCtrl_Test_scenarios[i].state); |
| if (pl_state == "Off") { |
| v_EPTF_ExecCtrl_Test_scenarios[i].state := c_EPTF_LGenBase_tcStateCount; |
| log("### new v_EPTF_ExecCtrl_Test_scenarios[i].state: Off"); |
| } else { |
| for(var integer j:=0; j<sizeof(c_EPTF_LGenBase_stateNames); j:=j+1) { |
| if(c_EPTF_LGenBase_stateNames[j] == pl_state) { |
| |
| v_EPTF_ExecCtrl_Test_scenarios[i].state := j; |
| log("### new v_EPTF_ExecCtrl_Test_scenarios[i].state: ", c_EPTF_LGenBase_stateNames[j]); |
| // found := true; |
| } |
| } |
| } |
| } |
| } |
| |
| } |
| |
| function f_EPTF_ExecCtrl_Test_checkScOff(in EPTF_ExecCtrl_Test_SCData pl_scenario) |
| runs on EPTF_ExecCtrl_Test_CT { |
| var integer state := -1; |
| for(var integer i:=0; i<sizeof(v_EPTF_ExecCtrl_Test_scenarios); i:=i+1) { |
| if(pl_scenario.eGrpName == v_EPTF_ExecCtrl_Test_scenarios[i].eGrpName and |
| pl_scenario.scenName == v_EPTF_ExecCtrl_Test_scenarios[i].scenName) { |
| state := v_EPTF_ExecCtrl_Test_scenarios[i].state; |
| } |
| } |
| if(state == c_EPTF_LGenBase_tcStateCount) { |
| setverdict(pass); |
| } else { |
| if(state < c_EPTF_LGenBase_tcStateCount and state > -1) { |
| log(%definitionId,": scenario (", pl_scenario.eGrpName, ",", pl_scenario.scenName, |
| ") state is ", c_EPTF_LGenBase_stateNames[state]); |
| } else { |
| log(%definitionId,": scenario (", pl_scenario.eGrpName, ",", pl_scenario.scenName, |
| ") state is unknown"); |
| |
| |
| } |
| setverdict(fail); |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_Test_checkScRunning_withRetVal(in EPTF_ExecCtrl_Test_SCData pl_scenario) |
| runs on EPTF_ExecCtrl_Test_CT return boolean { |
| var integer state := -2; |
| for(var integer i:=0; i<sizeof(v_EPTF_ExecCtrl_Test_scenarios); i:=i+1) { |
| if(pl_scenario.eGrpName == v_EPTF_ExecCtrl_Test_scenarios[i].eGrpName and |
| pl_scenario.scenName == v_EPTF_ExecCtrl_Test_scenarios[i].scenName) { |
| state := v_EPTF_ExecCtrl_Test_scenarios[i].state; |
| } |
| } |
| if(state == c_EPTF_LGenBase_tcStateRunning) { |
| return true; |
| } |
| |
| return false; |
| } |
| |
| function f_EPTF_ExecCtrl_Test_checkScRunning(in EPTF_ExecCtrl_Test_SCData pl_scenario) |
| runs on EPTF_ExecCtrl_Test_CT { |
| var integer state := -2; |
| for(var integer i:=0; i<sizeof(v_EPTF_ExecCtrl_Test_scenarios); i:=i+1) { |
| if(pl_scenario.eGrpName == v_EPTF_ExecCtrl_Test_scenarios[i].eGrpName and |
| pl_scenario.scenName == v_EPTF_ExecCtrl_Test_scenarios[i].scenName) { |
| state := v_EPTF_ExecCtrl_Test_scenarios[i].state; |
| } |
| } |
| if(state == c_EPTF_LGenBase_tcStateRunning) { |
| setverdict(pass); |
| } else { |
| if(state < c_EPTF_LGenBase_tcStateCount and state > -1) { |
| log(%definitionId,": scenario (", pl_scenario.eGrpName, ",", pl_scenario.scenName, |
| ") state is ", c_EPTF_LGenBase_stateNames[state]); |
| } else { |
| if (state >= c_EPTF_LGenBase_tcStateCount) { |
| log(%definitionId,": scenario (", pl_scenario.eGrpName, ",", pl_scenario.scenName, |
| ") state is Off"); |
| } else { |
| log(%definitionId,": scenario (", pl_scenario.eGrpName, ",", pl_scenario.scenName, |
| ") state is unknown"); |
| |
| } |
| } |
| setverdict(fail); |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_Test_checkScNotRunning(in EPTF_ExecCtrl_Test_SCData pl_scenario) |
| runs on EPTF_ExecCtrl_Test_CT { |
| var integer state := -2; |
| for(var integer i:=0; i<sizeof(v_EPTF_ExecCtrl_Test_scenarios); i:=i+1) { |
| if(pl_scenario.eGrpName == v_EPTF_ExecCtrl_Test_scenarios[i].eGrpName and |
| pl_scenario.scenName == v_EPTF_ExecCtrl_Test_scenarios[i].scenName) { |
| state := v_EPTF_ExecCtrl_Test_scenarios[i].state; |
| } |
| } |
| if(state == -2) { |
| log(%definitionId,": scenario (", pl_scenario.eGrpName, ",", pl_scenario.scenName, |
| ") not found in v_EPTF_ExecCtrl_Test_scenarios: ", v_EPTF_ExecCtrl_Test_scenarios); |
| //setverdict(fail); - done by stopAll |
| f_EPTF_Base_stopAll(); |
| } else if (state == -1) { |
| log("Error: scenario state not initiated."); |
| setverdict(fail); |
| } else if (state >= c_EPTF_LGenBase_tcStateCount) { |
| log("Expected Scenario State: Off"); |
| setverdict(pass); |
| } |
| |
| else if(state != c_EPTF_LGenBase_tcStateRunning) { |
| log("Expected Scenario State: ", c_EPTF_LGenBase_stateNames[state]) |
| setverdict(pass); |
| } else { |
| log(%definitionId,": scenario (", pl_scenario.eGrpName, ",", pl_scenario.scenName, |
| ") is running"); |
| setverdict(fail); |
| } |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_allScenarioCreated() runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| log(%definitionId," Called"); |
| setverdict(pass); |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_scenarioInitialized( |
| in EPTF_LGenBase_Scenario2Grp pl_scenario) runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| log(%definitionId," Called: ", pl_scenario); |
| setverdict(pass); |
| } |
| |
| /* |
| function f_EPTF_ExecCtrl_Test_getTypeFromGroup( |
| in charstring pl_name, |
| in integer pl_nOfClients, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| var charstring vl_grp := "grp0"; |
| var charstring vl_type; |
| |
| t_test.start(pl_time); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| alt { |
| [] t_test.timeout { |
| f_EPTF_ExecCtrl_getTypeFromGroup(vl_grp, vl_type); |
| if (vl_type == "Entity_A") { |
| setverdict(pass); |
| } else { |
| log(vl_type, " - Wrong Entity type for grp0, it must be Entity_A.") |
| setverdict(fail); |
| } |
| repeat; |
| } |
| } |
| }*/ |
| /* |
| function f_EPTF_ExecCtrl_Test_getETypeFromScenario( |
| in charstring pl_name, |
| in integer pl_nOfClients, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| |
| t_test.start(pl_time); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| alt { |
| [] t_test.timeout { |
| |
| if (f_EPTF_ExecCtrl_getETypeFromScenario(0, "Entity_A")) { |
| setverdict(pass); |
| } else { |
| log("Wrong Entity type for Scenario 0") |
| setverdict(fail); |
| } |
| if (f_EPTF_ExecCtrl_getETypeFromScenario(0, "Entity_B")) { |
| log("Wrong Entity type for Scenario 0") |
| setverdict(fail); |
| } else { |
| setverdict(pass); |
| } |
| if (f_EPTF_ExecCtrl_getETypeFromScenario(10, "Entity_B")) { |
| log("Wrong Entity type for Scenario 10") |
| setverdict(fail); |
| } else { |
| setverdict(pass); |
| } |
| repeat; |
| } |
| } |
| }*/ |
| /* |
| function f_EPTF_ExecCtrl_Test_getTcIdx( |
| in charstring pl_name, |
| in integer pl_nOfClients, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| |
| t_test.start(pl_time); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| var integer vl_tcIdx; |
| alt { |
| [] t_test.timeout { |
| vl_tcIdx := f_EPTF_ExecCtrl_getTcIdx("scenario_0", "TC1"); |
| if (vl_tcIdx == 1) { |
| setverdict(pass); |
| } else { |
| log("Wrong TC index in scenario_0: ", vl_tcIdx); |
| setverdict(fail); |
| } |
| vl_tcIdx := f_EPTF_ExecCtrl_getTcIdx("scenario_0_declarator2", "TC0_declarator2"); |
| if (vl_tcIdx == 0) { |
| setverdict(pass); |
| } else { |
| log("Wrong TC index in scenario_0_declarator2: ", vl_tcIdx); |
| setverdict(fail); |
| } |
| vl_tcIdx := f_EPTF_ExecCtrl_getTcIdx("scenario_0_declarator3","TC0_declarator2"); |
| if (vl_tcIdx == 0) { |
| setverdict(pass); |
| } else { |
| log("Wrong TC index in scenario_0_declarator3: ", vl_tcIdx); |
| setverdict(fail); |
| } |
| vl_tcIdx := f_EPTF_ExecCtrl_getTcIdx("scenario_0_declarator3", "TC0_declarator2"); |
| if (vl_tcIdx == 1) { |
| log("Wrong TC index in scenario_0_declarator3: ", vl_tcIdx); |
| setverdict(fail); |
| } else { |
| setverdict(pass); |
| } |
| |
| repeat; |
| } |
| } |
| }*/ |
| |
| function f_EPTF_ExecCtrl_Test_scenarioEnabled( |
| in charstring pl_name, |
| in integer pl_nOfClients, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| t_test.start(pl_time); |
| |
| alt { |
| [] t_test.timeout { |
| if (f_EPTF_ExecCtrl_scenarioEnabled(1)) { |
| setverdict(pass); |
| } else { |
| log("Scenario should be disabled: scenario_0_declarator3"); |
| setverdict(fail); |
| } |
| repeat; |
| } |
| } |
| } |
| /* |
| function f_EPTF_ExecCtrl_Test_getTcName( |
| in charstring pl_name, |
| in integer pl_nOfClients, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| |
| t_test.start(pl_time); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| var charstring vl_tcName; |
| alt { |
| [] t_test.timeout { |
| vl_tcName := f_EPTF_ExecCtrl_getTcName("scenario_0",1); |
| if (vl_tcName == "TC1") { |
| setverdict(pass); |
| } else { |
| log("Wrong TC Name in scenario_0: ", vl_tcName); |
| setverdict(fail); |
| } |
| vl_tcName := f_EPTF_ExecCtrl_getTcName("scenario_0_declarator2",0); |
| if (vl_tcName == "TC0_declarator2") { |
| setverdict(pass); |
| } else { |
| log("Wrong TC Name in scenario_0_declarator2: ", vl_tcName); |
| setverdict(fail); |
| } |
| vl_tcName := f_EPTF_ExecCtrl_getTcName("scenario_0_declarator3",0); |
| if (vl_tcName == "TC0_declarator2") { |
| setverdict(pass); |
| } else { |
| log("Wrong TC Name in scenario_0_declarator3: ", vl_tcName); |
| setverdict(fail); |
| } |
| vl_tcName := f_EPTF_ExecCtrl_getTcName("scenario_0_declarator3", 1); |
| if (vl_tcName == "TC0_declarator2") { |
| log("Wrong TC Name in scenario_0_declarator3: ", vl_tcName); |
| setverdict(fail); |
| } else { |
| setverdict(pass); |
| } |
| |
| repeat; |
| } |
| } |
| }*/ |
| |
| /* |
| This test makes no sense |
| function f_EPTF_ExecCtrl_Test_getScenGrpIdx( |
| in charstring pl_name, |
| in integer pl_nOfClients, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| t_test.start(pl_time); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| var integer vl_ScenGrpIdx; |
| alt { |
| [] t_test.timeout { |
| vl_ScenGrpIdx := f_EPTF_ExecCtrl_ScenarioGroup_getIdx("scenario_0_declarator2"); |
| if (vl_ScenGrpIdx == 0) { |
| setverdict(pass); |
| } else { |
| log("Wrong TC Name in scenario_0: ", vl_ScenGrpIdx); |
| setverdict(fail); |
| } |
| vl_ScenGrpIdx := f_EPTF_ExecCtrl_ScenarioGroup_getIdx("scenario_0"); |
| if (vl_ScenGrpIdx == 0) { |
| setverdict(pass); |
| } else { |
| log("Wrong TC Name in scenario_0: ", vl_ScenGrpIdx); |
| setverdict(fail); |
| } |
| repeat; |
| } |
| } |
| }*/ |
| function f_EPTF_ExecCtrl_Test_manualControlTrue( |
| in charstring pl_name, |
| in integer pl_nOfClients, |
| in EPTF_ExecCtrl_Test_SCDataList pl_scens, |
| in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT { |
| |
| f_EPTF_ExecCtrl_setManualControl(true); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| t_test.start(pl_time); |
| |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| alt |
| { |
| [] t_test.timeout { |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScNotRunning(pl_scens[i]); |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrl_Test_manualControlFalse( |
| in charstring pl_name, |
| in integer pl_nOfClients, |
| in EPTF_ExecCtrl_Test_SCDataList pl_scens, |
| in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT { |
| |
| f_EPTF_ExecCtrl_setManualControl(false); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| t_test.start(pl_time); |
| |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| alt |
| { |
| [] t_test.timeout { |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[i]); |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrl_Test_startScenarioOnLGens( |
| in charstring pl_name, |
| in integer pl_nOfClients, |
| in EPTF_ExecCtrl_Test_SCDataList pl_scens, |
| in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| f_EPTF_ExecCtrl_setManualControl(true); |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| |
| t_test.start(pl_time); |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_StartScenario)); |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| alt |
| { |
| [] t_test.timeout { |
| |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[i]); |
| } |
| repeat; |
| } |
| } // alt |
| |
| } |
| |
| function f_EPTF_ExecCtrl_Test_stopScenarioOnLGens( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_setManualControl(true); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| |
| t_test.start(pl_time); |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_StartScenario)); |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| alt |
| { |
| [] t_test.timeout { |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[i]); |
| f_EPTF_ExecCtrl_stopScenarioOnLGensByName(pl_scens[i].eGrpName, pl_scens[i].scenName); |
| } |
| |
| t_test.start(tsp_EPTF_Var_SyncInterval+2.0); |
| t_test.timeout; |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScNotRunning(pl_scens[i]); |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrl_Test_startTCOnLGens( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| f_EPTF_ExecCtrl_setManualControl(true); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| t_test.start(pl_time); |
| alt |
| { |
| [] t_test.timeout { |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScNotRunning(pl_scens[i]); |
| // f_EPTF_ExecCtrl_startTCOnLGens(f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[i].scenName), f_EPTF_ExecCtrl_getTrafficCaseIdx(pl_scens[i].tcName)); |
| f_EPTF_ExecCtrl_startTCOnLGens( |
| f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[i].eGrpName,pl_scens[i].scenName), |
| f_EPTF_ExecCtrl_getTcOfScenarioIdx(f_EPTF_ExecCtrl_getTrafficCaseIdx(pl_scens[i].eGrpName,pl_scens[i].scenName,pl_scens[i].tcName)) |
| ); |
| } |
| |
| t_test.start(tsp_EPTF_Var_SyncInterval+2.0); |
| t_test.timeout; |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[i]); |
| } |
| f_EPTF_ExecCtrl_stopAllScenarios(); |
| repeat; |
| } |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_Test_stopTCOnLGensByName( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| f_EPTF_ExecCtrl_setManualControl(true); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| t_test.start(pl_time); |
| |
| alt |
| { |
| [] t_test.timeout { |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScNotRunning(pl_scens[i]); |
| // f_EPTF_ExecCtrl_startTCOnLGens(f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[i].scenName),f_EPTF_ExecCtrl_getTrafficCaseIdx(pl_scens[i].tcName)); |
| f_EPTF_ExecCtrl_startTCOnLGens( |
| f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[i].eGrpName,pl_scens[i].scenName), |
| f_EPTF_ExecCtrl_getTcOfScenarioIdx(f_EPTF_ExecCtrl_getTrafficCaseIdx(pl_scens[i].eGrpName,pl_scens[i].scenName,pl_scens[i].tcName)) |
| ); |
| // f_EPTF_ExecCtrl_stopTCOnLGens(f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[i].scenName),f_EPTF_ExecCtrl_getTrafficCaseIdx(pl_scens[i].tcName)); |
| f_EPTF_ExecCtrl_stopTCOnLGens( |
| f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[i].eGrpName,pl_scens[i].scenName), |
| f_EPTF_ExecCtrl_getTcOfScenarioIdx(f_EPTF_ExecCtrl_getTrafficCaseIdx(pl_scens[i].eGrpName,pl_scens[i].scenName,pl_scens[i].tcName)) |
| ); |
| } |
| |
| t_test.start(tsp_EPTF_Var_SyncInterval+2.0); |
| t_test.timeout; |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScNotRunning(pl_scens[i]); |
| } |
| repeat; |
| } |
| } //alt |
| } |
| |
| function f_EPTF_ExecCtrl_Test_checkScenarioStatus( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_StartScenario)); |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| t_test.start(pl_time); |
| |
| alt |
| { |
| [] t_test.timeout { |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[i]); |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrl_Test_stopAllScenarios( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| f_EPTF_ExecCtrl_setManualControl(true); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_StartScenario)); |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| t_test.start(pl_time); |
| |
| alt |
| { |
| [] t_test.timeout { |
| f_EPTF_ExecCtrl_stopAllScenarios(); |
| t_test.start(tsp_EPTF_Var_SyncInterval+2.0); |
| t_test.timeout; |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScNotRunning(pl_scens[i]); |
| } |
| repeat; |
| } |
| } //alt |
| } |
| |
| function f_EPTF_ExecCtrl_Test_startAllScenarios( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| f_EPTF_ExecCtrl_setManualControl(true); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| t_test.start(pl_time); |
| |
| alt |
| { |
| [] t_test.timeout { |
| f_EPTF_ExecCtrl_startAllScenarios(); |
| t_test.start(tsp_EPTF_Var_SyncInterval+2.0); |
| t_test.timeout; |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[i]); |
| } |
| f_EPTF_Base_stopAll(none); |
| repeat; |
| } |
| } //alt |
| } |
| |
| function f_EPTF_ExecCtrl_Test_checkAllScenarios( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| f_EPTF_ExecCtrl_setManualControl(true); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| template charstring t_runningState := ("Running"); |
| template charstring t_notRunningState := ("Finished","Stopped","Idle"); |
| |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| //f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_StartScenario)); |
| |
| t_test.start(pl_time); |
| |
| alt |
| { |
| [] t_test.timeout { |
| //Check runnning scenarios |
| f_EPTF_ExecCtrl_startAllScenarios(); |
| t_test.start(tsp_EPTF_Var_SyncInterval+2.0); |
| t_test.timeout; |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[i]); |
| } |
| //Check scenario statuses with new function |
| if(f_EPTF_ExecCtrl_checkAllScenarios(t_runningState)) {setverdict(pass);} else {setverdict(fail);} |
| |
| //Check stopped scenarios |
| f_EPTF_ExecCtrl_stopAllScenarios(); |
| t_test.start(tsp_EPTF_Var_SyncInterval+2.0); |
| t_test.timeout; |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScNotRunning(pl_scens[i]); |
| } |
| //Check scenario statuses with new function |
| if(f_EPTF_ExecCtrl_checkAllScenarios(t_notRunningState)) {setverdict(pass);} else {setverdict(fail);} |
| |
| f_EPTF_Base_stopAll(none); |
| repeat; |
| } |
| } //alt |
| } |
| |
| function f_EPTF_ExecCtrl_Test_setCps_TC( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| var integer vl_sIdx; |
| var integer vl_tcIdx; |
| var float vl_cps; |
| var integer vl_count := 0; |
| |
| f_EPTF_ExecCtrl_setManualControl(true); |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| f_EPTF_Var_setSyncInterval(1.5) |
| //f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_StartScenario)); |
| f_EPTF_ExecCtrl_registerTrafficCaseStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_StartTC)); |
| f_EPTF_ExecCtrl_registerTrafficCaseStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateTCState)); |
| |
| |
| t_test.start(pl_scens[0].timeProfile[vl_count].time); |
| |
| alt |
| { |
| [] t_test.timeout { |
| |
| |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) |
| { |
| vl_sIdx := f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[i].eGrpName,pl_scens[i].scenName); |
| var integer vl_tcInstanceIdx := f_EPTF_ExecCtrl_getTrafficCaseIdx(pl_scens[i].eGrpName,pl_scens[i].scenName,pl_scens[i].tcName); |
| vl_tcIdx := f_EPTF_ExecCtrl_getTcOfScenarioIdx(vl_tcInstanceIdx); |
| vl_cps := pl_scens[i].timeProfile[vl_count].targetValue; |
| f_EPTF_ExecCtrl_setCps_TC(vl_sIdx, vl_tcIdx, vl_cps); |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[i]); |
| } |
| vl_count := vl_count + 1; |
| if (vl_count < sizeof(pl_scens[0].timeProfile)) { |
| t_test.start(pl_scens[0].timeProfile[vl_count].time - pl_scens[0].timeProfile[vl_count - 1].time); |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrl_Test_trafficCaseCPSChangedCallbackFn(in float pl_cps, in integer pl_tcIdx) runs on EPTF_ExecCtrl_Test_CT { |
| v_EPTF_ExecCtrl_Test_CPSChangedCallback_Called := true; |
| log(%definitionId&" TrafficCaseCPSChanged callback called with pl_cps: ", pl_cps, ", pl_tcIdx: ", pl_tcIdx, ", TC name: ", f_EPTF_ExecCtrl_getTrafficCaseName(pl_tcIdx)); |
| } |
| |
| function f_EPTF_ExecCtrl_Test_setCps_TCCPSChangedCallback( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| var integer vl_sIdx; |
| var integer vl_tcIdx; |
| var float vl_cps; |
| var integer vl_count := 0; |
| |
| f_EPTF_ExecCtrl_setManualControl(true); |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| |
| //f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_StartScenario)); |
| f_EPTF_ExecCtrl_registerTrafficCaseStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_StartTC)); |
| f_EPTF_ExecCtrl_registerTrafficCaseStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateTCState)); |
| |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_registerCPSChangedCallback_TC( |
| f_EPTF_ExecCtrl_getTrafficCaseIdx(pl_scens[i].eGrpName,pl_scens[i].scenName,pl_scens[i].tcName), |
| refers(f_EPTF_ExecCtrl_Test_trafficCaseCPSChangedCallbackFn) |
| ) |
| } |
| |
| |
| t_test.start(pl_scens[0].timeProfile[vl_count].time); |
| |
| alt |
| { |
| [] t_test.timeout { |
| |
| |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) |
| { |
| vl_sIdx := f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[i].eGrpName,pl_scens[i].scenName); |
| var integer vl_tcInstanceIdx := f_EPTF_ExecCtrl_getTrafficCaseIdx(pl_scens[i].eGrpName,pl_scens[i].scenName,pl_scens[i].tcName); |
| vl_tcIdx := f_EPTF_ExecCtrl_getTcOfScenarioIdx(vl_tcInstanceIdx); |
| vl_cps := pl_scens[i].timeProfile[vl_count].targetValue; |
| log("*** TrafficCaseCPSChanged check") |
| v_EPTF_ExecCtrl_Test_CPSChangedCallback_Called := false; |
| f_EPTF_ExecCtrl_setCps_TC(vl_sIdx, vl_tcIdx, vl_cps); |
| if (not v_EPTF_ExecCtrl_Test_CPSChangedCallback_Called) { |
| log(%definitionId&" Error: TrafficCaseCPSChanged callback is not called for traffic case: ", vl_tcInstanceIdx); |
| setverdict(fail); |
| } |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[i]); |
| } |
| vl_count := vl_count + 1; |
| if (vl_count < sizeof(pl_scens[0].timeProfile)) { |
| t_test.start(pl_scens[0].timeProfile[vl_count].time - pl_scens[0].timeProfile[vl_count - 1].time); |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrl_Test_setCps_SC( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| var integer vl_sIdx; |
| var float vl_cps; |
| var integer vl_count := 0; |
| |
| f_EPTF_ExecCtrl_setManualControl(true); |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_StartScenario)); |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| |
| t_test.start(pl_scens[0].timeProfile[vl_count].time); |
| |
| alt |
| { |
| [] t_test.timeout { |
| |
| |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) |
| { |
| vl_sIdx := f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[i].eGrpName,pl_scens[i].scenName); |
| vl_cps := pl_scens[i].timeProfile[vl_count].targetValue; |
| |
| f_EPTF_ExecCtrl_setCps_SC(vl_sIdx, vl_cps); |
| |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[i]); |
| } |
| vl_count := vl_count + 1; |
| if (vl_count < sizeof(pl_scens[0].timeProfile)) { |
| t_test.start(pl_scens[0].timeProfile[vl_count].time - pl_scens[0].timeProfile[vl_count - 1].time); |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrl_Test_scenarioCPSChangedCallbackFn(in float pl_cps, in integer pl_scIdx) runs on EPTF_ExecCtrl_Test_CT { |
| v_EPTF_ExecCtrl_Test_CPSChangedCallback_Called := true; |
| log(%definitionId&" ScenarioCPSChanged callback called with pl_cps: ", pl_cps, ", pl_scIdx: ", pl_scIdx, ", SC name: ", f_EPTF_ExecCtrl_getScenarioInstanceName(pl_scIdx)); |
| } |
| |
| function f_EPTF_ExecCtrl_Test_setCps_SCCPSChangedCallback( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| var integer vl_sIdx; |
| var integer vl_tcIdx; |
| var float vl_cps; |
| var integer vl_count := 0; |
| |
| f_EPTF_ExecCtrl_setManualControl(true); |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_StartScenario)); |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_registerCPSChangedCallback_SC( |
| f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[i].eGrpName,pl_scens[i].scenName), |
| refers(f_EPTF_ExecCtrl_Test_scenarioCPSChangedCallbackFn) |
| ) |
| f_EPTF_ExecCtrl_startScenarioOnLGensByName(pl_scens[i].eGrpName,pl_scens[i].scenName); |
| } |
| |
| t_test.start(pl_scens[0].timeProfile[vl_count].time); |
| |
| alt |
| { |
| [] t_test.timeout { |
| |
| |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) |
| { |
| vl_sIdx := f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[i].eGrpName,pl_scens[i].scenName); |
| vl_cps := pl_scens[i].timeProfile[vl_count].targetValue; |
| log("*** ScenarioCPSChanged check") |
| v_EPTF_ExecCtrl_Test_CPSChangedCallback_Called := false; |
| f_EPTF_ExecCtrl_setCps_SC(vl_sIdx, vl_cps); |
| if (not v_EPTF_ExecCtrl_Test_CPSChangedCallback_Called) { |
| log(%definitionId&" Error: ScenarioCPSChanged callback is not called for scenario: ", vl_sIdx, ", SC name: ", f_EPTF_ExecCtrl_getScenarioInstanceName(vl_sIdx)); |
| setverdict(fail); |
| } |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[i]); |
| } |
| vl_count := vl_count + 1; |
| if (vl_count < sizeof(pl_scens[0].timeProfile)) { |
| t_test.start(pl_scens[0].timeProfile[vl_count].time - pl_scens[0].timeProfile[vl_count - 1].time); |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_CPS( |
| in charstring pl_selfName, |
| in EPTF_ExecCtrl_Test_CT pl_execCtrl, |
| in EPTF_ExecCtrl_Test_SCDataList pl_scens, |
| in boolean pl_checkCpsToReach := true, |
| in float pl_measureTime := 2.0) |
| runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| timer tl_test; |
| var float vl_currentCPS := 0.0; |
| var float vl_targetCPS := 0.0; |
| var integer vl_count := 0; |
| |
| v_EPTF_ExecCtrlClient_Test_scenarios := pl_scens; |
| |
| f_EPTF_ExecCtrlClient_Test_init(pl_selfName, pl_execCtrl); |
| f_EPTF_Var_setSyncInterval(0.5); |
| |
| timer t_wait := 0.0; |
| |
| var charstring vl_varName := "ExecCtrlClient.trafficCaseStatus."&pl_scens[0].eGrpName&"."&pl_scens[0].scenName&"."&pl_scens[0].tcName; |
| t_wait.start; |
| |
| alt { |
| |
| [f_EPTF_Var_getId(vl_varName)!=-1 and f_EPTF_Var_getCharstringValue(f_EPTF_Var_getId(vl_varName))==c_EPTF_LGenBase_stateNames[c_EPTF_LGenBase_tcStateRunning]] t_wait.timeout { |
| tl_test.start(v_EPTF_ExecCtrlClient_Test_scenarios[0].timeProfile[vl_count].time+f_EPTF_Var_getRefreshPeriod(0)*2.1); |
| repeat; |
| } |
| |
| [] tl_test.timeout { |
| log(">>>Timeout occured, scenarios: ",v_EPTF_ExecCtrlClient_Test_scenarios); |
| if(not f_EPTF_LGenBase_initialized()) {setverdict(fail);return;} |
| |
| for(var integer i := 0; i < sizeof(v_EPTF_ExecCtrlClient_Test_scenarios); i := i + 1 ) { |
| var float vl_maxError := 0.001; |
| |
| if(pl_checkCpsToReach) { |
| if(f_EPTF_ExecCtrlTest_isWeightedScenariobyName(pl_scens[i].eGrpName, pl_scens[i].scenName)) { |
| vl_currentCPS := f_EPTF_LGenBase_getScCpsSoReachByName(pl_scens[i].eGrpName, pl_scens[i].scenName); |
| } else { |
| f_EPTF_LGenBase_logEntityGroups();//just to see the problem |
| vl_currentCPS := f_EPTF_LGenBase_getTcCpsToReachByName(pl_scens[i].eGrpName, pl_scens[i].scenName, pl_scens[i].tcName); |
| } |
| } else { |
| if(f_EPTF_ExecCtrlTest_isWeightedScenariobyName(pl_scens[i].eGrpName, pl_scens[i].scenName)) { |
| vl_currentCPS := f_EPTF_ExecCtrlTest_getWeightedScenarioCps(pl_scens[i].eGrpName, pl_scens[i].scenName); |
| } else { |
| vl_currentCPS := f_EPTF_LGenBase_getMeasuredCPSByNames(pl_scens[i].eGrpName, pl_scens[i].scenName, pl_scens[i].tcName); |
| } |
| vl_maxError := 1.0; |
| } |
| |
| vl_targetCPS := pl_scens[i].timeProfile[vl_count].targetValue; |
| if(vl_currentCPS < vl_targetCPS + vl_maxError and vl_currentCPS > vl_targetCPS - vl_maxError) |
| { |
| log("Current CPS: ", vl_currentCPS, " expected: ", vl_targetCPS); |
| setverdict(pass) |
| } else { |
| log("Current CPS: ", vl_currentCPS, " expected: ", vl_targetCPS); |
| setverdict(fail) |
| } |
| } |
| vl_count := vl_count + 1; |
| if (vl_count < sizeof(pl_scens[0].timeProfile)) { |
| tl_test.start(pl_scens[0].timeProfile[vl_count].time - pl_scens[0].timeProfile[vl_count - 1].time); |
| } |
| repeat; |
| } |
| } |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_trafficCaseCPSChangedCallbackFn(in float pl_cps, in integer pl_tcIdx) runs on EPTF_ExecCtrlClient_Test_CT { |
| v_EPTF_ExecCtrlClient_Test_CPSChangedCallback_Called := true; |
| |
| var charstring vl_eGrpName; |
| var charstring vl_scName; |
| var charstring vl_tcName; |
| f_EPTF_LGenBase_trafficCaseIdNames(pl_tcIdx,vl_eGrpName,vl_scName,vl_tcName); |
| log(%definitionId&" TrafficCaseCPSChanged callback called with pl_cps: ", pl_cps, ", pl_tcIdx: ", pl_tcIdx, ", TC name: ", vl_eGrpName,".",vl_scName,".",vl_tcName); |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_CPSChangedCallbackCheck() runs on EPTF_ExecCtrlClient_Test_CT { |
| if (not v_EPTF_ExecCtrlClient_Test_CPSChangedCallback_Called) { |
| log(%definitionId&" TrafficCaseCPSChanged callback was not called."); |
| setverdict(fail) |
| } |
| else { |
| setverdict(pass); |
| } |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_cleanupWaiting() runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| f_EPTF_ExecCtrlClient_readyToStart(); |
| timer t1; |
| t1.start(10.0); |
| t1.timeout; |
| if(f_EPTF_ExecCtrlClient_checkEndOfConfig()){ |
| setverdict(fail, "Error: EndOfConfig should not be handled during cleanup, but now it is"); |
| } else { |
| setverdict(pass); |
| } |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_CPSChangedCallback_TC( |
| in charstring pl_selfName, |
| in EPTF_ExecCtrl_Test_CT pl_execCtrl, |
| in EPTF_ExecCtrl_Test_SCDataList pl_scens, |
| in boolean pl_checkCpsToReach := true, |
| in float pl_measureTime := 2.0) |
| runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| timer tl_test; |
| var float vl_currentCPS := 0.0; |
| var float vl_targetCPS := 0.0; |
| var integer vl_count := 0; |
| |
| v_EPTF_ExecCtrlClient_Test_scenarios := pl_scens; |
| v_EPTF_ExecCtrlClient_Test_CPSChangedCallback_Called := false; |
| |
| f_EPTF_ExecCtrlClient_Test_init(pl_selfName, pl_execCtrl); |
| |
| f_EPTF_Base_registerCleanup(refers(f_EPTF_ExecCtrlClient_Test_CPSChangedCallbackCheck)); |
| |
| |
| tl_test.start(0.0); |
| |
| alt { |
| [f_EPTF_ExecCtrlClient_checkEndOfConfig()] tl_test.timeout { |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_LGenBase_registerCPSChangedCallback_TC( |
| pl_scens[i].eGrpName,pl_scens[i].scenName,pl_scens[i].tcName, |
| refers(f_EPTF_ExecCtrlClient_Test_trafficCaseCPSChangedCallbackFn) |
| ) |
| } |
| } |
| } |
| |
| tl_test.start(v_EPTF_ExecCtrlClient_Test_scenarios[0].timeProfile[vl_count].time + pl_measureTime); |
| |
| alt { |
| |
| [] tl_test.timeout { |
| for(var integer i := 0; i < sizeof(v_EPTF_ExecCtrlClient_Test_scenarios); i := i + 1 ) { |
| var float vl_maxError := 0.001; |
| |
| if(pl_checkCpsToReach) { |
| if(f_EPTF_ExecCtrlTest_isWeightedScenariobyName(pl_scens[i].eGrpName, pl_scens[i].scenName)) { |
| vl_currentCPS := f_EPTF_LGenBase_getScCpsSoReachByName(pl_scens[i].eGrpName, pl_scens[i].scenName); |
| } else { |
| vl_currentCPS := f_EPTF_LGenBase_getTcCpsToReachByName(pl_scens[i].eGrpName, pl_scens[i].scenName, pl_scens[i].tcName); |
| } |
| } else { |
| if(f_EPTF_ExecCtrlTest_isWeightedScenariobyName(pl_scens[i].eGrpName, pl_scens[i].scenName)) { |
| vl_currentCPS := f_EPTF_ExecCtrlTest_getWeightedScenarioCps(pl_scens[i].eGrpName, pl_scens[i].scenName); |
| } else { |
| vl_currentCPS := f_EPTF_LGenBase_getMeasuredCPSByNames(pl_scens[i].eGrpName, pl_scens[i].scenName, pl_scens[i].tcName); |
| } |
| vl_maxError := 1.0; |
| } |
| |
| vl_targetCPS := pl_scens[i].timeProfile[vl_count].targetValue; |
| if(vl_currentCPS < vl_targetCPS + vl_maxError and vl_currentCPS > vl_targetCPS - vl_maxError) |
| { |
| log("Current CPS: ", vl_currentCPS, " expected: ", vl_targetCPS); |
| setverdict(pass) |
| } else { |
| log("Current CPS: ", vl_currentCPS, " expected: ", vl_targetCPS); |
| setverdict(fail) |
| } |
| } |
| vl_count := vl_count + 1; |
| if (vl_count < sizeof(pl_scens[0].timeProfile)) { |
| tl_test.start(pl_scens[0].timeProfile[vl_count].time - pl_scens[0].timeProfile[vl_count - 1].time); |
| } |
| repeat; |
| } |
| } |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_CPSFromTimeProfile( |
| in charstring pl_selfName, |
| in EPTF_ExecCtrl_Test_CT pl_execCtrl, |
| in EPTF_ExecCtrl_TimeProfileItemList pl_timeProfile) |
| runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| timer tl_test; |
| var integer vl_count := 0; |
| f_EPTF_ExecCtrlClient_Test_init(pl_selfName, pl_execCtrl); |
| tl_test.start(pl_timeProfile[vl_count].time + 0.7); |
| |
| alt { |
| [] tl_test.timeout { |
| var float vl_cps := f_EPTF_LGenBase_getCPSByNames("grp0","scenario_0_declarator2","TC0_declarator2"); |
| if(vl_cps < pl_timeProfile[vl_count].targetValue + 0.2 and |
| vl_cps > pl_timeProfile[vl_count].targetValue - 0.2) |
| { |
| log("Current CPS: ", vl_cps, " expected: ", pl_timeProfile[vl_count].targetValue); |
| setverdict(pass) |
| } else { |
| log("Current CPS: ", vl_cps, " expected: ", pl_timeProfile[vl_count].targetValue); |
| setverdict(fail) |
| } |
| |
| vl_count := vl_count + 1; |
| log("### vl_count: ", vl_count, "sizeof(pl_timeProfile) ", sizeof(pl_timeProfile)); |
| if (vl_count < sizeof(pl_timeProfile)) { |
| tl_test.start(pl_timeProfile[vl_count].time); |
| } |
| repeat; |
| } |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_UIHandler_Test_setCPS( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_UIHandler_CT pl_gui, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT |
| { |
| |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| var float vl_cps; |
| var integer vl_varID; |
| var integer vl_count := 0; |
| timer t_start, t_stop; |
| var EPTF_Var_DirectContent vl_Var_content; |
| var charstring vl_varName; |
| var float vl_now := 0.0; |
| |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| t_start.start(0.0); |
| t_stop.start(pl_time); |
| |
| alt |
| { |
| [f_EPTF_ExecCtrl_checkReadyToRun()] t_start.timeout { // note: moved here so the timing of pl_scens[0].timeProfile stays in-sync with client |
| vl_now := f_EPTF_Base_getRelTimeInSecs(); |
| f_EPTF_Var_logNames("##### Vars ####"); |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| var integer vl_scIdx := f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[i].eGrpName,pl_scens[i].scenName); |
| if(f_EPTF_ExecCtrl_isWeightedScenario(vl_scIdx)) { |
| vl_varName := "ExecCtrl.startScenario." & pl_scens[i].eGrpName & "." & pl_scens[i].scenName; |
| } else { |
| vl_varName := "ExecCtrl.startTC." & pl_scens[i].eGrpName & "." & pl_scens[i].scenName & "." & pl_scens[i].tcName; |
| } |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {boolVal := true}); |
| var float vl_remainingTime := pl_scens[0].timeProfile[0].time - vl_now; |
| if(vl_remainingTime < 0.0) { |
| log(%definitionId&": cannot start test timer with negative value. It is possible that the GUI took too much time to initialize."); |
| f_EPTF_Base_stopAll(inconc); |
| } |
| t_test.start(vl_remainingTime); |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| //setverdict(fail); |
| f_EPTF_Base_stopAll(); |
| //exit |
| } |
| } |
| repeat; |
| } |
| [] t_stop.timeout { |
| log("###: push Exit button") |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Exit); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Exit); |
| setverdict(fail); |
| //exit |
| } |
| repeat; |
| } |
| [] t_test.timeout { |
| |
| |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) |
| { |
| var integer vl_scInstanceIdx := f_EPTF_ExecCtrl_getScenarioIdx( |
| pl_scens[i].eGrpName, |
| pl_scens[i].scenName |
| ); |
| |
| var integer vl_tcInstanceIdx := f_EPTF_ExecCtrl_getTrafficCaseIdx( |
| pl_scens[i].eGrpName, |
| pl_scens[i].scenName, |
| pl_scens[i].tcName |
| ); |
| |
| var integer vl_tcOfScIdx := f_EPTF_ExecCtrl_getTcOfScenarioIdx(vl_tcInstanceIdx); |
| |
| vl_cps := pl_scens[i].timeProfile[vl_count].targetValue; |
| |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[i]); |
| |
| if(f_EPTF_ExecCtrl_isWeightedScenario(vl_scInstanceIdx)) { |
| f_EPTF_ExecCtrl_setCps_SC(vl_scInstanceIdx, vl_cps); |
| vl_varName := "Traffic.ScenarioCPS." &pl_scens[i].eGrpName&"."&int2str(vl_scInstanceIdx); |
| //vl_varName := FIXME_ExecCtrlUI_GenerateNameForScCpsWidget(vl_scInstanceIdx); <--- FIXME: should be in EPTF_CLL_ExecCtrlUI_Functions.ttcn |
| } else { |
| f_EPTF_ExecCtrl_setCps_TC(vl_scInstanceIdx, vl_tcOfScIdx, vl_cps); |
| vl_varName := "Traffic.TCCPS." &pl_scens[i].eGrpName&"."&int2str(vl_scInstanceIdx) &"."&int2str(vl_tcOfScIdx); |
| //vl_varName := FIXME_ExecCtrlUI_GenerateNameForTcCpsWidget(vl_tcInstanceIdx); <--- FIXME: should be in EPTF_CLL_ExecCtrlUI_Functions.ttcn |
| } |
| |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if (vl_varID != -1) { |
| f_EPTF_Var_refreshContent(vl_varID); |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| if (vl_Var_content.floatVal == pl_scens[i].timeProfile[vl_count].targetValue) { |
| log("Expected CPS value set in the GUI: ", vl_Var_content.floatVal); |
| setverdict(pass); |
| } else { |
| log("Unexpected CPS value set in the GUI: ", vl_Var_content.floatVal, " Expected: ", pl_scens[i].timeProfile[vl_count].targetValue); |
| setverdict(fail); |
| } |
| |
| } else { |
| log("No such EPTF variable with name: ", vl_varName); |
| setverdict(fail); |
| } |
| |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[i]); |
| |
| } |
| |
| vl_count := vl_count + 1; |
| if (vl_count < sizeof(pl_scens[0].timeProfile)) { |
| t_test.start(pl_scens[0].timeProfile[vl_count].time - pl_scens[0].timeProfile[vl_count - 1].time); |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_scenarioCPSChangedCallbackFn(in float pl_cps, in integer pl_eGrpIdx, in integer pl_scIdx) runs on EPTF_ExecCtrlClient_Test_CT { |
| v_EPTF_ExecCtrlClient_Test_CPSChangedCallback_Called := true; |
| |
| var charstring vl_eGrpName; |
| var charstring vl_scName; |
| f_EPTF_LGenBase_scenarioIdNames(pl_eGrpIdx,pl_scIdx,vl_eGrpName,vl_scName); |
| log(%definitionId&" ScenarioCPSChanged callback called with pl_cps: ", pl_cps, ", pl_eGrpIdx: ", pl_eGrpIdx, ", pl_scIdx: ", pl_scIdx, ", TC name: ", vl_eGrpName,".",vl_scName); |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_scenarioCPSChangedCallbackCheck() runs on EPTF_ExecCtrlClient_Test_CT { |
| if (not v_EPTF_ExecCtrlClient_Test_CPSChangedCallback_Called) { |
| log(%definitionId&" ScenarioCPSChanged callback was not called."); |
| setverdict(fail) |
| } |
| else { |
| setverdict(pass); |
| } |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_CPSChangedCallback_SC( |
| in charstring pl_selfName, |
| in EPTF_ExecCtrl_Test_CT pl_execCtrl, |
| in EPTF_ExecCtrl_Test_SCDataList pl_scens, |
| in boolean pl_checkCpsToReach := true, |
| in float pl_measureTime := 2.0) |
| runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| timer tl_test; |
| var float vl_currentCPS := 0.0; |
| var float vl_targetCPS := 0.0; |
| var integer vl_count := 0; |
| |
| v_EPTF_ExecCtrlClient_Test_scenarios := pl_scens; |
| v_EPTF_ExecCtrlClient_Test_CPSChangedCallback_Called := false; |
| |
| f_EPTF_ExecCtrlClient_Test_init(pl_selfName, pl_execCtrl); |
| |
| f_EPTF_Base_registerCleanup(refers(f_EPTF_ExecCtrlClient_Test_CPSChangedCallbackCheck)); |
| |
| |
| tl_test.start(0.0); |
| |
| alt { |
| [f_EPTF_ExecCtrlClient_checkEndOfConfig()] tl_test.timeout { |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_LGenBase_registerCPSChangedCallback_SC( |
| pl_scens[i].eGrpName,pl_scens[i].scenName, |
| refers(f_EPTF_ExecCtrlClient_Test_scenarioCPSChangedCallbackFn) |
| ) |
| } |
| } |
| } |
| |
| tl_test.start(v_EPTF_ExecCtrlClient_Test_scenarios[0].timeProfile[vl_count].time + pl_measureTime); |
| |
| alt { |
| |
| [] tl_test.timeout { |
| for(var integer i := 0; i < sizeof(v_EPTF_ExecCtrlClient_Test_scenarios); i := i + 1 ) { |
| var float vl_maxError := 0.001; |
| |
| if(pl_checkCpsToReach) { |
| if(f_EPTF_ExecCtrlTest_isWeightedScenariobyName(pl_scens[i].eGrpName, pl_scens[i].scenName)) { |
| vl_currentCPS := f_EPTF_LGenBase_getScCpsSoReachByName(pl_scens[i].eGrpName, pl_scens[i].scenName); |
| } else { |
| vl_currentCPS := f_EPTF_LGenBase_getTcCpsToReachByName(pl_scens[i].eGrpName, pl_scens[i].scenName, pl_scens[i].tcName); |
| } |
| } else { |
| if(f_EPTF_ExecCtrlTest_isWeightedScenariobyName(pl_scens[i].eGrpName, pl_scens[i].scenName)) { |
| vl_currentCPS := f_EPTF_ExecCtrlTest_getWeightedScenarioCps(pl_scens[i].eGrpName, pl_scens[i].scenName); |
| } else { |
| vl_currentCPS := f_EPTF_LGenBase_getMeasuredCPSByNames(pl_scens[i].eGrpName, pl_scens[i].scenName, pl_scens[i].tcName); |
| } |
| vl_maxError := 1.0; |
| } |
| |
| vl_targetCPS := pl_scens[i].timeProfile[vl_count].targetValue; |
| if(vl_currentCPS < vl_targetCPS + vl_maxError and vl_currentCPS > vl_targetCPS - vl_maxError) |
| { |
| log("Current CPS: ", vl_currentCPS, " expected: ", vl_targetCPS); |
| setverdict(pass) |
| } else { |
| log("Current CPS: ", vl_currentCPS, " expected: ", vl_targetCPS); |
| setverdict(fail) |
| } |
| } |
| vl_count := vl_count + 1; |
| if (vl_count < sizeof(pl_scens[0].timeProfile)) { |
| tl_test.start(pl_scens[0].timeProfile[vl_count].time - pl_scens[0].timeProfile[vl_count - 1].time); |
| } |
| repeat; |
| } |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_UIHandler_Test_startButton( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_UIHandler_CT pl_gui, in float pl_time) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT |
| { |
| |
| timer t_action; |
| var integer vl_varID; |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| f_ExecCtrl_Test_storeDataFromTspScenario2Grps(); |
| log("v_EPTF_ExecCtrl_Test_scenarios: ",v_EPTF_ExecCtrl_Test_scenarios); |
| t_action.start(0.0); |
| |
| alt |
| { |
| [f_EPTF_ExecCtrl_checkReadyToRun()] t_action.timeout { |
| f_EPTF_Var_logNames("##### Vars ####"); |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Start); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Start); |
| setverdict(fail); |
| //exit |
| } |
| t_test.start(tsp_EPTF_Var_SyncInterval+1.0); |
| repeat; |
| } |
| [] t_test.timeout { |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_Test_scenarios); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScRunning(v_EPTF_ExecCtrl_Test_scenarios[i]); |
| } |
| setverdict(pass); |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Exit); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Exit); |
| setverdict(fail); |
| //exit |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| |
| function f_EPTF_ExecCtrl_UIHandler_Test_stopButton( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_UIHandler_CT pl_gui, in float pl_time) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT |
| { |
| f_EPTF_ExecCtrl_setManualControl(true); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| f_ExecCtrl_Test_storeDataFromTspScenario2Grps(); |
| |
| var integer vl_varID; |
| var charstring vl_varName; |
| var EPTF_Var_DirectContent vl_Var_content; |
| timer t_stop, t_test_stop; |
| log("v_EPTF_ExecCtrl_Test_scenarios: ",v_EPTF_ExecCtrl_Test_scenarios); |
| t_test.start(0.0); |
| |
| alt |
| { |
| [f_EPTF_ExecCtrl_checkReadyToRun()] t_test.timeout { |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Start); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Start); |
| setverdict(fail); |
| //exit |
| } |
| t_test_stop.start(tsp_EPTF_Var_SyncInterval+2.0) |
| repeat; |
| } |
| [] t_test_stop.timeout { |
| |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_Test_scenarios); i := i + 1) |
| { |
| f_EPTF_ExecCtrl_Test_checkScRunning(v_EPTF_ExecCtrl_Test_scenarios[i]); |
| } |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Stop); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Stop); |
| setverdict(fail); |
| //exit |
| } |
| t_stop.start(tsp_EPTF_Var_SyncInterval+2.0); |
| repeat; |
| } |
| [] t_stop.timeout { |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_Test_scenarios); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScNotRunning(v_EPTF_ExecCtrl_Test_scenarios[i]); |
| } |
| |
| for (var integer lgenidx := 0; lgenidx < pl_nOfClients; lgenidx := lgenidx + 1) { |
| for(var integer eg:=0; eg<f_EPTF_ExecCtrl_getLGenNumEGroups(lgenidx); eg:=eg+1) { |
| var integer vl_eGrpIdx := f_EPTF_ExecCtrl_getLGenEGrpIdx(lgenidx,eg); |
| var EPTF_IntegerList vl_eGrpScenarios := f_EPTF_ExecCtrl_eGrp_scenarios(vl_eGrpIdx); |
| for(var integer sc:=0; sc<sizeof(vl_eGrpScenarios);sc:=sc+1) { |
| var integer vl_scIdx := vl_eGrpScenarios[sc]; |
| |
| vl_varName := "StatusLED.Scenario.LGenStatus." & f_EPTF_ExecCtrl_getLGenName(lgenidx) & "." & f_EPTF_ExecCtrl_eGrp_name(vl_eGrpIdx)& |
| "."&f_EPTF_ExecCtrl_getScenarioName(vl_scIdx); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if (vl_varID != -1) { |
| f_EPTF_Var_refreshContent(vl_varID); |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| if (vl_Var_content.statusLEDVal.text == "Stopped") { |
| log("Expected Scenario state: ", vl_Var_content.statusLEDVal.text); |
| setverdict(pass); |
| } else { |
| log("Unexpected Scenario state: ", vl_Var_content.statusLEDVal.text, " Expected: Stopped"); |
| setverdict(fail); |
| } |
| |
| } else { |
| log("No such EPTF variable with name: ", vl_varName); |
| setverdict(fail); |
| } |
| } |
| } |
| } |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Exit); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Exit); |
| setverdict(fail); |
| //exit |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrl_UIHandler_Test_stopButton_manualControl_false( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_UIHandler_CT pl_gui, in boolean pl_manualControl := true) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT |
| { |
| f_EPTF_ExecCtrl_setManualControl(pl_manualControl); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| f_ExecCtrl_Test_storeDataFromTspScenario2Grps(); |
| |
| var integer vl_varID; |
| var charstring vl_varName; |
| var EPTF_Var_DirectContent vl_Var_content; |
| timer t_stop, t_test_stop; |
| log("v_EPTF_ExecCtrl_Test_scenarios: ",v_EPTF_ExecCtrl_Test_scenarios); |
| t_test.start(0.0); |
| |
| alt |
| { |
| [f_EPTF_ExecCtrl_Test_checkScRunning_withRetVal(v_EPTF_ExecCtrl_Test_scenarios[0])] t_test.timeout { |
| t_test_stop.start(tsp_EPTF_Var_SyncInterval+2.0) |
| repeat; |
| } |
| [] t_test_stop.timeout { |
| |
| var charstring vl_stopButtonName; |
| f_EPTF_DataSourceClient_getData( |
| pl_dataVarName:=vl_stopButtonName, |
| pl_source := c_ExecCtrl_DataSource_sourceId, |
| pl_ptcName := "", |
| pl_element := c_ExecCtrl_dataElementStop, |
| pl_params := {} |
| ); |
| vl_varID := f_EPTF_Var_getId(vl_stopButtonName); |
| |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| action("There is no such Variable: ", vl_stopButtonName); |
| setverdict(fail); |
| //exit |
| } |
| t_stop.start(tsp_EPTF_Var_SyncInterval+2.0); |
| repeat; |
| } |
| [] t_stop.timeout { |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_Test_scenarios); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScNotRunning(v_EPTF_ExecCtrl_Test_scenarios[i]); |
| } |
| |
| for (var integer lgenidx := 0; lgenidx < pl_nOfClients; lgenidx := lgenidx + 1) { |
| for(var integer eg:=0; eg<f_EPTF_ExecCtrl_getLGenNumEGroups(lgenidx); eg:=eg+1) { |
| var integer vl_eGrpIdx := f_EPTF_ExecCtrl_getLGenEGrpIdx(lgenidx,eg); |
| var EPTF_IntegerList vl_eGrpScenarios := f_EPTF_ExecCtrl_eGrp_scenarios(vl_eGrpIdx); |
| for(var integer sc:=0; sc<sizeof(vl_eGrpScenarios);sc:=sc+1) { |
| var integer vl_scIdx := vl_eGrpScenarios[sc]; |
| |
| vl_varName := "StatusLED.Scenario.LGenStatus." & f_EPTF_ExecCtrl_getLGenName(lgenidx) & "." & f_EPTF_ExecCtrl_eGrp_name(vl_eGrpIdx)& |
| "."&f_EPTF_ExecCtrl_getScenarioName(vl_scIdx); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if (vl_varID != -1) { |
| f_EPTF_Var_refreshContent(vl_varID); |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| if (vl_Var_content.statusLEDVal.text == "Stopped") { |
| log("Expected Scenario state: ", vl_Var_content.statusLEDVal.text); |
| setverdict(pass); |
| } else { |
| log("Unexpected Scenario state: ", vl_Var_content.statusLEDVal.text, " Expected: Stopped"); |
| setverdict(fail); |
| } |
| |
| } else { |
| log("No such EPTF variable with name: ", vl_varName); |
| setverdict(fail); |
| } |
| } |
| } |
| } |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Exit); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Exit); |
| setverdict(fail); |
| //exit |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| type record of EPTF_Var_DirectContent EPTF_ExecCtrlTest_DirectContentList; |
| |
| function f_EPTF_ExecCtrl_UIHandler_Test_resetAllButton( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_UIHandler_CT pl_gui, in float pl_time, |
| in EPTF_ExecCtrl_Test_SCDataList pl_scens) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT |
| { |
| timer t_stop, t_test_stop, t_start; |
| |
| f_EPTF_ExecCtrl_setManualControl(true); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| f_ExecCtrl_Test_storeDataFromTspScenario2Grps(); |
| |
| var integer vl_varID; |
| var charstring vl_varName; |
| var EPTF_Var_DirectContent vl_Var_content; |
| var EPTF_ExecCtrlTest_DirectContentList vl_Var_testedContentList; |
| // Tested items -> |
| const ExecCtrl_TcStatIdList vl_testStatVarIds := { |
| // c_EPTF_ExecCtrl_tcStatId_CurrentCPS, // Not tested |
| //c_EPTF_ExecCtrl_tcStatId_Running, |
| //c_EPTF_ExecCtrl_tcStatId_Available, |
| c_EPTF_ExecCtrl_tcStatId_FinTraffic, |
| c_EPTF_ExecCtrl_tcStatId_MaxBusy, |
| c_EPTF_ExecCtrl_tcStatId_MaxRunning, |
| // c_EPTF_ExecCtrl_tcStatId_MinAvailable, // Not tested |
| c_EPTF_ExecCtrl_tcStatId_NotFinished, |
| c_EPTF_ExecCtrl_tcStatId_RangeLoops, |
| c_EPTF_ExecCtrl_tcStatId_Starts, |
| c_EPTF_ExecCtrl_tcStatId_Success, |
| c_EPTF_ExecCtrl_tcStatId_Fail, |
| c_EPTF_ExecCtrl_tcStatId_Timeout, |
| c_EPTF_ExecCtrl_tcStatId_Error |
| // c_EPTF_ExecCtrl_tcStatId_ExecTime // Not tested |
| }; |
| var charstring vl_hashIdText := %definitionId&"_checkStatisticsHash"; |
| var integer vl_hashId := f_EPTF_str2int_HashMap_New(vl_hashIdText); |
| var integer vl_idx := 0; |
| for(var integer i := 0; i < sizeof(vl_testStatVarIds); i := i + 1 ){ |
| vl_idx := i; |
| f_EPTF_str2int_HashMap_Insert(vl_hashId, c_EPTF_ExecCtrl_tcStatNames[vl_testStatVarIds[i]], vl_idx); |
| } |
| |
| log("v_EPTF_ExecCtrl_Test_scenarios: ",v_EPTF_ExecCtrl_Test_scenarios); |
| action(%definitionId&">v_EPTF_ExecCtrl_Test_scenarios: ",v_EPTF_ExecCtrl_Test_scenarios); |
| t_test.start(0.0); |
| |
| alt |
| { |
| [f_EPTF_ExecCtrl_checkReadyToRun()] t_test.timeout { |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Start); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Start); |
| setverdict(fail,"No such EPTF variable with name: "&c_EPTF_ExecCtrl_Start); |
| //exit |
| } |
| t_start.start(5.0); // traffic runs for 5 sec |
| repeat; |
| } |
| [] t_start.timeout { |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_Test_scenarios); i := i + 1) |
| { |
| f_EPTF_ExecCtrl_Test_checkScRunning(v_EPTF_ExecCtrl_Test_scenarios[i]); |
| } |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Stop); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Stop); |
| setverdict(fail,"No such EPTF variable with name: "&c_EPTF_ExecCtrl_Stop); |
| } |
| |
| t_test_stop.start(tsp_EPTF_Var_SyncInterval+5.0); |
| repeat; |
| } |
| [] t_test_stop.timeout { |
| |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_Test_scenarios); i := i + 1) |
| { |
| f_EPTF_ExecCtrl_Test_checkScNotRunning(v_EPTF_ExecCtrl_Test_scenarios[i]); |
| } |
| |
| for(var integer i := 0; i < sizeof(pl_scens); i := i + 1 ) { |
| //var charstring vl_varNameBase := f_EPTF_LGenBaseStats_getNamePrefix(pl_scens[i].eGrpName, pl_scens[i].scenName, pl_scens[i].tcName); |
| var charstring vl_varNameBase := c_EPTF_ExecCtrl_statisticsRoot&".EG."&pl_scens[i].eGrpName&".SC."&pl_scens[i].scenName&".TC."&pl_scens[i].tcName; |
| for(var integer vl_j := 0; vl_j < sizeof(c_EPTF_ExecCtrl_tcStatNames); vl_j := vl_j + 1 ){ |
| if (f_EPTF_str2int_HashMap_Find(vl_hashId, c_EPTF_ExecCtrl_tcStatNames[vl_j], vl_idx)) |
| { |
| var charstring vl_statName := vl_varNameBase&"."&c_EPTF_ExecCtrl_tcStatNames[vl_j]; |
| vl_varID := f_EPTF_Var_getId(vl_statName); |
| if (vl_varID != -1) { |
| f_EPTF_Var_refreshContent(vl_varID); |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| vl_Var_testedContentList[vl_idx] := vl_Var_content; |
| action(%definitionId&">vl_variableRunningValue[pre:"&c_EPTF_ExecCtrl_tcStatNames[vl_j]&"]=",vl_Var_content); |
| } else { |
| log("No such EPTF variable with name: ", vl_statName); |
| setverdict(fail,"No such EPTF variable with name: "&vl_statName); |
| } |
| } |
| } |
| } |
| // Push -> Reset All |
| var charstring vl_varResetButtonName; |
| var integer vl_retCode := 0; |
| vl_retCode := f_EPTF_DataSourceClient_getData(vl_varResetButtonName,"StatHandler","","ResetAll",{}); |
| vl_varID := f_EPTF_Var_getId(vl_varResetButtonName); |
| action(%definitionId&">RESET["&vl_varResetButtonName&"]=",vl_varID); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| log("There is no such Variable: ", vl_varResetButtonName); |
| setverdict(fail,"No such EPTF variable with name: "&vl_varResetButtonName); |
| //exit |
| } |
| t_stop.start(tsp_EPTF_Var_SyncInterval+5.0); |
| repeat; |
| } |
| [] t_stop.timeout { |
| |
| action(%definitionId&">CHECK->",sizeof(pl_scens)); |
| |
| for(var integer i := 0; i < sizeof(pl_scens); i := i + 1 ) { |
| //var charstring vl_varNameBase := f_EPTF_LGenBaseStats_getNamePrefix(pl_scens[i].eGrpName, pl_scens[i].scenName, pl_scens[i].tcName); |
| var charstring vl_varNameBase := c_EPTF_ExecCtrl_statisticsRoot&".EG."&pl_scens[i].eGrpName&".SC."&pl_scens[i].scenName&".TC."&pl_scens[i].tcName; |
| for(var integer vl_j := 0; vl_j < sizeof(c_EPTF_ExecCtrl_tcStatNames); vl_j := vl_j + 1 ){ |
| if (f_EPTF_str2int_HashMap_Find(vl_hashId, c_EPTF_ExecCtrl_tcStatNames[vl_j], vl_idx)){ |
| var charstring vl_statName := vl_varNameBase&"."&c_EPTF_ExecCtrl_tcStatNames[vl_j]; |
| vl_varID := f_EPTF_Var_getId(vl_statName); |
| if (vl_varID != -1) { |
| f_EPTF_Var_refreshContent(vl_varID); |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| action(%definitionId&">vl_variableRunningValue[POST:"&c_EPTF_ExecCtrl_tcStatNames[vl_j]&"] - ",vl_Var_testedContentList[vl_idx]," < ",vl_Var_content); |
| if(ischosen(vl_Var_content.intVal)) { |
| if(vl_j == c_EPTF_ExecCtrl_tcStatId_Available or vl_j == c_EPTF_ExecCtrl_tcStatId_NotFinished) { |
| if (f_EPTF_ExecCtrl_getActiveEntities(f_EPTF_ExecCtrl_getEntityGroupIdx(pl_scens[i].eGrpName)) != vl_Var_content.intVal) { |
| action(%definitionId&">Reset failed["&c_EPTF_ExecCtrl_tcStatNames[vl_j]&"]"); |
| setverdict(fail,"Reset failed ["&c_EPTF_ExecCtrl_tcStatNames[vl_j]&"]!"); |
| } |
| } |
| else if(vl_Var_testedContentList[vl_idx].intVal < 0 or vl_Var_content.intVal != 0){ |
| action(%definitionId&">Reset failed["&c_EPTF_ExecCtrl_tcStatNames[vl_j]&"]"); |
| setverdict(fail,"Reset failed ["&c_EPTF_ExecCtrl_tcStatNames[vl_j]&"]!"); |
| } |
| } else if(ischosen(vl_Var_content.floatVal)) { |
| if(vl_Var_testedContentList[vl_idx].floatVal < 0.0 or vl_Var_content.floatVal != 0.0){ |
| action(%definitionId&">Reset failed["&c_EPTF_ExecCtrl_tcStatNames[vl_j]&"]"); |
| setverdict(fail,"Reset failed ["&c_EPTF_ExecCtrl_tcStatNames[vl_j]&"]!"); |
| } |
| } |
| } else { |
| log("No such EPTF variable with name: ", vl_statName); |
| setverdict(fail,"No such EPTF variable with name: "&vl_statName); |
| } |
| } |
| } |
| } |
| |
| // Push -> Exit |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Exit); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Exit); |
| setverdict(fail,"No such EPTF variable with name: "&c_EPTF_ExecCtrl_Exit); |
| //exit |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| |
| function f_EPTF_ExecCtrl_UIHandler_Test_getScGroupStatus(in integer pl_scGrpStatusVar) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT return EPTF_StatusLED { |
| var EPTF_Var_DirectContent vl_Var_content; |
| f_EPTF_Var_refreshContent(pl_scGrpStatusVar); |
| f_EPTF_Var_getContent(pl_scGrpStatusVar, vl_Var_content); |
| return vl_Var_content.statusLEDVal; |
| } |
| |
| function f_EPTF_ExecCtrl_UIHandler_Test_terminateButton( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_UIHandler_CT pl_gui, in float pl_time, in boolean pl_createDefaultLGen := true) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT |
| { |
| f_EPTF_ExecCtrl_setManualControl(true); |
| |
| if(pl_createDefaultLGen == true){ |
| f_EPTF_ExecCtrl_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := c_EPTF_ExecCtrl_DefaultScenarios_EGrpList, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList& |
| c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList_scGroups, |
| pl_EPTF_LGenBase_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_tcTypeDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList := {c_EPTF_ExecCtrl_DefaultScenarios_defaultTCType}, |
| pl_EPTF_LGenBase_TcMgmt_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_WeightedScenarioDeclaratorList:= {}, |
| pl_EPTF_ExecCtrl_TimeProfileDescrList:={}, |
| pl_EPTF_ExecCtrl_TimeProfileList:={}, |
| pl_EPTF_ExecCtrl_TimeProfile2TcList:={}, |
| pl_EPTF_LGenBase_ScenarioTypeDeclaratorList:= {c_EPTF_ExecCtrl_DefaultScenarios_normalScenario,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenario, |
| c_EPTF_ExecCtrl_DefaultScenarios_normalScenarioInScGrp,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenarioInScGrp}, |
| pl_EPTF_ExecCtrl_ScenarioInstanceTypeList:={}, |
| pl_EPTF_ExecCtrl_LGenPool_Declarators:=c_EPTF_ExecCtrl_Test_defaultLGenPool_Declarators, |
| pl_EPTF_ExecCtrl_EntityGroup2LGenPool_List:=c_EPTF_ExecCtrl_DefaultScenarios_EntityGroup2LGenPool_List, |
| pl_EPTF_ExecCtrl_LGenFunction_Entry_List:={{ |
| name := omit, |
| fn := refers(f_ExecCtrl_Test_createDefaultLGen) |
| }}, |
| pl_EPTF_ExecCtrl_PhaseList_Declarators:=c_EPTF_ExecCtrl_DefaultScenarios_phases, |
| pl_EPTF_ExecCtrl_ScenarioGroup_Declarators:=c_EPTF_ExecCtrl_DefaultScenarios_scGroups, |
| pl_EPTF_ExecCtrl_RegulatorNames:={"LimitMaxRegulator"}, |
| pl_EPTF_ExecCtrl_RegulatedItems:={} |
| ); |
| } else { |
| f_EPTF_ExecCtrl_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := c_EPTF_ExecCtrl_DefaultScenarios_EGrpList, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList& |
| c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList_scGroups, |
| pl_EPTF_LGenBase_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_tcTypeDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList := {c_EPTF_ExecCtrl_DefaultScenarios_defaultTCType}, |
| pl_EPTF_LGenBase_TcMgmt_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_WeightedScenarioDeclaratorList:= {}, |
| pl_EPTF_ExecCtrl_TimeProfileDescrList:={}, |
| pl_EPTF_ExecCtrl_TimeProfileList:={}, |
| pl_EPTF_ExecCtrl_TimeProfile2TcList:={}, |
| pl_EPTF_LGenBase_ScenarioTypeDeclaratorList:= {c_EPTF_ExecCtrl_DefaultScenarios_normalScenario,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenario, |
| c_EPTF_ExecCtrl_DefaultScenarios_normalScenarioInScGrp,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenarioInScGrp}, |
| pl_EPTF_ExecCtrl_ScenarioInstanceTypeList:={}, |
| pl_EPTF_ExecCtrl_LGenPool_Declarators:=c_EPTF_ExecCtrl_Test_slowLGenPool_Declarators, |
| pl_EPTF_ExecCtrl_EntityGroup2LGenPool_List:=c_EPTF_ExecCtrl_DefaultScenarios_EntityGroup2LGenPool_List, |
| pl_EPTF_ExecCtrl_LGenFunction_Entry_List:={{ |
| name := omit, |
| fn := refers(f_ExecCtrl_Test_createDefaultLGenWithSpeed) |
| }}, |
| pl_EPTF_ExecCtrl_PhaseList_Declarators:=c_EPTF_ExecCtrl_DefaultScenarios_phases, |
| pl_EPTF_ExecCtrl_ScenarioGroup_Declarators:=c_EPTF_ExecCtrl_DefaultScenarios_scGroups, |
| pl_EPTF_ExecCtrl_RegulatorNames:={"LimitMaxRegulator"}, |
| pl_EPTF_ExecCtrl_RegulatedItems:={} |
| ); |
| |
| action(%definitionId&"->f_EPTF_ExecCtrl_setNrOfExpectedClients called"); |
| f_EPTF_ExecCtrl_setNrOfExpectedClients(); |
| } |
| |
| // 2013.04.02. f_EPTF_ExecCtrl_start(); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| f_ExecCtrl_Test_storeDataFromTspScenario2Grps(); |
| |
| var integer vl_varID; |
| var charstring vl_varName; |
| const charstring cl_scGroupStateVarName := "Var.Execution_Control.PhaseLists.tabbox.DefaultPhases.tab.DefaultScGroup.GroupStatus";//"GUI.EPTF_ExecCtrl.Statistics.EG.DefaultEGrp.SC.DefaultScInScGrp.SCGrp.DefaultScGroup.GroupStatusLED"; |
| var integer vl_scGroupStateVarId := -1; |
| var EPTF_Var_DirectContent vl_Var_content; |
| timer t_stop, t_test_stop; |
| log("v_EPTF_ExecCtrl_Test_scenarios: ",v_EPTF_ExecCtrl_Test_scenarios); |
| t_test.start(0.0); |
| |
| alt |
| { |
| [f_EPTF_ExecCtrl_checkReadyToRun()] t_test.timeout { |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Start); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Start); |
| setverdict(fail); |
| //exit |
| } |
| vl_scGroupStateVarId := f_EPTF_Var_getId(cl_scGroupStateVarName); |
| if (vl_scGroupStateVarId==-1) { |
| setverdict(fail, "Scenario group status LED var not found."); |
| f_EPTF_Base_stopAll(); |
| //exit |
| } |
| t_test_stop.start(tsp_EPTF_Var_SyncInterval+25.0); // go to phase2 phase |
| repeat; |
| } |
| // wait until ScGroup is running phase2 |
| [vl_scGroupStateVarId!=-1 and f_EPTF_ExecCtrl_UIHandler_Test_getScGroupStatus(vl_scGroupStateVarId) == {led_green, "phase2 - RUNNING"}] t_test_stop.timeout { |
| |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_Test_scenarios); i := i + 1) |
| { |
| f_EPTF_ExecCtrl_Test_checkScRunning(v_EPTF_ExecCtrl_Test_scenarios[i]); |
| } |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Terminate); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Terminate); |
| setverdict(fail); |
| //exit |
| } |
| t_stop.start(tsp_EPTF_Var_SyncInterval+2.0); |
| repeat; |
| } |
| [] t_stop.timeout { |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_Test_scenarios); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScNotRunning(v_EPTF_ExecCtrl_Test_scenarios[i]); |
| } |
| |
| for (var integer lgenidx := 0; lgenidx < pl_nOfClients; lgenidx := lgenidx + 1) { |
| for(var integer eg:=0; eg<f_EPTF_ExecCtrl_getLGenNumEGroups(lgenidx); eg:=eg+1) { |
| var integer vl_eGrpIdx := f_EPTF_ExecCtrl_getLGenEGrpIdx(lgenidx,eg); |
| var EPTF_IntegerList vl_eGrpScenarios := f_EPTF_ExecCtrl_eGrp_scenarios(vl_eGrpIdx); |
| for(var integer sc:=0; sc<sizeof(vl_eGrpScenarios);sc:=sc+1) { |
| var integer vl_scIdx := vl_eGrpScenarios[sc]; |
| |
| vl_varName := "StatusLED.Scenario.LGenStatus." & f_EPTF_ExecCtrl_getLGenName(lgenidx) & "." & f_EPTF_ExecCtrl_eGrp_name(vl_eGrpIdx)& |
| "."&f_EPTF_ExecCtrl_getScenarioName(vl_scIdx); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if (vl_varID != -1) { |
| f_EPTF_Var_refreshContent(vl_varID); |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| if (vl_Var_content.statusLEDVal.text == "Stopped") { |
| log("Expected Scenario state: ", vl_Var_content.statusLEDVal.text); |
| setverdict(pass); |
| } else { |
| log("Unexpected Scenario state: ", vl_Var_content.statusLEDVal.text, " Expected: Stopped"); |
| setverdict(fail); |
| } |
| |
| } else { |
| log("No such EPTF variable with name: ", vl_varName); |
| setverdict(fail); |
| } |
| } |
| } |
| } |
| // check if ScGroup is in idle phase2 |
| if (f_EPTF_ExecCtrl_UIHandler_Test_getScGroupStatus(vl_scGroupStateVarId) != {led_blue, "phase2 - IDLE"}) { |
| setverdict(fail, "Scenario group is not idle."); |
| f_EPTF_Base_stopAll(); |
| //exit |
| } |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Exit); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Exit); |
| setverdict(fail); |
| //exit |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrl_UIHandler_Test_NrOfExpectedClients( |
| in charstring pl_name, |
| in integer pl_nOfClients, in float pl_time) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT |
| { |
| f_EPTF_ExecCtrl_setManualControl(true); |
| |
| f_EPTF_ExecCtrl_init_CT( |
| pl_selfName := pl_name, |
| pl_nrOfClients := pl_nOfClients, |
| pl_createLGenPools := true, |
| pl_loadModulepars := false, |
| pl_autoStart := false, |
| pl_dataSource_compRef := mtc); |
| |
| f_EPTF_ExecCtrl_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := c_EPTF_ExecCtrl_DefaultScenarios_EGrpList, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList& |
| c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList_scGroups, |
| pl_EPTF_LGenBase_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_tcTypeDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList := {c_EPTF_ExecCtrl_DefaultScenarios_defaultTCType}, |
| pl_EPTF_LGenBase_TcMgmt_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_WeightedScenarioDeclaratorList:= {}, |
| pl_EPTF_ExecCtrl_TimeProfileDescrList:={}, |
| pl_EPTF_ExecCtrl_TimeProfileList:={}, |
| pl_EPTF_ExecCtrl_TimeProfile2TcList:={}, |
| pl_EPTF_LGenBase_ScenarioTypeDeclaratorList:= {c_EPTF_ExecCtrl_DefaultScenarios_normalScenario,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenario, |
| c_EPTF_ExecCtrl_DefaultScenarios_normalScenarioInScGrp,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenarioInScGrp}, |
| pl_EPTF_ExecCtrl_ScenarioInstanceTypeList:={}, |
| pl_EPTF_ExecCtrl_LGenPool_Declarators:=c_EPTF_ExecCtrl_Test_slowLGenPool_Declarators, |
| pl_EPTF_ExecCtrl_EntityGroup2LGenPool_List:=c_EPTF_ExecCtrl_DefaultScenarios_EntityGroup2LGenPool_List, |
| pl_EPTF_ExecCtrl_LGenFunction_Entry_List:={{ |
| name := omit, |
| fn := refers(f_ExecCtrl_Test_createDefaultLGenWithSpeed) |
| }}, |
| pl_EPTF_ExecCtrl_PhaseList_Declarators:=c_EPTF_ExecCtrl_DefaultScenarios_phases, |
| pl_EPTF_ExecCtrl_ScenarioGroup_Declarators:=c_EPTF_ExecCtrl_DefaultScenarios_scGroups, |
| pl_EPTF_ExecCtrl_RegulatorNames:={"LimitMaxRegulator"}, |
| pl_EPTF_ExecCtrl_RegulatedItems:={} |
| ); |
| |
| |
| f_EPTF_ExecCtrl_setNrOfExpectedClients(); |
| |
| if(f_EPTF_ExecCtrl_getNrOfExpectedClients() == pl_nOfClients + c_EPTF_ExecCtrl_Test_slowLGenPool_Declarators[0].lgenPoolItems[0].num){ |
| setverdict(pass) |
| } else { |
| setverdict(fail,"NrOfexpectedClients should be : " & log2str(pl_nOfClients + c_EPTF_ExecCtrl_Test_slowLGenPool_Declarators[0].lgenPoolItems[0].num) & ", but its "& log2str(f_EPTF_ExecCtrl_getNrOfExpectedClients())) |
| } |
| f_EPTF_Base_cleanup_CT(); |
| } |
| |
| |
| function f_EPTF_ExecCtrl_UIHandler_Test_ExitButton( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_UIHandler_CT pl_gui, in float pl_time) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT |
| { |
| |
| f_EPTF_ExecCtrl_setManualControl(true); |
| f_ExecCtrl_Test_storeDataFromTspScenario2Grps(); |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| timer t_exit; |
| var integer vl_varID; |
| t_test.start(0.0); |
| |
| |
| alt |
| { |
| [f_EPTF_ExecCtrl_checkReadyToRun()] t_test.timeout { |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Start); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Start); |
| setverdict(fail); |
| //exit |
| } |
| t_exit.start(tsp_EPTF_Var_SyncInterval+2.0) |
| repeat; |
| } |
| [] t_exit.timeout { |
| |
| for (var integer i := 0; i < sizeof(v_EPTF_ExecCtrl_Test_scenarios); i := i + 1) |
| { |
| f_EPTF_ExecCtrl_Test_checkScRunning(v_EPTF_ExecCtrl_Test_scenarios[i]); |
| } |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Exit); |
| if(vl_varID != -1) { |
| setverdict(pass); |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Exit); |
| setverdict(fail); |
| //exit |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| |
| function f_EPTF_ExecCtrl_UIHandler_Test_StartStopScenarioDisable( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_UIHandler_CT pl_gui, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT |
| { |
| |
| f_EPTF_ExecCtrl_setManualControl(true); |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| f_EPTF_ExecCtrl_disableStartStopScenario({pl_scens[0].eGrpName, pl_scens[0].scenName}); |
| |
| var charstring vl_varName; |
| var integer vl_varID; |
| var EPTF_Var_DirectContent vl_Var_content; |
| timer t_start; |
| t_start.start(0.0); |
| alt |
| {[f_EPTF_ExecCtrl_checkReadyToRun()] t_start.timeout { |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Start); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Start); |
| setverdict(fail); |
| //exit |
| } |
| t_test.start(tsp_EPTF_Var_SyncInterval+2.0) |
| repeat; |
| } |
| [] t_test.timeout { |
| f_EPTF_Var_logNames("##### Vars ####"); |
| vl_varName := "ExecCtrl.stopScenario."& pl_scens[0].eGrpName &"." & pl_scens[0].scenName; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {boolVal := true}); |
| |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| // wait for variable update |
| t_test.start(f_EPTF_Var_getRefreshPeriod(0)+1.0); |
| t_test.timeout; |
| |
| vl_varName := "ExecCtrl.scenarioStatus."& pl_scens[0].eGrpName &"." & pl_scens[0].scenName; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| timer t_wait; |
| t_wait.start(20.0); |
| t_test.start(0.0); |
| alt { |
| [f_EPTF_Var_getStatusLEDValue(vl_varID) == {led_green, "Running"}] t_test.timeout { |
| setverdict(pass); |
| } |
| [] t_wait.timeout { |
| setverdict(fail, "Scenario is not running: ", pl_scens[0].scenName) |
| f_EPTF_Base_stopAll(); |
| } |
| } |
| |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| |
| f_EPTF_ExecCtrl_enableStartStopScenario({pl_scens[0].eGrpName, pl_scens[0].scenName}); |
| t_test.start(1.0); |
| t_test.timeout; |
| |
| vl_varName := "ExecCtrl.stopScenario."& pl_scens[0].eGrpName &"." & pl_scens[0].scenName; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {boolVal := true}); |
| |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| t_test.start(tsp_EPTF_Var_SyncInterval+1.0); |
| t_test.timeout; |
| vl_varName := "ExecCtrl.scenarioStatus."& pl_scens[0].eGrpName &"." & pl_scens[0].scenName; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| timer t_wait; |
| t_wait.start(20.0); |
| t_test.start(0.0); |
| alt { |
| [f_EPTF_Var_getStatusLEDValue(vl_varID) == {led_blue, "Stopped"}] t_test.timeout { |
| setverdict(pass); |
| } |
| [] t_wait.timeout { |
| setverdict(fail, "Scenario is not Stopped: ", pl_scens[0].scenName, " ", f_EPTF_Var_getStatusLEDValue(vl_varID)) |
| f_EPTF_Base_stopAll(); |
| } |
| } |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Exit); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Exit); |
| setverdict(fail); |
| //exit |
| } |
| repeat; |
| } |
| } // alt |
| } |
| function f_EPTF_ExecCtrl_UIHandler_Test_StartStopScenarioDisable2( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_UIHandler_CT pl_gui, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT |
| { |
| |
| //f_EPTF_ExecCtrl_setManualControl(false); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| f_EPTF_ExecCtrl_disableStartStopScenario({pl_scens[0].eGrpName, pl_scens[0].scenName}); |
| |
| var charstring vl_varName; |
| var integer vl_varID; |
| var EPTF_Var_DirectContent vl_Var_content; |
| t_test.start(0.0); |
| alt |
| { |
| [f_EPTF_ExecCtrl_checkReadyToRun()] t_test.timeout { |
| f_EPTF_Var_logNames("##### Vars ####"); |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| vl_varName := "ExecCtrl.startTC." & pl_scens[i].eGrpName & "." & pl_scens[i].scenName & "." & pl_scens[i].tcName |
| |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {boolVal := true}); |
| |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| //setverdict(fail); |
| f_EPTF_Base_stopAll(); |
| //exit |
| } |
| } |
| // wait for Running |
| vl_varName := "ExecCtrl.scenarioStatus."& pl_scens[0].eGrpName &"." & pl_scens[0].scenName; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| timer t_wait; |
| t_wait.start(20.0); |
| t_test.start(0.0); |
| alt { |
| [f_EPTF_Var_getStatusLEDValue(vl_varID) == {led_green, "Running"}] t_test.timeout { |
| } |
| [] t_wait.timeout { |
| setverdict(fail, "Scenario is not running: ", pl_scens[0].scenName) |
| f_EPTF_Base_stopAll(); |
| } |
| } |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| f_EPTF_Base_stopAll(); |
| } |
| |
| vl_varName := "ExecCtrl.stopScenario."& pl_scens[0].eGrpName &"." & pl_scens[0].scenName; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {boolVal := true}); |
| |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| // wait for variable update |
| t_test.start(f_EPTF_Var_getRefreshPeriod(0)+1.0); |
| t_test.timeout; |
| |
| vl_varName := "ExecCtrl.scenarioStatus."& pl_scens[0].eGrpName &"." & pl_scens[0].scenName; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| timer t_wait; |
| t_wait.start(20.0); |
| t_test.start(0.0); |
| alt { |
| [f_EPTF_Var_getStatusLEDValue(vl_varID) == {led_green, "Running"}] t_test.timeout { |
| setverdict(pass); |
| } |
| [] t_wait.timeout { |
| setverdict(fail, "Scenario is not running: ", pl_scens[0].scenName) |
| f_EPTF_Base_stopAll(); |
| } |
| } |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| |
| f_EPTF_ExecCtrl_enableStartStopScenario({pl_scens[0].eGrpName, pl_scens[0].scenName}); |
| t_test.start(1.0); |
| t_test.timeout; |
| |
| vl_varName := "ExecCtrl.stopScenario."& pl_scens[0].eGrpName &"." & pl_scens[0].scenName; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {boolVal := true}); |
| |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| t_test.start(tsp_EPTF_Var_SyncInterval+1.0); |
| t_test.timeout; |
| vl_varName := "ExecCtrl.scenarioStatus."& pl_scens[0].eGrpName &"." & pl_scens[0].scenName; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| timer t_wait; |
| t_wait.start(20.0); |
| t_test.start(0.0); |
| alt { |
| [f_EPTF_Var_getStatusLEDValue(vl_varID) == {led_blue, "Stopped"}] t_test.timeout { |
| setverdict(pass); |
| } |
| [] t_wait.timeout { |
| setverdict(fail, "Scenario is not Stopped: ", pl_scens[0].scenName, " ", f_EPTF_Var_getStatusLEDValue(vl_varID)) |
| f_EPTF_Base_stopAll(); |
| } |
| } |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| f_EPTF_Base_stopAll(); |
| //exit |
| } |
| |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Exit); |
| if(vl_varID != -1) { |
| log("Push Exit button"); |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Exit); |
| setverdict(fail); |
| //exit |
| } |
| repeat; |
| } |
| } // alt |
| } |
| function f_EPTF_ExecCtrl_UIHandler_Test_StartStopTcDisable( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_UIHandler_CT pl_gui, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT |
| { |
| |
| //f_EPTF_ExecCtrl_setManualControl(false); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| f_EPTF_ExecCtrl_disableStartStopTC({pl_scens[0].eGrpName, pl_scens[0].scenName, pl_scens[0].tcName}); |
| |
| var charstring vl_varName; |
| var integer vl_varID; |
| var EPTF_Var_DirectContent vl_Var_content; |
| t_test.start(0.0); |
| alt |
| { |
| [f_EPTF_ExecCtrl_checkReadyToRun()] t_test.timeout { |
| f_EPTF_Var_logNames("##### Vars ####"); |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| vl_varName := "ExecCtrl.startTC." & pl_scens[i].eGrpName & "." & pl_scens[i].scenName & "." & pl_scens[i].tcName |
| |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {boolVal := true}); |
| |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| f_EPTF_Base_stopAll(); |
| //exit |
| } |
| } |
| |
| // wait for variable update |
| t_test.start(f_EPTF_Var_getRefreshPeriod(0)+1.0); |
| t_test.timeout; |
| |
| vl_varName := "ExecCtrl.scenarioStatus."& pl_scens[0].eGrpName &"." & pl_scens[0].scenName; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| if (vl_Var_content.statusLEDVal.text == "Idle") { |
| setverdict(pass); |
| } else { |
| log("Senario is not running: ", pl_scens[0].scenName); |
| setverdict(fail); |
| } |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| |
| f_EPTF_ExecCtrl_enableStartStopTC({pl_scens[0].eGrpName, pl_scens[0].scenName, pl_scens[0].tcName}); |
| t_test.start(1.0); |
| t_test.timeout; |
| |
| vl_varName := "ExecCtrl.startTC."& pl_scens[0].eGrpName &"." & pl_scens[0].scenName &"." & pl_scens[0].tcName; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {boolVal := true}); |
| |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| t_test.start(tsp_EPTF_Var_SyncInterval+1.0); |
| t_test.timeout; |
| vl_varName := "ExecCtrl.scenarioStatus."& pl_scens[0].eGrpName &"." & pl_scens[0].scenName; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| if (vl_Var_content.statusLEDVal.text == "Running") { |
| setverdict(pass); |
| } else { |
| log("Senario is running: ", pl_scens[0].scenName, " ", vl_Var_content.statusLEDVal.text); |
| setverdict(fail); |
| } |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Exit); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Exit); |
| setverdict(fail); |
| //exit |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrl_UIHandler_Test_Tab_EntityGroup( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_UIHandler_CT pl_gui, in float pl_time) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT |
| { |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| var integer vl_varID; |
| var charstring vl_varName; |
| var EPTF_Var_DirectContent vl_Var_content; |
| t_test.start(0.0); |
| var EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList vl_entityGrps; |
| f_EPTF_ExecCtrl_get_entityGrpDeclarators(vl_entityGrps); |
| |
| timer tl_stop := pl_time; |
| |
| alt |
| { |
| [f_EPTF_ExecCtrl_checkReadyToRun()] t_test.timeout { |
| for (var integer i := 0; i < sizeof(vl_entityGrps); i := i + 1) |
| { |
| vl_varName := "EntityGroup." & int2str(i); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| if (vl_entityGrps[i].name == vl_Var_content.charstringVal) { |
| setverdict(pass); |
| } else { |
| log("Wrong Entity Group Name: ", vl_Var_content.charstringVal, "Expected: ", vl_entityGrps[i].name); |
| setverdict(fail); |
| } |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| |
| vl_varName := "EntityType." & int2str(i); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| if (vl_entityGrps[i].eType == vl_Var_content.charstringVal) { |
| setverdict(pass); |
| } else { |
| log("Wrong Entity Type Name: ", vl_Var_content.charstringVal, "Expected: ", vl_entityGrps[i].eType); |
| setverdict(fail); |
| } |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| vl_varName := "EntityNum." & int2str(i); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| if (vl_entityGrps[i].eCount == vl_Var_content.intVal) { |
| setverdict(pass); |
| } else { |
| log("Wrong Entity Number Name: ", vl_Var_content.intVal, "Expected: ", vl_entityGrps[i].eCount); |
| setverdict(fail); |
| } |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| } |
| tl_stop.start; |
| repeat; |
| } |
| []tl_stop.timeout { |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Exit); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Exit); |
| setverdict(fail); |
| //exit |
| } |
| repeat; |
| } |
| } // alt |
| } |
| //not automatic |
| function f_EPTF_ExecCtrl_UIHandler_Test_Tab_Resources( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_UIHandler_CT pl_gui, in float pl_time) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT |
| { |
| var integer vl_varID; |
| var charstring vl_varName; |
| var EPTF_ExecCtrl_Test_ResourceList vl_resourceDB; |
| var EPTF_Var_DirectContent vl_Var_content; |
| var EPTF_IntegerList vl_Alloc; |
| var integer vl_clientAlloc; |
| var integer vl_clientAvailable; |
| var integer vl_bMaxEntityCount; |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| var EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList vl_entityGrps; |
| f_EPTF_ExecCtrl_get_entityGrpDeclarators(vl_entityGrps); |
| |
| for (var integer i := 0; i < sizeof(tsp_entityTypes); i := i + 1) { |
| vl_resourceDB[i] := c_empty_EPTF_ExecCtrl_Test_Resource; |
| vl_resourceDB[i].eType := tsp_entityTypes[i].eType; |
| vl_resourceDB[i].allocated := 0; |
| } |
| |
| |
| for (var integer i := 0; i < sizeof(tsp_behaviorTypes); i := i + 1) { |
| vl_Alloc[i] := 0; |
| for (var integer j := 0; j < sizeof(tsp_entityTypes); j := j + 1) { |
| for (var integer k := 0; k < sizeof(tsp_entityTypes[j].behaviors); k := k + 1) { |
| if(tsp_entityTypes[j].behaviors[k] == tsp_behaviorTypes[i].bName) { |
| vl_resourceDB[j].available := tsp_behaviorTypes[i].eCount; |
| for (var integer l := 0; l < sizeof(vl_entityGrps); l := l + 1) { |
| if(vl_entityGrps[l].eType == tsp_entityTypes[j].eType) { |
| vl_Alloc[i] := vl_Alloc[i] + vl_entityGrps[l].eCount; |
| |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| for (var integer i := 0; i < sizeof(tsp_entityTypes); i := i + 1) { |
| for (var integer j := 0; j < sizeof(tsp_entityTypes[i].behaviors); j := j + 1) { |
| for (var integer k := 0; k < sizeof(tsp_behaviorTypes); k := k + 1) { |
| if (tsp_entityTypes[i].behaviors[j] == tsp_behaviorTypes[k].bName) { |
| if (j == 0) { |
| vl_resourceDB[i].maxAvailable := tsp_behaviorTypes[k].eCount; |
| } else |
| if (vl_resourceDB[i].maxAvailable > tsp_behaviorTypes[k].eCount) { |
| vl_resourceDB[i].maxAvailable := tsp_behaviorTypes[k].eCount; |
| } |
| |
| if (vl_resourceDB[i].available > tsp_behaviorTypes[k].eCount - vl_Alloc[k]) { |
| vl_resourceDB[i].available := tsp_behaviorTypes[k].eCount - vl_Alloc[k] |
| // vl_resourceDB[i].maxAvailable := tsp_behaviorTypes[k].eCount; |
| vl_resourceDB[i].bAllocated := vl_Alloc[k]; |
| |
| } |
| } |
| |
| } |
| } |
| } |
| for (var integer i := 0; i < sizeof(tsp_entityTypes); i := i + 1) { |
| for(var integer j := 0; j < sizeof(vl_entityGrps); j := j + 1) { |
| if (vl_resourceDB[i].eType == vl_entityGrps[j].eType) { |
| vl_resourceDB[i].allocated := vl_resourceDB[i].allocated + vl_entityGrps[j].eCount; |
| } |
| } |
| } |
| t_test.start(0.0); |
| |
| timer tl_stop := pl_time; |
| |
| alt |
| { |
| [f_EPTF_ExecCtrl_checkReadyToRun()] t_test.timeout { |
| for (var integer j := 0; j < pl_nOfClients; j := j + 1) { |
| vl_varName := "Resource.LGenName." & int2str(j); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| //Client name must be a number |
| if (int2str(j) == vl_Var_content.charstringVal) { |
| setverdict(pass); |
| } else { |
| log("Wrong Client Name: ", vl_Var_content.charstringVal, "Expected: ", int2str(j)); |
| setverdict(fail); |
| } |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| for (var integer i := 0; i < sizeof(tsp_entityTypes); i := i + 1) |
| { |
| vl_varName := "Resource.EntityType." & int2str(j) & "." & int2str(i); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| if (tsp_entityTypes[i].eType == vl_Var_content.charstringVal) { |
| setverdict(pass); |
| } else { |
| log("Wrong Entity Type Name: ", vl_Var_content.charstringVal, "Expected: ", tsp_entityTypes[i].eType); |
| setverdict(fail); |
| } |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| |
| |
| if (vl_resourceDB[i].allocated != 0) { |
| |
| if((vl_resourceDB[i].allocated) mod pl_nOfClients > j) { |
| vl_clientAlloc :=vl_resourceDB[i].maxAvailable - (vl_resourceDB[i].allocated / pl_nOfClients + 1) |
| } else { |
| vl_clientAlloc := vl_resourceDB[i].maxAvailable - (vl_resourceDB[i].allocated / pl_nOfClients) |
| } |
| vl_varName := "Resource.EntityAllocNum." & int2str(j) & "." & int2str(i); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| if (vl_clientAlloc == vl_Var_content.intVal) { |
| setverdict(pass); |
| } else { |
| log("Wrong allocation: ", vl_Var_content.intVal, " Expected: ", vl_clientAlloc); |
| setverdict(fail); |
| } |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| } |
| else { |
| //do nothing |
| } |
| if((vl_resourceDB[i].bAllocated) mod pl_nOfClients > j) { |
| // vl_clientAvailable := vl_resourceDB[i].maxAvailable - vl_resourceDB[i].bAllocated / pl_nOfClients - 1 |
| vl_clientAvailable := vl_resourceDB[i].maxAvailable; |
| } else { |
| //vl_clientAvailable := vl_resourceDB[i].maxAvailable - vl_resourceDB[i].bAllocated / pl_nOfClients |
| vl_clientAvailable := vl_resourceDB[i].maxAvailable; |
| } |
| vl_varName := "Resource.EntityAvailNum." & int2str(j) & "." & int2str(i); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| if (vl_clientAvailable == vl_Var_content.intVal) { |
| log("Free resource: ", vl_Var_content.intVal, " Expected: ", vl_clientAvailable); |
| setverdict(pass); |
| } else { |
| log("Wrong free resource: ", vl_Var_content.intVal, " Expected: ", vl_clientAvailable); |
| setverdict(fail); |
| } |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| setverdict(fail); |
| //exit |
| } |
| } |
| } // for |
| tl_stop.start; |
| repeat; |
| } |
| |
| [] tl_stop.timeout { |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Exit); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| log("There is no such Variable: ", c_EPTF_ExecCtrl_Exit); |
| setverdict(fail); |
| //exit |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| |
| function f_EPTF_ExecCtrl_UIHandler_Test_regulatorsReady() runs on EPTF_ExecCtrl_Test_CT return boolean { |
| const integer cl_lastRegulatorId := 5; |
| var boolean vl_regulatorsReady := true; |
| var integer vl_regulatorNum := 0; |
| for (var integer vl_regulatorId:=0; vl_regulatorsReady and vl_regulatorId<f_EPTF_ExecCtrl_Regulator_getNofRegulators(); vl_regulatorId:=vl_regulatorId+1) { |
| |
| var integer vl_statusIdx := f_EPTF_ExecCtrl_Regulator_getRegulatorStatusIdxByRegulatorId(vl_regulatorId); |
| var charstring vl_regulatorName := f_EPTF_ExecCtrl_Regulator_getRegulatorNameByRegulatorId(vl_regulatorId); |
| // these regulators are used in the test: |
| if (vl_regulatorName=="Regulator 1" |
| or vl_regulatorName=="Regulator 2" |
| ) { |
| vl_regulatorNum := vl_regulatorNum + 1; |
| vl_regulatorsReady := vl_regulatorsReady and f_EPTF_Var_getStatusLEDValue(vl_statusIdx)=={ color := led_blue,text := "Disabled" } |
| } |
| } |
| return vl_regulatorsReady and (vl_regulatorNum == 2); |
| } |
| |
| |
| function f_EPTF_ExecCtrl_UIHandler_Test_Regulator( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_UIHandler_CT pl_gui, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT |
| { |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| f_EPTF_ExecCtrl_setManualControl(true); |
| |
| //Waiting for regulators to start up... |
| f_EPTF_ExecCtrl_waitForCondition(refers(f_EPTF_ExecCtrl_UIHandler_Test_regulatorsReady)); |
| |
| var integer vl_varID; |
| var charstring vl_varName; |
| var charstring vl_regulatorName; |
| var EPTF_Var_DirectContent vl_Var_content; |
| var float vl_totalValue; |
| timer t_start; |
| t_start.start(0.0); |
| |
| alt |
| {[f_EPTF_ExecCtrl_checkReadyToRun()] t_start.timeout { |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Start); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| } else { |
| setverdict(fail,"There is no such Variable: ", c_EPTF_ExecCtrl_Start); |
| //exit |
| } |
| t_test.start(1.0+pl_scens[0].timeProfile[0].time) |
| repeat; |
| } |
| [] t_test.timeout { |
| vl_regulatorName := f_EPTF_ExecCtrl_Regulator_getRegulatorName(pl_scens[0].state); |
| f_EPTF_Var_logNames("##### Vars ####"); |
| |
| |
| |
| vl_varName := "EPTF_ExecCtrl.Regulator.totalValue." & vl_regulatorName; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| // expected: 12 |
| if (vl_Var_content.floatVal == pl_scens[0].timeProfile[0].targetValue ) { |
| setverdict(pass); |
| } else { |
| setverdict(fail,"Wrong Total value: ", vl_Var_content.floatVal, "Expected: ", pl_scens[0].timeProfile[0].targetValue); |
| } |
| } else { |
| setverdict(fail,"There is no such Variable: ", vl_varName); |
| //exit |
| } |
| //first regulator row name |
| |
| vl_varName := "RegulatedItemName." & int2str(0); |
| log("vl_varName: ", vl_varName); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| var charstring vl_regulatedItemName := pl_scens[0].eGrpName & "." & pl_scens[0].scenName & "." & pl_scens[0].tcName; |
| if(vl_varID != -1) { |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| log("### vl_Var_content: ", vl_Var_content); |
| if (vl_Var_content.charstringVal == vl_regulatedItemName) { |
| setverdict(pass); |
| } else { |
| setverdict(fail,"Wrong Regulated item name on this widget: ", vl_Var_content.charstringVal, "Expected: ", vl_regulatedItemName); |
| } |
| } else { |
| setverdict(fail,"There is no such Variable: ", vl_varName); |
| //exit |
| } |
| |
| vl_varName := "Traffic.Regulator." & pl_scens[0].eGrpName & "." & int2str(f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[0].eGrpName, pl_scens[0].scenName)) & "." & int2str(f_EPTF_ExecCtrl_getTcOfScenarioIdx(f_EPTF_ExecCtrl_getTrafficCaseIdx(pl_scens[0].eGrpName,pl_scens[0].scenName,pl_scens[0].tcName))); |
| log("vl_varName, name: ",vl_varName); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| |
| if (vl_Var_content.charstringVal == f_EPTF_ExecCtrl_Regulator_getRegulatorName(pl_scens[0].state)) { |
| setverdict(pass); |
| } else { |
| setverdict(fail,"Wrong Regulator name on this widget: ", vl_Var_content.charstringVal, "Expected: ", vl_regulatorName); |
| } |
| } else { |
| setverdict(fail,"There is no such Variable: ", vl_varName); |
| //exit |
| } |
| //last regulator row |
| vl_varName := "RegulatedItemWeight." & int2str(3); |
| |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {floatVal := 0.5}); |
| |
| } else { |
| setverdict(fail,"There is no such Variable: ", vl_varName); |
| //exit |
| } |
| // change the regulator of the [0]-th and [1]-th item to the same: Regulator 3 (disconnected) |
| vl_varName := "Traffic.Regulator." & pl_scens[1].eGrpName & "." & int2str(f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[1].eGrpName, pl_scens[1].scenName)); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {charstringVal := "2"}); |
| |
| } else { |
| setverdict(fail,"There is no such Variable: ", vl_varName); |
| //exit |
| } |
| vl_varName := "Traffic.Regulator." & pl_scens[0].eGrpName & "." & int2str(f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[0].eGrpName, pl_scens[0].scenName)) |
| & "." & int2str(f_EPTF_ExecCtrl_getTcOfScenarioIdx(f_EPTF_ExecCtrl_getTrafficCaseIdx(pl_scens[0].eGrpName, pl_scens[0].scenName, pl_scens[0].tcName))); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {charstringVal := "2"}); |
| |
| } else { |
| setverdict(fail,"There is no such Variable: ", vl_varName); |
| //exit |
| } |
| t_test.start(tsp_EPTF_Var_SyncInterval+1.0); |
| t_test.timeout; |
| vl_regulatorName := f_EPTF_ExecCtrl_Regulator_getRegulatorName(pl_scens[0].state); |
| vl_varName := "EPTF_ExecCtrl.Regulator.totalValue." & vl_regulatorName; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| vl_totalValue := vl_Var_content.floatVal; |
| // should be 6+12 = 18 |
| if (vl_totalValue== pl_scens[0].timeProfile[0].targetValue + pl_scens[1].timeProfile[0].targetValue) { |
| setverdict(pass); |
| } else { |
| setverdict(fail,"Wrong Total value: ", vl_totalValue, "Expected: ", pl_scens[0].timeProfile[0].targetValue + pl_scens[1].timeProfile[0].targetValue); |
| } |
| } else { |
| setverdict(fail,"There is no such Variable: ", vl_varName); |
| //exit |
| } |
| |
| vl_varName := "Traffic.ScenarioCPS." & pl_scens[1].eGrpName & "." & int2str(f_EPTF_ExecCtrl_getScenarioIdx(pl_scens[1].eGrpName, pl_scens[1].scenName)); |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| |
| // 18 -> (0.5,1.0) => (6,12) |
| if (vl_Var_content.floatVal == 12.0) { |
| setverdict(pass); |
| } else { |
| setverdict(fail,"Wrong CPS value: ", vl_Var_content.floatVal, "Expected: ", 12.0); |
| } |
| } else { |
| setverdict(fail,"There is no such Variable: ", vl_varName); |
| //exit |
| } |
| |
| vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Exit); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| repeat; |
| } else { |
| setverdict(fail,"There is no such Variable: ", c_EPTF_ExecCtrl_Exit); |
| //exit |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrl_Regulator_Test_getTotalCps( |
| in charstring pl_name, |
| in integer pl_nOfClients, in charstring pl_RegulatorName, in float pl_TotalValue) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| f_EPTF_ExecCtrl_setManualControl(false); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| |
| var integer vl_regulatorId; |
| var float vl_cps; |
| |
| t_test.start(6.0); |
| |
| alt |
| { |
| [] t_test.timeout { |
| vl_regulatorId := f_EPTF_ExecCtrl_Regulator_getRegulatorIdByName(pl_RegulatorName); |
| if (vl_regulatorId != -1) { |
| vl_cps := f_EPTF_ExecCtrl_Regulator_getTotalCps(vl_regulatorId); |
| if ( vl_cps == pl_TotalValue) { |
| setverdict(pass); |
| } else { |
| log("Wrong calculated total value: ", vl_cps, ", expected: ", pl_TotalValue); |
| setverdict(fail); |
| } |
| } else { |
| log("There is no such Regulator: ", pl_RegulatorName); |
| setverdict(fail); |
| } |
| f_EPTF_ExecCtrl_stopAllScenarios(); |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrl_Regulator_Test_getRegulatorName( |
| in charstring pl_name, |
| in integer pl_nOfClients, in charstring pl_RegulatorName, in integer pl_regulatorId) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| |
| var integer vl_regulatorId; |
| t_test.start(1.0); |
| |
| alt |
| { |
| [] t_test.timeout { |
| vl_regulatorId := f_EPTF_ExecCtrl_Regulator_getRegulatorIdByName(pl_RegulatorName); |
| if (vl_regulatorId != -1) { |
| |
| if ( vl_regulatorId == pl_regulatorId) { |
| setverdict(pass); |
| } else { |
| log("Wrong regulator ID: ", vl_regulatorId, ", expected: ", pl_regulatorId); |
| setverdict(fail); |
| } |
| } else { |
| log("There is no such Regulator: ", pl_RegulatorName); |
| setverdict(fail); |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrl_Regulator_Test_findRegulatorsForScenario( |
| in charstring pl_name, |
| in integer pl_nOfClients, |
| in EPTF_ExecCtrl_Test_SCDataList pl_scens) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| |
| var integer vl_regulatorId; |
| t_test.start(1.0); |
| var EPTF_IntegerList vl_regulatorIdxList |
| |
| alt |
| { |
| [] t_test.timeout { |
| for( var integer i := 0; i < sizeof(pl_scens); i := i + 1 ){ |
| f_EPTF_ExecCtrl_Regulator_findRegulatorsForScenario(pl_scens[i].eGrpName, pl_scens[i].scenName, vl_regulatorIdxList); |
| if (sizeof(vl_regulatorIdxList)==0) {continue;}; |
| if (vl_regulatorIdxList[0] == pl_scens[i].state) { |
| setverdict(pass); |
| } else { |
| log("Wrong regulator ID List: ", vl_regulatorIdxList[0] ,", expected: ", pl_scens[i].state); |
| setverdict(fail); |
| } |
| |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| const float c_EPTF_ExecCtrl_Regulator_Test_regulatorStartTime := 10.0; |
| function f_EPTF_ExecCtrl_Regulator_Test_totalCPSWithTimeProfile( |
| in charstring pl_name, |
| in integer pl_nOfClients, |
| in EPTF_UIHandler_CT pl_gui, |
| in EPTF_ExecCtrl_Test_SCDataList pl_scens, |
| in float pl_totalValue) |
| runs on |
| EPTF_ExecCtrl_Test_CT |
| { |
| f_EPTF_ExecCtrl_loadConfig( |
| pl_EPTF_ExecCtrl_RegulatedItems := { |
| { |
| idName := { |
| cps_TC := { |
| eGrpName := pl_scens[0].eGrpName, |
| scName := pl_scens[0].scenName, |
| tcName := pl_scens[0].tcName |
| } |
| }, |
| weight := 1.0, |
| enabled := true, |
| regulatorName := "Regulator 2" |
| } |
| } |
| ); |
| f_EPTF_ExecCtrl_setManualControl(true); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| |
| var charstring vl_regulatorName; |
| var float vl_cps; |
| |
| var EPTF_IntegerList vl_regulatorIdxList; |
| var EPTF_ExecCtrl_RegulatedItemName vl_idName; |
| f_EPTF_ExecCtrl_Regulator_findRegulatorsForScenario(pl_scens[0].eGrpName, pl_scens[0].scenName, vl_regulatorIdxList); |
| if(sizeof(vl_regulatorIdxList) == 0) { |
| if(f_EPTF_ExecCtrl_getScenarioTypeByName(pl_scens[0].scenName) != 3) { |
| vl_idName := { cps_TC := { |
| pl_scens[0].eGrpName, |
| pl_scens[0].scenName, |
| pl_scens[0].tcName |
| } |
| |
| } |
| } else { |
| vl_idName := { cps_SC := { |
| pl_scens[0].eGrpName, |
| pl_scens[0].scenName |
| } |
| } |
| } |
| //get Regulator Id from user code |
| vl_regulatorName := f_EPTF_ExecCtrl_Regulator_getRegulatorName(pl_scens[0].state); |
| //f_EPTF_ExecCtrl_Regulator_addRegulatedItem(vl_idName, vl_regulatorName, 1.0, true); |
| |
| //log("v_EPTF_ExecCtrl_RegulatedItems: ", v_EPTF_ExecCtrl_RegulatedItems, " v_EPTF_ExecCtrl_Regulators: ", v_EPTF_ExecCtrl_Regulators); |
| } else { |
| log("Warning, scenario has a regulator: ", f_EPTF_ExecCtrl_Regulator_getRegulatorName(vl_regulatorIdxList[0])); |
| } |
| |
| t_test.start(0.0); |
| var float vl_timeTolerance := f_EPTF_Var_getRefreshPeriod(0)*2.1; |
| |
| alt |
| { |
| [f_EPTF_ExecCtrl_checkReadyToRun()] t_test.timeout { |
| |
| // start the scenario that has no time profile to put the regulator to auto-off |
| f_EPTF_ExecCtrl_startScenarioOnLGensByName("grp1", "scenario_0_declarator3"); |
| t_test.start(c_EPTF_ExecCtrl_Regulator_Test_regulatorStartTime); |
| t_test.timeout; // wait until regulator is in auto-off |
| |
| f_EPTF_ExecCtrl_startAllScenarios(); |
| var float vl_startTime := f_EPTF_Base_getRelTimeInSecs(); |
| |
| timer t_maxWait := 10.0; |
| |
| // check original CPS: |
| var float vl_expectedCPS := tsp_LGenBase_TcMgmt_ScenarioDeclarators2[0].tcList[0].cpsToReach; // original CPS of the traffic case |
| t_test.start(0.0); |
| t_maxWait.start; |
| alt { |
| [f_EPTF_ExecCtrl_Regulator_getTotalCps(pl_scens[0].state) == vl_expectedCPS] t_test.timeout { |
| var float vl_currentTime := f_EPTF_Base_getRelTimeInSecs(); |
| if (vl_currentTime-vl_startTime<pl_scens[0].timeProfile[0].time) { |
| setverdict(pass,"Expected CPS detected at ",vl_currentTime-vl_startTime, " off the expected time"); |
| } else { |
| setverdict(fail,"Original CPS: ", vl_expectedCPS, ", appeared too late: ", vl_currentTime-vl_startTime, " secs after start (expected time:",pl_scens[0].timeProfile[0].time,")") |
| } |
| } |
| [] t_maxWait.timeout { |
| setverdict(fail,"Expected CPS ",vl_expectedCPS," did not appear"); |
| f_EPTF_Base_stopAll(none); |
| } |
| } |
| |
| // check first item in time profile: |
| vl_expectedCPS := pl_scens[0].timeProfile[0].targetValue; // first item in timeProfile |
| t_test.start(0.0); |
| t_maxWait.start; |
| alt { |
| [f_EPTF_ExecCtrl_Regulator_getTotalCps(pl_scens[0].state) == vl_expectedCPS] t_test.timeout { |
| var float vl_currentTime := f_EPTF_Base_getRelTimeInSecs(); |
| if ( vl_currentTime-vl_startTime<pl_scens[0].timeProfile[0].time+vl_timeTolerance |
| and vl_currentTime-vl_startTime>pl_scens[0].timeProfile[0].time-vl_timeTolerance) { |
| setverdict(pass,"Expected CPS detected at ",vl_currentTime-vl_startTime-pl_scens[0].timeProfile[0].time, " off the expected time"); |
| } else { |
| setverdict(fail,"Original CPS: ", vl_expectedCPS, ", appeared at: ", vl_currentTime-vl_startTime, |
| ", but expected at: ",pl_scens[0].timeProfile[0].time," secs after start") |
| } |
| } |
| [] t_maxWait.timeout { |
| setverdict(fail,"Expected CPS ",vl_expectedCPS," did not appear"); |
| f_EPTF_Base_stopAll(none); |
| } |
| } |
| |
| // check last item in time profile: |
| vl_expectedCPS := pl_scens[0].timeProfile[3].targetValue; // last item in timeProfile |
| t_test.start(0.0); |
| t_maxWait.start; |
| alt { |
| [f_EPTF_ExecCtrl_Regulator_getTotalCps(pl_scens[0].state) == vl_expectedCPS] t_test.timeout { |
| var float vl_currentTime := f_EPTF_Base_getRelTimeInSecs(); |
| if ( vl_currentTime-vl_startTime<pl_scens[0].timeProfile[3].time+vl_timeTolerance |
| and vl_currentTime-vl_startTime>pl_scens[0].timeProfile[3].time-vl_timeTolerance) { |
| setverdict(pass,"Expected CPS detected at ",vl_currentTime-vl_startTime-pl_scens[0].timeProfile[3].time, " off the expected time"); |
| } else { |
| setverdict(fail,"Original CPS: ", vl_expectedCPS, ", appeared at: ", vl_currentTime-vl_startTime, |
| ", but expected at: ",pl_scens[0].timeProfile[3].time," secs after start") |
| } |
| } |
| [] t_maxWait.timeout { |
| setverdict(fail,"Expected CPS ",vl_expectedCPS," did not appear"); |
| f_EPTF_Base_stopAll(none); |
| } |
| } |
| |
| // stop the test: |
| var integer vl_varID := f_EPTF_Var_getId(c_EPTF_ExecCtrl_Exit); |
| if(vl_varID != -1) { |
| f_EPTF_Var_adjustContent(vl_varID, {intVal := 1}); |
| repeat; |
| } else { |
| //setverdict(fail,"There is no such Variable: ", c_EPTF_ExecCtrl_Exit); |
| f_EPTF_Base_stopAll(none); |
| //exit |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| function f_EPTF_ExecCtrlClient_UIHandler_Test_CPS( |
| in charstring pl_selfName, |
| in EPTF_ExecCtrl_Test_CT pl_execCtrl, |
| in EPTF_ExecCtrl_Test_SCDataList pl_scens, |
| in boolean pl_checkCpsToReach := true, |
| in float pl_measureAfterSet := 2.0) |
| runs on EPTF_ExecCtrlClient_UIHandler_Test_CT |
| { |
| timer tl_test; |
| var float vl_currentCPS := 0.0; |
| var float vl_targetCPS := 0.0; |
| var integer vl_count := 0; |
| var integer vl_varID := -1; |
| var charstring vl_varNameBase; |
| var EPTF_Var_DirectContent vl_Var_content; |
| var charstring vl_varName; |
| |
| v_EPTF_ExecCtrlClient_Test_scenarios := pl_scens; |
| tl_test.start(pl_scens[0].timeProfile[vl_count].time + pl_measureAfterSet); |
| |
| f_EPTF_ExecCtrlClient_UIHandler_Test_init(pl_selfName, pl_execCtrl); |
| |
| alt { |
| [] tl_test.timeout { |
| |
| for(var integer i := 0; i < sizeof(pl_scens); i := i + 1 ) { |
| var float vl_maxError := 0.001; |
| vl_varNameBase := f_EPTF_LGenBaseStats_getNamePrefix(pl_scens[i].eGrpName, pl_scens[i].scenName, pl_scens[i].tcName); |
| if(pl_checkCpsToReach) { |
| if(f_EPTF_ExecCtrlTest_isWeightedScenariobyName(pl_scens[i].eGrpName, pl_scens[i].scenName)) { |
| vl_currentCPS := f_EPTF_LGenBase_getScCpsSoReachByName(pl_scens[i].eGrpName, pl_scens[i].scenName); |
| } else { |
| vl_currentCPS := f_EPTF_LGenBase_getTcCpsToReachByName(pl_scens[i].eGrpName, pl_scens[i].scenName, pl_scens[i].tcName); |
| } |
| } else { |
| if(f_EPTF_ExecCtrlTest_isWeightedScenariobyName(pl_scens[i].eGrpName, pl_scens[i].scenName)) { |
| vl_currentCPS := f_EPTF_ExecCtrlTest_getWeightedScenarioCps(pl_scens[i].eGrpName, pl_scens[i].scenName); |
| } else { |
| //vl_currentCPS := f_EPTF_LGenBase_getCPSByNames(pl_scens[i].eGrpName, pl_scens[i].scenName, pl_scens[i].tcName); |
| vl_varName := vl_varNameBase&c_EPTF_LGenBaseStats_nameOfTcLastCps; |
| vl_varID := f_EPTF_Var_getId(vl_varName); |
| if(vl_varID != -1) { |
| f_EPTF_Var_refreshContent(vl_varID); |
| f_EPTF_Var_getContent(vl_varID, vl_Var_content); |
| vl_currentCPS := vl_Var_content.floatVal |
| } else { |
| log("There is no such Variable: ", vl_varName); |
| //setverdict(fail); |
| f_EPTF_Base_stopAll(); |
| //exit |
| } |
| } |
| vl_maxError := 1.0; |
| } |
| |
| vl_targetCPS := pl_scens[i].timeProfile[vl_count].targetValue; |
| if(vl_currentCPS < vl_targetCPS + vl_maxError and vl_currentCPS > vl_targetCPS - vl_maxError) |
| { |
| log("Current CPS: ", vl_currentCPS, " expected: ", vl_targetCPS); |
| setverdict(pass) |
| } else { |
| log("Current CPS: ", vl_currentCPS, " expected: ", vl_targetCPS); |
| setverdict(fail) |
| } |
| } |
| vl_count := vl_count + 1; |
| if (vl_count < sizeof(pl_scens[0].timeProfile)) { |
| tl_test.start(pl_scens[0].timeProfile[vl_count].time - pl_scens[0].timeProfile[vl_count - 1].time); |
| } |
| repeat; |
| } |
| } |
| } |
| |
| function f_EPTF_ExecCtrlClient_UIHandler_Test_behavior( |
| in charstring pl_selfName, |
| in EPTF_ExecCtrl_Test_CT pl_ExecCtrlRef) |
| runs on EPTF_ExecCtrlClient_UIHandler_Test_CT |
| { |
| f_EPTF_ExecCtrlClient_UIHandler_Test_init(pl_selfName, pl_ExecCtrlRef); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| //////////////////////////////////////////////////////////////////////////////// |
| //R3 |
| //////////////////////////////////////////////////////////////////////////////// |
| function f_EPTF_ExecCtrl_Test_TrafficDistribution( |
| in charstring pl_name, |
| in integer pl_nOfClients, |
| in EPTF_ExecCtrl_Test_SCDataList pl_scens, |
| in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT { |
| f_EPTF_ExecCtrl_setManualControl(true); |
| |
| t_test.start(pl_time); |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| f_EPTF_ExecCtrl_loadConfig(pl_EPTF_ExecCtrl_PhaseList_Declarators := tsp_EPTF_LGenBase_PhaseList_Declarators); |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| |
| alt |
| { |
| [] t_test.timeout { |
| f_EPTF_ExecCtrl_Test_checkScOff(pl_scens[0]); |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[1]); |
| log("### I am here"); |
| repeat; |
| } |
| } // alt |
| |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_TrafficDistribution( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_Test_CT pl_execCtrl, |
| in EPTF_ExecCtrl_Test_SCDataList pl_scens, |
| in integer pl_eCount) |
| runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| timer tl_test; |
| |
| f_EPTF_ExecCtrlClient_Test_init(pl_name, pl_execCtrl, pl_eCount); |
| |
| f_EPTF_ExecCtrlClient_Test_CPS(pl_name, pl_execCtrl, {pl_scens[1]}); |
| log(">>>>Timer starts: ", pl_scens[0].timeProfile[0].time); //<<< This line is never reached!!! |
| tl_test.start(pl_scens[0].timeProfile[0].time); |
| |
| alt { |
| [] tl_test.timeout { |
| log("v_trafficCount: ", v_trafficCount); |
| repeat; |
| |
| } |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_user_testCPS |
| ( |
| in charstring pl_hostname, |
| in charstring pl_compName |
| ) |
| runs on EPTF_ExecCtrl_Test_CT |
| return EPTF_ExecCtrlClient_CT |
| { |
| // Create LGen instance |
| var EPTF_ExecCtrlClient_Test_CT vc_client := EPTF_ExecCtrlClient_Test_CT.create(pl_compName, pl_hostname); |
| // Connect and Start the LGen |
| vc_client.start(f_EPTF_ExecCtrlClient_Test_CPS("TestPool" & pl_compName, self, |
| f_setCPSforLGens(v_EPTF_ExecCtrl_Test_scenarios, 3))); |
| |
| return vc_client; |
| } |
| |
| function f_EPTF_ExecCtrl_Test_pool( |
| in charstring pl_name, |
| in integer pl_nOfClients, in EPTF_ExecCtrl_Test_SCDataList pl_scens, in float pl_time) |
| runs on EPTF_ExecCtrl_Test_CT |
| { |
| |
| v_EPTF_ExecCtrl_Test_scenarios := pl_scens; |
| var EPTF_ExecCtrl_LGenFunction_Entry_List vl_functions := |
| { |
| { |
| name := "CreateLgen", |
| fn := refers(f_EPTF_ExecCtrl_user_testCPS) |
| } |
| } |
| |
| f_EPTF_ExecCtrl_loadConfig(pl_EPTF_ExecCtrl_LGenFunction_Entry_List := vl_functions); |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| f_EPTF_ExecCtrl_registerScenarioStateChangedCallback(refers(f_EPTF_ExecCtrl_Test_UpdateScenarioState)); |
| t_test.start(pl_time); |
| |
| alt |
| { |
| [] t_test.timeout { |
| for (var integer i := 0; i < sizeof(pl_scens); i := i + 1) { |
| f_EPTF_ExecCtrl_Test_checkScRunning(pl_scens[i]); |
| } |
| repeat; |
| } |
| } // alt |
| } |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| //R4 |
| //////////////////////////////////////////////////////////////////////////////// |
| group PhaseRegulation { |
| |
| // LoadRegulator - setting the load-to-reach as cps-to-reach for simple testing |
| function f_EPTF_ExecCtrl_Test_PhaseRegulator_getSutLoad() |
| runs on EPTF_LoadRegulator_CT |
| return float |
| { |
| return 1.0; |
| } |
| |
| function f_EPTF_ExecCtrl_Test_PhaseRegulator_calcCPS(in float loadToReach, in float oldCps) |
| runs on PhaseRegulator_CT |
| return float |
| { |
| return loadToReach; |
| } |
| |
| function f_EPTF_ExecCtrl_Test_PhaseRegulator_behavior( |
| in charstring pl_selfName, |
| in EPTF_Var_CT pl_execCtrlCompRef, |
| in float pl_loadToReach) |
| runs on PhaseRegulator_CT |
| { |
| f_EPTF_LoadRegulator_init_CT(pl_selfName, |
| refers(f_EPTF_ExecCtrl_Test_PhaseRegulator_getSutLoad), |
| refers(f_EPTF_ExecCtrl_Test_PhaseRegulator_calcCPS)); |
| f_EPTF_LoadRegulator_registerToExecCtrl(pl_execCtrlCompRef); |
| f_EPTF_LoadRegulator_adjustTargetLoadInExecCtrl(pl_loadToReach); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| // FIXME: the following three functions should be public in ExecCtrl, but they are friend: |
| function f_EPTF_ExecCtrl_Regulator_getNofRegulators() runs on EPTF_ExecCtrl_CT return integer { |
| return sizeof(v_EPTF_ExecCtrl_Regulators); |
| } |
| |
| function f_EPTF_ExecCtrl_Regulator_getRegulatorNameByRegulatorId(in integer pl_regulatorId) runs on EPTF_ExecCtrl_CT return charstring { |
| return v_EPTF_ExecCtrl_Regulators[pl_regulatorId].name; |
| } |
| |
| function f_EPTF_ExecCtrl_Regulator_getRegulatorStatusIdxByRegulatorId(in integer pl_regulatorId) runs on EPTF_ExecCtrl_CT return integer { |
| return v_EPTF_ExecCtrl_Regulators[pl_regulatorId].statusIdx; |
| } |
| |
| function f_EPTF_ExecCtrl_Test_regulatorsReady() runs on EPTF_ExecCtrl_Test_CT return boolean { |
| const integer cl_lastRegulatorId := 5; |
| var boolean vl_regulatorsReady := true; |
| var integer vl_regulatorNum := 0; |
| for (var integer vl_regulatorId:=0; vl_regulatorsReady and vl_regulatorId<f_EPTF_ExecCtrl_Regulator_getNofRegulators(); vl_regulatorId:=vl_regulatorId+1) { |
| |
| var integer vl_statusIdx := f_EPTF_ExecCtrl_Regulator_getRegulatorStatusIdxByRegulatorId(vl_regulatorId); |
| var charstring vl_regulatorName := f_EPTF_ExecCtrl_Regulator_getRegulatorNameByRegulatorId(vl_regulatorId); |
| // these regulators are used in the test: |
| if (vl_regulatorName=="Regulator1" |
| or vl_regulatorName=="Regulator2" |
| or vl_regulatorName=="Regulator4" |
| or vl_regulatorName=="Regulator5a" |
| or vl_regulatorName=="Regulator5b" |
| or vl_regulatorName=="RegulatorW" |
| ) { |
| vl_regulatorNum := vl_regulatorNum + 1; |
| vl_regulatorsReady := vl_regulatorsReady and f_EPTF_Var_getStatusLEDValue(vl_statusIdx)=={ color := led_blue,text := "Disabled" } |
| } |
| } |
| return vl_regulatorsReady and (vl_regulatorNum == 6); |
| } |
| |
| // ExecCtrl |
| function f_EPTF_ExecCtrl_Test_phaseRegulation( |
| in charstring pl_name, |
| in integer pl_nOfClients) |
| runs on EPTF_ExecCtrl_Test_CT { |
| |
| var EPTF_ExecCtrl_RegulatorNames vl_regulatorNames := {}; |
| for(var integer i:=0; i<sizeof(tsp_ExecCtrl_Test_phaseRegulationConfig.phaseRegulators); i:=i+1) { |
| vl_regulatorNames[i] := tsp_ExecCtrl_Test_phaseRegulationConfig.phaseRegulators[i].regulatorName; |
| } |
| |
| f_EPTF_ExecCtrl_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := tsp_ExecCtrl_Test_phaseRegulationConfig.eGroups, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := tsp_ExecCtrl_Test_phaseRegulationConfig.sc2eGroups, |
| pl_EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList := tsp_ExecCtrl_Test_phaseRegulationConfig.tcTypes, |
| pl_EPTF_LGenBase_ScenarioTypeDeclaratorList := tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes, |
| pl_EPTF_ExecCtrl_PhaseList_Declarators := tsp_ExecCtrl_Test_phaseRegulationConfig.phases, |
| pl_EPTF_ExecCtrl_ScenarioGroup_Declarators := tsp_ExecCtrl_Test_phaseRegulationConfig.scGroups, |
| pl_EPTF_ExecCtrl_RegulatorNames := vl_regulatorNames, |
| pl_EPTF_ExecCtrl_RegulatedItems := tsp_ExecCtrl_Test_phaseRegulationConfig.regulatedItems |
| ); |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients); |
| |
| f_EPTF_ExecCtrl_waitForCondition(refers(f_EPTF_ExecCtrl_checkReadyToRun)); |
| |
| //Waiting for regulators to start up... |
| f_EPTF_ExecCtrl_waitForCondition(refers(f_EPTF_ExecCtrl_Test_regulatorsReady)); |
| |
| f_EPTF_ExecCtrl_startAllScenarioGroups(); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| // ExecCtrlClient |
| function f_EPTF_ExecCtrlClient_Test_phaseRegulationTcSuccess(in integer pl_tcAbsIdx) |
| runs on EPTF_ExecCtrlClient_TestPhaseRegulation_CT |
| { |
| var charstring vl_eGrpName, vl_scName, vl_tcName, vl_item; |
| var integer vl_eGrpIdx := f_EPTF_LGenBase_getEGrpIdxOfTc(pl_tcAbsIdx); |
| var integer vl_scIdx := f_EPTF_LGenBase_getScIdxOfTc(pl_tcAbsIdx); |
| f_EPTF_LGenBase_trafficCaseIdNames(pl_tcAbsIdx, vl_eGrpName, vl_scName, vl_tcName); |
| |
| var charstring vl_actualPhase := ""; |
| var EPTF_LGenBase_Phase_States vl_state; |
| if(f_EPTF_LGenBase_getActualPhase(f_EPTF_LGenBase_scenarioAbsIdxByName(vl_eGrpName, vl_scName), vl_actualPhase, vl_state)) { |
| if(f_EPTF_LGenBase_isWeightedScenario(vl_eGrpIdx, vl_scIdx)) { |
| vl_item := f_EPTF_ExecCtrlClient_Test_genItemName(vl_eGrpName, vl_scName, "", vl_actualPhase); |
| } else { |
| vl_item := f_EPTF_ExecCtrlClient_Test_genItemName(vl_eGrpName, vl_scName, vl_tcName, vl_actualPhase); |
| } |
| } else { |
| if(f_EPTF_LGenBase_isWeightedScenario(vl_eGrpIdx, vl_scIdx)) { |
| vl_item := f_EPTF_ExecCtrlClient_Test_genItemName(vl_eGrpName, vl_scName, "", ""); |
| } else { |
| vl_item := f_EPTF_ExecCtrlClient_Test_genItemName(vl_eGrpName, vl_scName, vl_tcName, ""); |
| } |
| } |
| |
| var integer vl_idx := -1; |
| if(f_EPTF_str2int_HashMap_Find(v_phaseRegulatedItemHash, vl_item, vl_idx)) { |
| var float vl_cps; |
| if(f_EPTF_LGenBase_isWeightedScenario(vl_eGrpIdx, vl_scIdx)) { |
| vl_cps := f_EPTF_LGenBase_getScCpsToReachByIdx(vl_eGrpIdx, vl_scIdx); |
| } else { |
| vl_cps := f_EPTF_LGenBase_getTcCpsToReachByIdx(pl_tcAbsIdx); |
| } |
| if(v_phaseRegulatedItems[vl_idx].lastCps != vl_cps) { |
| log(%definitionId&" in phase: "&vl_actualPhase&" : last CPS of item ", vl_item, " changed from ", v_phaseRegulatedItems[vl_idx].lastCps, " to ", vl_cps); |
| v_phaseRegulatedItems[vl_idx].lastCps := vl_cps; |
| v_phaseRegulatedItems[vl_idx].doCheck := true; |
| } |
| } |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_phaseRegTestEnd(integer tcIdx) |
| runs on EPTF_ExecCtrlClient_TestPhaseRegulation_CT |
| { |
| timer tWait; |
| tWait.start(5.1); |
| tWait.timeout; // wait for concurrently running scenarios to end |
| log(%definitionId&": v_phaseRegulatedItems: ", v_phaseRegulatedItems); |
| for(var integer i:=0; i<sizeof(v_phaseRegulatedItems); i:=i+1) { |
| if(v_phaseRegulatedItems[i].doCheck) { |
| log(%definitionId&": item: ", v_phaseRegulatedItems[i].name, |
| ", expected CPS: ", v_phaseRegulatedItems[i].expectedCps, |
| ", last CPS: ", v_phaseRegulatedItems[i].lastCps); |
| if(v_phaseRegulatedItems[i].expectedCps == v_phaseRegulatedItems[i].lastCps) { |
| setverdict(pass); |
| } else { |
| setverdict(fail); |
| } |
| } |
| } |
| f_EPTF_Base_stopAll(none); |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_genItemName( |
| in charstring pl_eGrpName, |
| in charstring pl_scName, |
| in charstring pl_tcName, |
| in charstring pl_phase) |
| return charstring |
| { |
| var charstring vl_name := pl_eGrpName & "." & pl_scName; |
| if(pl_tcName != "") { vl_name := vl_name & "." & pl_tcName; } |
| if(pl_phase != "") { vl_name := vl_name & "@" & pl_phase; } |
| return vl_name; |
| } |
| |
| function f_EPTFExecCtrlClient_Test_regulatedItemName2str(in EPTF_ExecCtrl_RegulatedItemName pl_name) |
| runs on EPTF_Base_CT |
| return charstring |
| { |
| if(ischosen(pl_name.cps_TC)) { |
| return f_EPTF_ExecCtrlClient_Test_genItemName( |
| pl_name.cps_TC.eGrpName, |
| pl_name.cps_TC.scName, |
| pl_name.cps_TC.tcName, |
| ""); |
| } else if(ischosen(pl_name.cps_SC)) { |
| return f_EPTF_ExecCtrlClient_Test_genItemName( |
| pl_name.cps_SC.eGrpName, |
| pl_name.cps_SC.scName, |
| "", |
| ""); |
| } else if(ischosen(pl_name.cps_TCInPhase)) { |
| return f_EPTF_ExecCtrlClient_Test_genItemName( |
| pl_name.cps_TCInPhase.eGrpName, |
| pl_name.cps_TCInPhase.scName, |
| pl_name.cps_TCInPhase.tcName, |
| pl_name.cps_TCInPhase.phase); |
| } else if(ischosen(pl_name.cps_SCInPhase)) { |
| return f_EPTF_ExecCtrlClient_Test_genItemName( |
| pl_name.cps_SCInPhase.eGrpName, |
| pl_name.cps_SCInPhase.scName, |
| "", |
| pl_name.cps_SCInPhase.phase); |
| } else { |
| log(%definitionId&": ERROR: unsupported field for type EPTF_ExecCtrl_RegulatedItemName: ", pl_name); |
| f_EPTF_Base_stopAll(inconc); |
| return ""; |
| } |
| } |
| |
| function f_EPTF_ExecCtrlClient_TestPhaseRegulation_init_CT( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_Test_CT pl_execCtrl, |
| in boolean pl_keepRegulatedCpsInSubseqentPhases) |
| runs on EPTF_ExecCtrlClient_TestPhaseRegulation_CT |
| { |
| // if(v_EPTF_ExecCtrlClient_Test_initialized) { return } |
| f_EPTF_ExecCtrlClient_Test_init(pl_name, pl_execCtrl, -1, false); |
| v_phaseRegulatedItemHash := f_EPTF_str2int_HashMap_New(c_EPTF_ExecCtrl_Test_itemHashName); |
| f_EPTF_Base_registerCleanup(refers(EPTF_ExecCtrlClient_TestPhaseRegulation_cleanup_CT)); |
| var integer vl_idx := -1; |
| |
| // store expected CPS of regulated items |
| for(var integer i:=0; i<sizeof(tsp_ExecCtrl_Test_phaseRegulationConfig.regulatedItems); i:=i+1) { |
| var charstring vl_regItemName := f_EPTFExecCtrlClient_Test_regulatedItemName2str(tsp_ExecCtrl_Test_phaseRegulationConfig.regulatedItems[i].idName); |
| if(f_EPTF_str2int_HashMap_Find(v_phaseRegulatedItemHash, vl_regItemName, vl_idx)) { // found |
| log(%definitionId&": ERROR: regulated item redefined: ", vl_regItemName); |
| f_EPTF_Base_stopAll(inconc); |
| } else { |
| vl_idx := sizeof(v_phaseRegulatedItems); |
| v_phaseRegulatedItems[vl_idx] := c_EPTF_ExecCtrl_Test_PhaseRegulatedItem_init |
| v_phaseRegulatedItems[vl_idx].name := vl_regItemName; |
| f_EPTF_str2int_HashMap_Insert(v_phaseRegulatedItemHash, vl_regItemName, vl_idx); |
| var charstring vl_reg := tsp_ExecCtrl_Test_phaseRegulationConfig.regulatedItems[i].regulatorName; |
| for(var integer j:=0; j< sizeof(tsp_ExecCtrl_Test_phaseRegulationConfig.phaseRegulators); j:=j+1) { |
| if(tsp_ExecCtrl_Test_phaseRegulationConfig.phaseRegulators[j].regulatorName == vl_reg) { |
| v_phaseRegulatedItems[vl_idx].expectedCps := tsp_ExecCtrl_Test_phaseRegulationConfig.phaseRegulators[j].targetValue; |
| } |
| } |
| } |
| log(%definitionId&": expected CPS of regulated item ", vl_regItemName, ": ", v_phaseRegulatedItems[vl_idx].expectedCps); |
| } |
| |
| // get expected CPS of all the remaining items (SC or TC CPSs, for which no regulated items were specified) |
| for(var integer i:=0; i<sizeof(tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes); i:=i+1) { |
| var EPTF_CharstringList vl_phases := {}; |
| var boolean vl_scIsWeighted := false; |
| var float vl_cps := 0.0; |
| var charstring vl_itemName := ""; |
| for(var integer j:=0; j<sizeof(tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].scParamsList); j:=j+1) { |
| if(ischosen(tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].scParamsList[j].weightedScData)) { |
| vl_scIsWeighted := true; |
| vl_cps := tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].scParamsList[j].weightedScData.cpsToReach; |
| log(%definitionId&": CPS of scenario ", tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].name, ": ", vl_cps); |
| } |
| if(ischosen(tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].scParamsList[j].phaseListName)) { |
| for(var integer k:=0; k<sizeof(tsp_ExecCtrl_Test_phaseRegulationConfig.phases); k:=k+1) { |
| if( tsp_ExecCtrl_Test_phaseRegulationConfig.phases[k].name == |
| tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].scParamsList[j].phaseListName) { |
| for(var integer l:=0; l<sizeof(tsp_ExecCtrl_Test_phaseRegulationConfig.phases[k].phases); l:=l+1) { |
| vl_phases[l] := tsp_ExecCtrl_Test_phaseRegulationConfig.phases[k].phases[l].name |
| } |
| } |
| } |
| log(%definitionId&": phase list of scenario ", tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].name, ": ", vl_phases); |
| } |
| } |
| if(vl_phases == {}) { |
| log(%definitionId&": WARNING: no phase list for scenario ", |
| tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].name); |
| } |
| if(vl_scIsWeighted) { |
| for(var integer eGrpIdx:=0; eGrpIdx<sizeof(tsp_ExecCtrl_Test_phaseRegulationConfig.sc2eGroups); eGrpIdx:=eGrpIdx+1) { |
| for(var integer scIdx:=0; scIdx<sizeof(tsp_ExecCtrl_Test_phaseRegulationConfig.sc2eGroups[eGrpIdx].scenarioNames); scIdx:=scIdx+1) { |
| if(tsp_ExecCtrl_Test_phaseRegulationConfig.sc2eGroups[eGrpIdx].scenarioNames[scIdx] == tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].name) { |
| var float vl_cpsOfScInstance := vl_cps; // this is needed in case the SC is assigned to more than one eGroup and one of these has no regulated item specified |
| for(var integer pIdx:=0; pIdx<sizeof(vl_phases); pIdx:=pIdx+1) { |
| vl_itemName := f_EPTF_ExecCtrlClient_Test_genItemName( |
| tsp_ExecCtrl_Test_phaseRegulationConfig.sc2eGroups[eGrpIdx].eGrpName, |
| tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].name, |
| "", |
| vl_phases[pIdx]); |
| if(f_EPTF_str2int_HashMap_Find(v_phaseRegulatedItemHash, vl_itemName, vl_idx)) { |
| if(pl_keepRegulatedCpsInSubseqentPhases) { |
| vl_cpsOfScInstance := v_phaseRegulatedItems[vl_idx].expectedCps; |
| } |
| } else { |
| vl_idx := sizeof(v_phaseRegulatedItems); |
| v_phaseRegulatedItems[vl_idx] := c_EPTF_ExecCtrl_Test_PhaseRegulatedItem_init |
| v_phaseRegulatedItems[vl_idx].name := vl_itemName; |
| v_phaseRegulatedItems[vl_idx].expectedCps := vl_cpsOfScInstance; |
| f_EPTF_str2int_HashMap_Insert(v_phaseRegulatedItemHash, vl_itemName, vl_idx); |
| log(%definitionId&": expected CPS of item ", vl_itemName, ": ", v_phaseRegulatedItems[vl_idx].expectedCps); |
| } |
| } |
| } |
| } |
| } |
| } else { |
| for(var integer eGrpIdx:=0; eGrpIdx<sizeof(tsp_ExecCtrl_Test_phaseRegulationConfig.sc2eGroups); eGrpIdx:=eGrpIdx+1) { |
| for(var integer scIdx:=0; scIdx<sizeof(tsp_ExecCtrl_Test_phaseRegulationConfig.sc2eGroups[eGrpIdx].scenarioNames); scIdx:=scIdx+1) { |
| if(tsp_ExecCtrl_Test_phaseRegulationConfig.sc2eGroups[eGrpIdx].scenarioNames[scIdx] == tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].name) { |
| for(var integer tcIdx:=0; tcIdx<sizeof(tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].tcList); tcIdx:=tcIdx+1) { |
| for(var integer paramIdx:=0; paramIdx<sizeof(tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].tcList[tcIdx].tcParamsList); paramIdx:=paramIdx+1) { |
| if(ischosen(tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].tcList[tcIdx].tcParamsList[paramIdx].target)) { |
| if(ischosen(tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].tcList[tcIdx].tcParamsList[paramIdx].target.cpsToReach)) { |
| vl_cps := tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].tcList[tcIdx].tcParamsList[paramIdx].target.cpsToReach; |
| } else { |
| log("ERROR: unsupported union field in TC target for TC ", tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].tcList[tcIdx].tcName, |
| ": ", tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].tcList[tcIdx].tcParamsList[paramIdx].target); |
| f_EPTF_Base_stopAll(inconc); |
| } |
| } |
| } |
| for(var integer pIdx:=0; pIdx<sizeof(vl_phases); pIdx:=pIdx+1) { |
| vl_itemName := f_EPTF_ExecCtrlClient_Test_genItemName( |
| tsp_ExecCtrl_Test_phaseRegulationConfig.sc2eGroups[eGrpIdx].eGrpName, |
| tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].name, |
| tsp_ExecCtrl_Test_phaseRegulationConfig.scTypes[i].tcList[tcIdx].tcName, |
| vl_phases[pIdx]); |
| if(f_EPTF_str2int_HashMap_Find(v_phaseRegulatedItemHash, vl_itemName, vl_idx)) { |
| if(pl_keepRegulatedCpsInSubseqentPhases) { |
| vl_cps := v_phaseRegulatedItems[vl_idx].expectedCps; |
| } |
| } else { |
| vl_idx := sizeof(v_phaseRegulatedItems); |
| v_phaseRegulatedItems[vl_idx] := c_EPTF_ExecCtrl_Test_PhaseRegulatedItem_init; |
| v_phaseRegulatedItems[vl_idx].name := vl_itemName; |
| v_phaseRegulatedItems[vl_idx].expectedCps := vl_cps; |
| f_EPTF_str2int_HashMap_Insert(v_phaseRegulatedItemHash, vl_itemName, vl_idx); |
| log(%definitionId&": expected CPS of item ", vl_itemName, ": ", v_phaseRegulatedItems[vl_idx].expectedCps); |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| function EPTF_ExecCtrlClient_TestPhaseRegulation_cleanup_CT() |
| runs on EPTF_ExecCtrlClient_TestPhaseRegulation_CT |
| { |
| if(not v_EPTF_ExecCtrlClient_Test_initialized) { return } |
| f_EPTF_LGenBase_removeTrafficSuccessFn(refers(f_EPTF_ExecCtrlClient_Test_phaseRegulationTcSuccess)); |
| f_EPTF_str2int_HashMap_Delete(c_EPTF_ExecCtrl_Test_itemHashName); |
| v_phaseRegulatedItemHash := -1; |
| v_phaseRegulatedItems := {}; |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_phaseRegulation( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_Test_CT pl_execCtrl, |
| in boolean pl_keepRegulatedCpsInSubseqentPhases) |
| runs on EPTF_ExecCtrlClient_TestPhaseRegulation_CT |
| { |
| f_EPTF_ExecCtrlClient_TestPhaseRegulation_init_CT(pl_name, pl_execCtrl, pl_keepRegulatedCpsInSubseqentPhases); |
| |
| f_EPTF_LGenBase_registerTrafficSuccessFn(refers(f_EPTF_ExecCtrlClient_Test_phaseRegulationTcSuccess)); |
| |
| f_EPTF_LGenBase_declareFunction("phaseRegTestEnd", |
| {customPhaseAction:=refers(f_EPTF_ExecCtrlClient_Test_phaseRegTestEnd)}); |
| |
| f_EPTF_ExecCtrlClient_readyToStart(); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| } // group PhaseRegulation |
| |
| group TR_HL20955 { |
| |
| // ExecCtrl |
| function f_EPTF_ExecCtrl_Test_HL20955( |
| in charstring pl_name, |
| in integer pl_nOfClients, |
| in EPTF_UIHandler_CT pl_gui, |
| in EPTF_ExecCtrl_Test_HL20955Config pl_ExecCtrl_Test_HL20955Config, |
| in EPTF_ExecCtrlClient_CT pl_client) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT { |
| |
| f_EPTF_ExecCtrl_setManualControl(true); |
| f_EPTF_ExecCtrl_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := pl_ExecCtrl_Test_HL20955Config.eGroups, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := pl_ExecCtrl_Test_HL20955Config.sc2eGroups, |
| pl_EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList := pl_ExecCtrl_Test_HL20955Config.tcTypes, |
| pl_EPTF_ExecCtrl_TimeProfileDescrList := pl_ExecCtrl_Test_HL20955Config.timeProfileDescrList, |
| pl_EPTF_ExecCtrl_TimeProfileList := pl_ExecCtrl_Test_HL20955Config.timeProfileList, |
| pl_EPTF_ExecCtrl_TimeProfile2TcList := pl_ExecCtrl_Test_HL20955Config.timeProfile2TcList, |
| pl_EPTF_LGenBase_ScenarioTypeDeclaratorList := pl_ExecCtrl_Test_HL20955Config.scTypes |
| ); |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| f_EPTF_ExecCtrl_waitForCondition(refers(f_EPTF_ExecCtrl_checkReadyToRun)); |
| |
| var integer vl_scenFinishCounterId; |
| f_EPTF_Var_subscribeRemote(pl_client,"ScenFinishCounter", realtime,vl_scenFinishCounterId); |
| f_EPTF_Var_addPostProcFn( |
| vl_scenFinishCounterId, |
| { |
| funcRef := refers(f_EPTF_ExecCtrl_Test__HL20955_pass_PostProc), |
| argList := {sizeof(pl_ExecCtrl_Test_HL20955Config.scTypes)} // number of scenarios |
| } |
| ); |
| |
| f_EPTF_ExecCtrl_startAllScenarios(); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_EPTF_ExecCtrl_Test__HL20955_pass_PostProc(in integer pl_idx, in EPTF_IntegerList pl_argList) runs on EPTF_ExecCtrl_UIHandler_Test_CT { |
| var integer vl_currentValue := f_EPTF_Var_getIntValue(pl_idx); |
| if (vl_currentValue == pl_argList[0]) { |
| // the test is passed if all scenarios has finished |
| log("All scenarios finished. Test is passed!"); |
| f_EPTF_Base_stopAll(pass); |
| } |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_HL20955_fail(integer tcIdx) |
| runs on EPTF_ExecCtrlClient_Test_CT { |
| log(%definitionId&": ExecTime expired, not enough calls generated: test failed!"); |
| setverdict(fail); |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_HL20955_pass(integer tcIdx) |
| runs on EPTF_ExecCtrlClient_Test_CT { |
| log(%definitionId&": Traffic restarted after CPS was set to zero: scenario passed!"); |
| var integer vl_scenFinishCounterId := f_EPTF_Var_getId("ScenFinishCounter"); |
| var integer vl_currentValue := f_EPTF_Var_getIntValue(vl_scenFinishCounterId); |
| f_EPTF_Var_adjustContent(vl_scenFinishCounterId, {intVal := vl_currentValue+1}); |
| //setverdict(pass); |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_HL20955( |
| in charstring pl_selfName, |
| in EPTF_ExecCtrl_Test_CT pl_execCtrl |
| ) |
| runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| f_EPTF_ExecCtrlClient_Test_init(pl_selfName, pl_execCtrl, -1, false); |
| f_EPTF_LGenBase_declareFunction("f_EPTF_ExecCtrlClient_Test_HL20955_fail", |
| {customFinishFunction:=refers(f_EPTF_ExecCtrlClient_Test_HL20955_fail)}); |
| f_EPTF_LGenBase_declareFunction("f_EPTF_ExecCtrlClient_Test_HL20955_pass", |
| {customFinishFunction:=refers(f_EPTF_ExecCtrlClient_Test_HL20955_pass)}); |
| |
| var integer vl_scenFinishCounterId; |
| f_EPTF_Var_newInt("ScenFinishCounter",0, vl_scenFinishCounterId); |
| f_EPTF_ExecCtrlClient_readyToStart(); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| } // group TR_HL20955 |
| |
| group ExecTimeForSmallCPS { |
| |
| function f_EPTF_ExecCtrl_Test_waitForGUIDone() runs on myMTC_UI { |
| timer T_guard, T_alt; |
| T_guard.start( 10.0 ); |
| T_alt.start( 0.0 ); |
| alt{ |
| [] T_guard.timeout{ |
| setverdict(fail,"Timeout during config[waitForGUIDone:v_ready]"); |
| } |
| [v_ready] T_alt.timeout{} |
| }; |
| f_EPTF_UIHandler_createGUIFromFile(tsp_ExecCtrl_DS_guiXmlName,""); |
| |
| T_guard.start( 100.0 ); |
| T_alt.start( 0.0 ); |
| alt{ |
| [] T_guard.timeout{ |
| setverdict(fail,"Timeout during config[waitForGUIDone:checkReadyToRun]"); |
| } |
| [f_EPTF_ExecCtrl_checkReadyToRun()] T_alt.timeout{} |
| }; |
| |
| } |
| |
| |
| // ExecCtrl |
| function f_EPTF_ExecCtrl_Test_ExecTimeForSmallCPS( |
| in charstring pl_name, |
| in integer pl_nOfClients, |
| in EPTF_UIHandler_CT pl_gui, |
| in EPTF_ExecCtrl_Test_HL20955Config pl_ExecCtrl_Test_HL20955Config, |
| in EPTF_ExecCtrlClient_CT pl_client) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT { |
| |
| f_EPTF_ExecCtrl_setManualControl(true); |
| f_EPTF_ExecCtrl_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := pl_ExecCtrl_Test_HL20955Config.eGroups, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := pl_ExecCtrl_Test_HL20955Config.sc2eGroups, |
| pl_EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList := pl_ExecCtrl_Test_HL20955Config.tcTypes, |
| pl_EPTF_ExecCtrl_TimeProfileDescrList := pl_ExecCtrl_Test_HL20955Config.timeProfileDescrList, |
| pl_EPTF_ExecCtrl_TimeProfileList := pl_ExecCtrl_Test_HL20955Config.timeProfileList, |
| pl_EPTF_ExecCtrl_TimeProfile2TcList := pl_ExecCtrl_Test_HL20955Config.timeProfile2TcList, |
| pl_EPTF_LGenBase_ScenarioTypeDeclaratorList := pl_ExecCtrl_Test_HL20955Config.scTypes |
| ); |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| f_EPTF_ExecCtrl_waitForCondition(refers(f_EPTF_ExecCtrl_checkReadyToRun)); |
| |
| f_EPTF_ExecCtrl_startAllScenarios(); |
| f_EPTF_ExecCtrl_setManualControl(false); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_execTime(integer tcIdx) |
| runs on EPTF_ExecCtrlClient_Test_CT { |
| var float vl_timeElapsed := f_EPTF_Base_getRelTimeInSecs(); |
| log(%definitionId&": Traffic execTime fired at "&float2str(vl_timeElapsed)); |
| if (vl_timeElapsed<30.0) { |
| action("ExecTime fired too early "&float2str(vl_timeElapsed)&": test failed!"); |
| setverdict(fail); |
| } else { |
| setverdict(pass); |
| } |
| } |
| |
| function f_EPTF_ExecCtrlClient_Test_ExecTimeForSmallCPS( |
| in charstring pl_selfName, |
| in EPTF_ExecCtrl_Test_CT pl_execCtrl |
| ) |
| runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| f_EPTF_ExecCtrlClient_Test_init(pl_selfName, pl_execCtrl, -1, false); |
| f_EPTF_LGenBase_declareFunction("f_EPTF_ExecCtrlClient_Test_execTime", |
| {customFinishFunction:=refers(f_EPTF_ExecCtrlClient_Test_execTime)}); |
| |
| f_EPTF_ExecCtrlClient_readyToStart(); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| } // group ExecTimeForSmallCPS |
| |
| |
| |
| group HL45980 { |
| |
| |
| modulepar EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList tsp_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList_HL45980 := { |
| {name := "grpSimpleFSM", eType := "SimpleFSM_Entity", eCount := 100} |
| } |
| |
| modulepar EPTF_ExecCtrl_ScenarioInstanceTypeList tsp_EPTF_ExecCtrl_Scenario2EntityGroupList_HL45980 := { |
| {scenarioName:="SC1", eGrpName:="grpSimpleFSM",name:="grpSimpleFSM.SC1"} |
| }; |
| |
| modulepar EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList tsp_LGenBase_TcMgmt_tcTypeDeclarators2_HL45980 := { |
| { |
| name := "TC_pre", |
| fsmName := "LGenSimpleFSM outgoing", |
| entityType := "SimpleFSM_Entity", |
| customEntitySucc := "" |
| }, |
| { // Almost nothing... |
| name := "TC_lgen", |
| fsmName := "LGenSimpleFSM outgoing", |
| entityType := "SimpleFSM_Entity", |
| customEntitySucc := "" |
| }, |
| { // Almost nothing... |
| name := "TC_post", |
| fsmName := "LGenSimpleFSM outgoing", |
| entityType := "SimpleFSM_Entity", |
| customEntitySucc := "" |
| } |
| }; |
| |
| modulepar EPTF_LGenBase_ScenarioTypeDeclaratorList tsp_LGenBase_TcMgmt_ScenarioDeclarators3_HL45980 := { |
| { |
| name := "SC1", |
| tcList := { |
| { |
| tcName := "TC_pre", |
| tcParamsList := { |
| {target := { trafficWeight := 1.0000 }}, |
| {enableEntitiesAtStart := true}, |
| {ranges := { |
| {name := "subscriber id", enableSplit := true, baseOffset := 0, count := 500} |
| } |
| }, |
| {params := { |
| //{aName:="OAM",pName:="trafficCasePreexecEnabled",pValue:="false" }, |
| //{aName:="OAM",pName:="trafficCasePostexecEnabled",pValue:="true" }, |
| {aName:="OAM",pName:="HSS_FE_configuration",pValue:="false" }, |
| {aName:="OAM",pName:="cyclic_execution",pValue:="true" }, |
| {aName:="OAM",pName:="cyclic_timeout",pValue:="0.25" } |
| } |
| }, |
| {trafficStartFinish := { |
| //{execTime := {time := 30.000000,actions := {}}} |
| {nrOfRangeLoop := {count := 1,actions := {}}} |
| //{nrOfExecStart := {count := 600,actions := {}}} |
| } |
| } |
| } |
| }, |
| { |
| tcName := "TC_lgen", |
| tcParamsList := { |
| {target := { trafficWeight := 1.0000 }}, |
| {enableEntitiesAtStart := true}, |
| {ranges := { |
| {name := "subscriber id", enableSplit := true, baseOffset := 0, count := 500} |
| } |
| }, |
| {params := { |
| //{aName:="OAM",pName:="trafficCasePreexecEnabled",pValue:="false" }, |
| //{aName:="OAM",pName:="trafficCasePostexecEnabled",pValue:="true" }, |
| {aName:="OAM",pName:="HSS_FE_configuration",pValue:="false" }, |
| {aName:="OAM",pName:="cyclic_execution",pValue:="true" }, |
| {aName:="OAM",pName:="cyclic_timeout",pValue:="0.25" } |
| } |
| }, |
| {trafficStartFinish := { |
| {execTime := {time := 10.000000,actions := {}}} |
| //{nrOfRangeLoop := {count := 1,actions := {}}} |
| //{nrOfExecStart := {count := 600,actions := {}}} |
| } |
| } |
| } |
| }, |
| { |
| tcName := "TC_post", |
| tcParamsList := { |
| {target := { trafficWeight := 1.0000 }}, |
| {enableEntitiesAtStart := true}, |
| {ranges := { |
| {name := "subscriber id", enableSplit := true, baseOffset := 0, count := 500} |
| } |
| }, |
| {params := { |
| //{aName:="OAM",pName:="trafficCasePreexecEnabled",pValue:="false" }, |
| //{aName:="OAM",pName:="trafficCasePostexecEnabled",pValue:="true" }, |
| {aName:="OAM",pName:="HSS_FE_configuration",pValue:="false" }, |
| {aName:="OAM",pName:="cyclic_execution",pValue:="true" }, |
| {aName:="OAM",pName:="cyclic_timeout",pValue:="0.25" } |
| } |
| }, |
| {trafficStartFinish := { |
| //{execTime := {time := 30.000000,actions := {}}} |
| {nrOfRangeLoop := {count := 1,actions := {}}} |
| //{nrOfExecStart := {count := 600,actions := {}}} |
| } |
| } |
| } |
| } |
| }, |
| scParamsList := { |
| {weightedScData := {cpsToReach := 50.000000, lockCPS := false, deterministicMix := true, scheduler := omit}}, |
| {phaseListName := "ExecPhases"}, |
| {phaseFinishConditions := { |
| { |
| phase := "preexec", |
| conditions := { |
| { tcFinished := "TC_pre" } |
| } |
| }, |
| { |
| phase := "loadgen", |
| conditions := { |
| { tcFinished := "TC_lgen" } |
| } |
| }, |
| { |
| phase := "postexec", |
| conditions := { |
| { tcFinished := "TC_post" } |
| } |
| } |
| } |
| }, |
| {phaseStateChangeActions := { |
| { |
| phase := "preexec", |
| state := RUNNING, |
| actions := { |
| { startTc := "TC_pre" } |
| } |
| }, |
| { |
| phase := "preexec", |
| state := STOPPING, |
| actions := { |
| { stopTc := "TC_pre" } |
| } |
| }, |
| { |
| phase := "loadgen", |
| state := RUNNING, |
| actions := { |
| { startTc := "TC_lgen" } |
| } |
| }, |
| { |
| phase := "loadgen", |
| state := STOPPING, |
| actions := { |
| { stopTc := "TC_lgen" } |
| } |
| }, |
| { |
| phase := "postexec", |
| state := RUNNING, |
| actions := { |
| { startTc := "TC_post" } |
| } |
| }, |
| { |
| phase := "postexec", |
| state := STOPPING, |
| actions := { |
| { stopTc := "TC_post" } |
| } |
| } |
| } |
| } |
| } |
| } |
| }; // weighted and non weighted too |
| |
| modulepar EPTF_LGenBase_PhaseList_Declarators tsp_EPTF_ExecCtrl_PhaseList_Declarators_HL45980 := { |
| { |
| name := "ExecPhases", |
| phases := |
| { |
| { name := "preexec", enabled := true }, |
| { name := "loadgen" , enabled := true }, |
| { name := "postexec",enabled := true } |
| } |
| } |
| }; |
| |
| modulepar EPTF_ExecCtrl_ScenarioGroup_Declarators tsp_EPTF_ExecCtrl_ScenarioGroup_Declarators_HL45980 := { |
| { |
| name := "ScGroup1", |
| execMode := AUTOMATIC, |
| scenarioNames := { "grpSimpleFSM.SC1" }, |
| phaseListName := "ExecPhases" |
| } |
| }; |
| |
| modulepar EPTF_ExecCtrl_LGenPool_Declarators tsp_EPTF_ExecCtrl_LGenPool_Declarators_HL45980 := { |
| { |
| name := "Pool_SimpleFSM", |
| lgenPoolItems := { |
| { |
| hostname := "SimpleFSM", |
| num := 2, |
| createFunctionName := "EPTF_ExecCtrl_Test_Functions.f_EPTF_createLGenSimpleFSM" |
| } |
| } |
| } |
| }; |
| |
| modulepar EPTF_ExecCtrl_EntityGroup2LGenPool_List tsp_EPTF_ExecCtrl_EntityGroup2LGenPool_List_HL45980 := { |
| { |
| eGrpName := "grpSimpleFSM", |
| lgenPoolName := "Pool_SimpleFSM" |
| } |
| }; |
| |
| modulepar float tsp_LGenSimpleFSM_T_busy := 1.0; // time until entity busy |
| |
| // Creates LGens with entity types: SimpleFSM_Entity |
| function f_EPTF_createLGenSimpleFSM |
| ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) |
| runs on EPTF_ExecCtrl_UIHandler_CT |
| return EPTF_ExecCtrlClient_CT { |
| var LGenSimpleFSM_CT LG := LGenSimpleFSM_CT.create; |
| LG.start(f_LGenSimpleFSM_behavior(pl_componentName, self, f_EPTF_UIHandlerClient_defaultUIHandler())); |
| return LG; |
| } |
| |
| type component LGenSimpleFSM_CT extends EPTF_LGenBase_CT, EPTF_ExecCtrlClient_UIHandler_CT |
| { |
| var integer v_myBIdx; |
| } |
| |
| //init the "application level virtual library" |
| const charstring c_LGenSimpleFSMAppLib_behaviorType := "LGenSimpleFSM_behaviorType"; |
| function f_LGenSimpleFSM_AppLib_init(in integer pl_numberOfResources := 100) runs on LGenSimpleFSM_CT { |
| var integer i; |
| |
| v_myBIdx:=f_EPTF_LGenBase_declareBehaviorType(c_LGenSimpleFSMAppLib_behaviorType, pl_numberOfResources, null, null, null); |
| log(%definitionId,": myBIdx is ", v_myBIdx); |
| |
| // declare FSM (this is just a simple FSM): |
| var EPTF_LGenBase_FsmTableDeclarator vl_EPTF_LGenBase_FsmTableDeclarator := { |
| name := "LGenSimpleFSM outgoing",//"SimpleFSM", |
| fsmParams := { |
| {timerList := {{"busyTimer",tsp_LGenSimpleFSM_T_busy}}}, |
| {stateList := {"idle", "busy"}} |
| ,{varList := { |
| {name := "vf_chrono", initValue := {floatVal := 0.0}, scope := TC} |
| ,{name := "vf_chrono_free", initValue := {floatVal := 0.0}, scope := TC} |
| ,{name := "cf_one", initValue := {intVal := 1}, scope := TC} |
| ,{name := "vf_running", initValue := {intVal := 0}, scope := TC} |
| ,{name := "vf_starts", initValue := {intVal := 0}, scope := TC} |
| }} |
| ,{statMeasStatList := { |
| {name := "mean_rtt", varName := "vf_chrono",statType := mean, scope := TC} |
| ,{name := "mean_busy", varName := "vf_running",statType := max, scope := TC} |
| //,{name := "chrono_free", varName := "",statType := chrono, scope := FSM} |
| }} |
| ,{statMeasWithParamsList := { |
| { |
| name := "maxChrono", |
| providerVarName := "vf_chrono", |
| targetVarName := "", |
| statMeasParams := { |
| statType := max}, |
| scope := TC |
| }, |
| { |
| name := "chrono_busy", |
| providerVarName := "", |
| targetVarName := "vf_chrono", |
| statMeasParams := { |
| statType := chrono}, |
| scope := FSM |
| }, |
| { |
| name := "meanFree", |
| providerVarName := "vf_chrono_free", |
| targetVarName := "", |
| statMeasParams := { |
| statType := mean}, |
| scope := TC |
| }, |
| { |
| name := "chrono_free", |
| providerVarName := "", |
| targetVarName := "vf_chrono_free", |
| statMeasParams := { |
| statType := chrono}, |
| scope := FSM |
| }, |
| { |
| name := "density_free", |
| providerVarName := "vf_chrono_free", |
| targetVarName := "", |
| statMeasParams := { |
| params := { |
| density := { |
| scale := { |
| min := 0.0, |
| max := 19.0, |
| n := 20, |
| scale := linear} |
| } |
| } |
| }, |
| scope := TC |
| }, |
| { |
| name := "p95_free", |
| providerVarName := "vf_chrono_free", |
| targetVarName := "", |
| statMeasParams := { |
| params := { |
| percentile95 := { |
| scale := { |
| min := 0.0, |
| max := 29.0, |
| n := 30, |
| scale := linear} |
| } |
| } |
| }, |
| scope := TC |
| } |
| }} |
| ,{statHandlerStatList := { |
| { |
| name := "MaxBusyTime", |
| providers := { |
| {statMeas := "maxChrono"} |
| }, |
| statMethod := c_EPTF_StatHandler_Method_Max, |
| statResetValue := {floatVal := 0.0}, |
| scope := TC |
| }, |
| { |
| name := "MeanFreeTime", |
| providers := { |
| {statMeas := "meanFree"} |
| }, |
| statMethod := c_EPTF_StatHandler_Method_Mean, |
| statResetValue := {floatVal := 0.0}, |
| scope := TC |
| }, |
| { |
| name := "AvrgFreeTime", |
| providers := { |
| {varList := {"vf_chrono_free", "cf_one"}} |
| }, |
| statMethod := c_EPTF_StatHandler_Method_GlobalAverage, |
| statResetValue := {floatVal := 0.0}, |
| scope := TC |
| }, |
| { |
| name := "Percentile95FreeTime", |
| providers := { |
| {statMeas := "p95_free"} |
| }, |
| statMethod := c_EPTF_StatHandler_Method_Percentile95, |
| statResetValue := {floatVal := 0.0}, |
| scope := TC |
| }, |
| { |
| name := "densityFreeTime", |
| providers := { |
| {statMeas := "density_free"} |
| }, |
| statMethod := c_EPTF_StatHandler_Method_Density, |
| statResetValue := {integerlistVal := {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}, |
| scope := TC |
| }, |
| { |
| name := "NofBusy", |
| providers := { |
| {varList := {"vf_running"}} |
| }, |
| statMethod := c_EPTF_StatHandler_Method_Sum, |
| statResetValue := {intVal := 0}, |
| scope := TC |
| }, |
| { |
| name := "NofStarts", |
| providers := { |
| {varList := {"vf_starts"}} |
| }, |
| statMethod := c_EPTF_StatHandler_Method_Sum, |
| statResetValue := {intVal := 0}, |
| scope := TC |
| } |
| } |
| } |
| }, |
| table := { classicTable := { |
| {eventToListen := {c_EPTF_LGenBase_behavior,c_EPTF_LGenBase_inputName_testMgmt_startTC,fsm}, |
| cellRow := { |
| //state[0]==idle |
| {{ |
| {c_EPTF_LGenBase_stepName_timerStart,{timerName := "busyTimer"}} |
| ,{stepOrFunctionName := c_EPTF_LGenBase_stepName_fsmResetChrono, contextArgs :={statMeasName := "chrono_busy"}} |
| ,{stepOrFunctionName := c_EPTF_LGenBase_stepName_fsmStartChrono, contextArgs :={statMeasName := "chrono_busy"}} |
| ,{stepOrFunctionName := c_EPTF_LGenBase_stepName_fsmStopChrono, contextArgs :={statMeasName := "chrono_free"}} |
| ,{stepOrFunctionName := c_EPTF_LGenBase_stepName_fsmVarInc, contextArgs :={varParams := {"vf_running",{intVal := 1}}}} |
| ,{stepOrFunctionName := c_EPTF_LGenBase_stepName_fsmVarInc, contextArgs :={varParams := {"vf_starts",{intVal := 1}}}} |
| },omit,"busy"} |
| //state[1]==busy |
| ,{omit,omit,omit} |
| } |
| },{eventToListen := {c_EPTF_LGenBase_specialBName_timerTimeout,"busyTimer",fsm}, |
| cellRow := { |
| //state=idle |
| {omit,omit,omit} |
| //state==busy |
| ,{{ |
| {stepOrFunctionName := c_EPTF_LGenBase_stepName_fsmStopChrono, contextArgs :={statMeasName := "chrono_busy"}} |
| ,{stepOrFunctionName := c_EPTF_LGenBase_stepName_fsmResetChrono, contextArgs :={statMeasName := "chrono_free"}} |
| ,{stepOrFunctionName := c_EPTF_LGenBase_stepName_fsmStartChrono, contextArgs :={statMeasName := "chrono_free"}} |
| ,{stepOrFunctionName := c_EPTF_LGenBase_stepName_fsmVarDec, contextArgs :={varParams := {"vf_running",{intVal := 1}}}} |
| ,{c_EPTF_LGenBase_stepName_trafficSuccess,omit} |
| }, omit,"idle"} |
| } |
| },{eventToListen := {c_EPTF_LGenBase_behavior,c_EPTF_LGenBase_inputName_testMgmt_stopTC,fsm}, |
| cellRow := { |
| //state=idle |
| {omit,omit,omit} |
| //state==busy |
| ,{{ |
| {stepOrFunctionName := c_EPTF_LGenBase_stepName_timerCancelIfRunning, contextArgs :={timerName := "busyTimer"}}, |
| {stepOrFunctionName := c_EPTF_LGenBase_stepName_entityStopped} |
| }, omit,"idle"} |
| } |
| },{eventToListen := {c_EPTF_LGenBase_behavior,c_EPTF_LGenBase_inputName_testMgmt_abortTC,fsm}, |
| cellRow := { |
| //state=idle |
| {omit,omit,omit} |
| //state==busy |
| ,{{ |
| {stepOrFunctionName := c_EPTF_LGenBase_stepName_timerCancelIfRunning, contextArgs :={timerName := "busyTimer"}} |
| }, omit,"idle"} |
| } |
| } |
| }}//table |
| }; |
| |
| vl_EPTF_LGenBase_FsmTableDeclarator.name := "LGenSimpleFSM outgoing"; |
| if(-1==f_EPTF_LGenBase_declareFSMTable(vl_EPTF_LGenBase_FsmTableDeclarator)){}; |
| |
| vl_EPTF_LGenBase_FsmTableDeclarator.name := "LGenSimpleFSM incoming"; |
| if(-1==f_EPTF_LGenBase_declareFSMTable(vl_EPTF_LGenBase_FsmTableDeclarator)){}; |
| } |
| |
| // initialize the LGen |
| function f_LGenSimpleFSM_init(in charstring pl_selfName, in EPTF_ExecCtrl_CT pl_ExecCtrlRef, in EPTF_UIHandler_CT pl_UIHandlerClient_DefaultUIHandler, |
| in integer pl_numberOfResources := 100 |
| ) runs on LGenSimpleFSM_CT { |
| |
| f_EPTF_LGenBase_init(pl_selfName, 0, "LGenSimpleFSM"); |
| |
| //initialize my FSM: |
| f_LGenSimpleFSM_AppLib_init(pl_numberOfResources) ; //behavior type index==0 |
| |
| // my entity type is: SimpleFSM_Entity |
| // number of entities is the same as c_myVirtualAppLib_numberOfResources |
| var integer vl_eTypeIdx := f_EPTF_LGenBase_declareEntityType("SimpleFSM_Entity", {c_LGenSimpleFSMAppLib_behaviorType}); |
| //log("DEBUG: v_LGenBase_entityTypes = ", v_LGenBase_entityTypes); |
| |
| f_EPTF_ExecCtrlClient_UIHandler_init_CT(pl_selfName,pl_ExecCtrlRef,pl_UIHandlerClient_DefaultUIHandler); |
| |
| //log("DEBUG: v_LGenBase_behaviorTypes = ", v_LGenBase_behaviorTypes); |
| |
| f_EPTF_LGenBase_log(); |
| |
| } |
| |
| // This is the LGen behaviour: |
| function f_LGenSimpleFSM_behavior(in charstring pl_selfName, in EPTF_ExecCtrl_CT pl_ExecCtrlRef, in EPTF_UIHandler_CT pl_UIHandlerClient_DefaultUIHandler, |
| in integer pl_numberOfResources := 100 |
| ) runs on LGenSimpleFSM_CT |
| { |
| log(%definitionId,": started..."); |
| |
| f_LGenSimpleFSM_init(pl_selfName, pl_ExecCtrlRef,pl_UIHandlerClient_DefaultUIHandler,pl_numberOfResources); |
| |
| log(%definitionId,": entering main alt-loop...") |
| f_EPTF_Base_wait4Shutdown(); |
| |
| f_EPTF_Base_cleanup_CT(); |
| log(%definitionId,": finished..."); |
| setverdict(pass); |
| } |
| |
| function f_EPTF_ExecCtrl_Test_HL45980_ExecCtrlBehaviour(in charstring pl_name) runs on EPTF_ExecCtrl_UIHandler_Test_CT { |
| |
| f_EPTF_ExecCtrl_setManualControl(true); |
| |
| f_EPTF_ExecCtrl_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := tsp_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList_HL45980, |
| pl_EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList :=tsp_LGenBase_TcMgmt_tcTypeDeclarators2_HL45980, |
| pl_EPTF_LGenBase_ScenarioTypeDeclaratorList := tsp_LGenBase_TcMgmt_ScenarioDeclarators3_HL45980, |
| pl_EPTF_ExecCtrl_ScenarioInstanceTypeList := tsp_EPTF_ExecCtrl_Scenario2EntityGroupList_HL45980, |
| pl_EPTF_ExecCtrl_LGenPool_Declarators := tsp_EPTF_ExecCtrl_LGenPool_Declarators_HL45980, |
| pl_EPTF_ExecCtrl_EntityGroup2LGenPool_List := tsp_EPTF_ExecCtrl_EntityGroup2LGenPool_List_HL45980, |
| pl_EPTF_ExecCtrl_PhaseList_Declarators := tsp_EPTF_ExecCtrl_PhaseList_Declarators_HL45980, |
| pl_EPTF_ExecCtrl_ScenarioGroup_Declarators := tsp_EPTF_ExecCtrl_ScenarioGroup_Declarators_HL45980 |
| ); |
| |
| var EPTF_ExecCtrl_LGenFunction_Entry_List vl_lgenCreatorFunctions := { |
| { |
| omit, |
| refers(f_EPTF_createLGenSimpleFSM) |
| } |
| } |
| |
| f_EPTF_ExecCtrl_loadConfig(pl_EPTF_ExecCtrl_LGenFunction_Entry_List := vl_lgenCreatorFunctions); |
| |
| f_EPTF_UIHandlerClient_init_CT(pl_name, mtc); // default altsteps |
| f_EPTF_ExecCtrl_init_CT(pl_name, 0, pl_dataSource_compRef := mtc); |
| |
| timer T_guard, T_alt; |
| T_guard.start( 100.0 ); |
| T_alt.start( 0.0 ); |
| alt{ |
| [] T_guard.timeout{ |
| setverdict(fail,"Timeout during config[waitForGUIDone:checkReadyToRun]"); |
| } |
| [f_EPTF_ExecCtrl_checkReadyToRun()] T_alt.timeout{} |
| }; |
| |
| f_EPTF_ExecCtrl_startAllScenarios(); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| |
| } // group HL4598 |
| |
| group HP34819{ //UpdateActiveEntities during cleanup |
| const EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList c_EntityGrpDeclaratorList_HP34819 := { |
| {name := "grpHP34819", eType := "HP34819_Entity", eCount := 100} |
| } |
| |
| const EPTF_ExecCtrl_ScenarioInstanceTypeList c_Scenario2EntityGroupList_HP34819 := { |
| {scenarioName:="SC1", eGrpName:="grpHP34819",name:="grpHP34819.SC1"} |
| }; |
| |
| const EPTF_LGenBase_ScenarioTypeDeclaratorList c_ScenarioDeclarators_HP34819 := { |
| { |
| name := "SC1", |
| tcList := { |
| { |
| tcName := "TC", |
| tcParamsList := { |
| {target := { trafficWeight := 1.0000 }}, |
| {enableEntitiesAtStart := false}, |
| {fsmList := {"LGenSimpleFSM"} } |
| } |
| } |
| }, |
| scParamsList := { |
| {weightedScData := {cpsToReach := 50.000000, lockCPS := false, deterministicMix := true, scheduler := omit}}, |
| {enabled := false} |
| } |
| } |
| }; |
| |
| const EPTF_LGenBase_TcMgmt_tcTypeDeclarator2 c_TCTypeHP34819 := { |
| name := "TC", |
| fsmName := "LGenSimpleFSM", |
| entityType := "HP34819_Entity", |
| customEntitySucc := "" |
| } |
| |
| const EPTF_ExecCtrl_ScenarioGroup_Declarators c_ScenarioGroup_Declarators_HP34819 := { |
| { |
| name := "ScGroup1", |
| execMode := AUTOMATIC, |
| scenarioNames := { "grpHP34819.SC1" }, |
| phaseListName := "" |
| } |
| }; |
| |
| const EPTF_ExecCtrl_LGenPool_Declarators c_LGenPool_Declarators_HP34819 := { |
| { |
| name := "Pool_HP34819", |
| lgenPoolItems := { |
| { |
| hostname := "SimpleFSM", |
| num := 2, |
| createFunctionName := "EPTF_ExecCtrl_Test_Functions.f_EPTF_createHP34819LGen" |
| } |
| } |
| } |
| }; |
| |
| const EPTF_ExecCtrl_EntityGroup2LGenPool_List c_EntityGroup2LGenPool_List_HP34819 := { |
| { |
| eGrpName := "grpHP34819", |
| lgenPoolName := "Pool_HP34819" |
| } |
| }; |
| type component HP34819LGen_CT extends EPTF_ExecCtrlClient_CT{ |
| } |
| // This is the LGen behaviour: |
| function f_LGenBehavior_HP34819( |
| in charstring pl_selfName, |
| in EPTF_ExecCtrl_CT pl_ExecCtrlRef) |
| runs on EPTF_ExecCtrlClient_CT |
| { |
| f_EPTF_LGenBase_init(pl_selfName); |
| var integer v_myBIdx:=f_EPTF_LGenBase_declareBehaviorType("LGen", -1, null, null, null); |
| var integer vl_eTypeIdx := f_EPTF_LGenBase_declareEntityType("HP34819_Entity", {"LGen"}); |
| //initialize my FSM: |
| const EPTF_LGenBase_FsmTableDeclarator c_fsm := { |
| name := "LGenSimpleFSM",//"SimpleFSM", |
| fsmParams := { |
| {stateList := {"idle"} }}, |
| table := { classicTable := {}} |
| } |
| f_EPTF_LGenBase_declareFSMTable(c_fsm); |
| |
| f_EPTF_ExecCtrlClient_init_CT(pl_selfName,pl_ExecCtrlRef); |
| f_EPTF_Logging_enableLocalMask(v_ExecCtrlClient_loggingMaskId, c_EPTF_ExecCtrl_loggingClassIdx_Debug); |
| f_EPTF_Logging_registerPreambleFn(refers(f_HP34819_LoggingPreambleFn)); |
| f_EPTF_Base_wait4Shutdown(); |
| |
| f_EPTF_Base_cleanup_CT(); |
| setverdict(pass); |
| } |
| function f_HP34819_LoggingPreambleFn(in charstring pl_message)runs on EPTF_ExecCtrlClient_CT{ |
| //action(%definitionId); |
| if(f_EPTF_Base_cleanupIsInProgress() and (-1 < f_strstr(pl_message, "UpdateActiveEntities"))){ |
| setverdict ( fail, "EPTF_ExecCtrl_UpdateActiveEntities received during cleanup." ); |
| } |
| } |
| function f_EPTF_createHP34819LGen |
| ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) |
| runs on EPTF_ExecCtrl_CT |
| return EPTF_ExecCtrlClient_CT { |
| action(%definitionId," ",pl_componentName); |
| var HP34819LGen_CT LG := HP34819LGen_CT.create; |
| LG.start(f_LGenBehavior_HP34819(pl_componentName, self)); |
| return LG; |
| } |
| |
| } |
| //******************************************************************************************************** |
| |
| group Action { |
| |
| //******************************************************************************************************** |
| |
| // ExecCtrl |
| //======================================================= |
| // f_EPTF_ExecCtrl_Test_Action_stop4FirstAction |
| //======================================================= |
| function f_EPTF_ExecCtrl_Test_Action_stop4FirstAction( |
| in charstring pl_name, |
| in integer pl_nOfClients, |
| in EPTF_UIHandler_CT pl_gui, |
| in EPTF_ExecCtrl_Test_HL20955Config pl_ExecCtrl_Test_ActionConfig, |
| in EPTF_ExecCtrlClient_Test_CT_List pl_clients) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT { |
| |
| f_EPTF_ExecCtrl_setManualControl(false); |
| |
| f_EPTF_ExecCtrl_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := pl_ExecCtrl_Test_ActionConfig.eGroups, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := pl_ExecCtrl_Test_ActionConfig.sc2eGroups, |
| pl_EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList := pl_ExecCtrl_Test_ActionConfig.tcTypes, |
| pl_EPTF_ExecCtrl_TimeProfileDescrList := pl_ExecCtrl_Test_ActionConfig.timeProfileDescrList, |
| pl_EPTF_ExecCtrl_TimeProfileList := pl_ExecCtrl_Test_ActionConfig.timeProfileList, |
| pl_EPTF_ExecCtrl_TimeProfile2TcList := pl_ExecCtrl_Test_ActionConfig.timeProfile2TcList, |
| pl_EPTF_LGenBase_ScenarioTypeDeclaratorList := pl_ExecCtrl_Test_ActionConfig.scTypes |
| ); |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| |
| f_EPTF_ExecCtrl_waitForCondition(refers(f_EPTF_ExecCtrl_checkReadyToRun)); |
| |
| //===Measurement=== |
| var EPTF_IntegerList vl_counterIds:={}; |
| v_EPTF_ExecCtrl_Test_counters:={}; |
| v_EPTF_ExecCtrl_Test_counter:=0; |
| |
| for(var integer i:=0;i<sizeof(pl_clients); i:=i+1) { |
| f_EPTF_Var_subscribeRemote(pl_clients[i],"ActionCounter", realtime,vl_counterIds[i]); |
| |
| f_EPTF_Var_addPostProcFn( |
| vl_counterIds[i], |
| { |
| funcRef := refers(f_EPTF_ExecCtrl_Test_Action_pass_PostProc_stops4FirstPass), |
| argList := {} |
| } |
| ); |
| |
| v_EPTF_ExecCtrl_Test_counters[i]:=0; |
| };//for |
| |
| f_EPTF_ExecCtrl_startAllScenarioGroups(); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| |
| }//f_EPTF_ExecCtrl_Test_Action_stop4FirstAction |
| |
| //======================================================= |
| // f_EPTF_ExecCtrl_Test_Action_stop4Condition |
| //======================================================= |
| function f_EPTF_ExecCtrl_Test_Action_stop4Condition( |
| in charstring pl_name, |
| in integer pl_nOfClients, |
| in EPTF_UIHandler_CT pl_gui, |
| in EPTF_ExecCtrl_Test_HL20955Config pl_ExecCtrl_Test_ActionConfig, |
| in EPTF_ExecCtrlClient_Test_CT_List pl_clients, |
| in integer pl_expectedValue:=-1) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT { |
| |
| var integer vl_expectedValue; |
| if(pl_expectedValue==-1) { |
| vl_expectedValue:=sizeof(pl_ExecCtrl_Test_ActionConfig.scTypes)*pl_nOfClients; |
| } else { |
| vl_expectedValue:=pl_expectedValue; |
| } |
| |
| // scenarios are started later |
| f_EPTF_ExecCtrl_setManualControl(true); |
| |
| f_EPTF_ExecCtrl_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := pl_ExecCtrl_Test_ActionConfig.eGroups, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := pl_ExecCtrl_Test_ActionConfig.sc2eGroups, |
| pl_EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList := pl_ExecCtrl_Test_ActionConfig.tcTypes, |
| pl_EPTF_ExecCtrl_TimeProfileDescrList := pl_ExecCtrl_Test_ActionConfig.timeProfileDescrList, |
| pl_EPTF_ExecCtrl_TimeProfileList := pl_ExecCtrl_Test_ActionConfig.timeProfileList, |
| pl_EPTF_ExecCtrl_TimeProfile2TcList := pl_ExecCtrl_Test_ActionConfig.timeProfile2TcList, |
| pl_EPTF_LGenBase_ScenarioTypeDeclaratorList := pl_ExecCtrl_Test_ActionConfig.scTypes |
| ); |
| |
| f_EPTF_ExecCtrl_init_CT(pl_name, pl_nOfClients, pl_dataSource_compRef := pl_gui); |
| |
| f_EPTF_ExecCtrl_waitForCondition(refers(f_EPTF_ExecCtrl_checkReadyToRun)); |
| |
| //===Measurement=== |
| var EPTF_IntegerList vl_counterIds:={}; |
| v_EPTF_ExecCtrl_Test_counters:={}; //unused |
| v_EPTF_ExecCtrl_Test_counter:=0; |
| |
| for(var integer i:=0;i<sizeof(pl_clients); i:=i+1) { |
| f_EPTF_Var_subscribeRemote(pl_clients[i],"ActionCounter", realtime,vl_counterIds[i]); |
| f_EPTF_Var_addPostProcFn( |
| vl_counterIds[i], |
| { |
| funcRef := refers(f_EPTF_ExecCtrl_Test_Action_pass_PostProc), //<<=== STOPS for condition |
| argList := {vl_expectedValue} // number of scenarios |
| } |
| ); |
| |
| //v_EPTF_ExecCtrl_Test_counters[i]:=0; |
| };//for |
| |
| // start scenarios "manually": |
| f_EPTF_ExecCtrl_startAllScenarios(); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| |
| }//f_EPTF_ExecCtrl_Test_Action_stop4FirstAction |
| |
| //==================================================== |
| // f_EPTF_ExecCtrl_Test_Action_pass_PostProc |
| //==================================================== |
| function f_EPTF_ExecCtrl_Test_Action_pass_PostProc(in integer pl_idx, in EPTF_IntegerList pl_argList) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT { |
| v_EPTF_ExecCtrl_Test_counter:= v_EPTF_ExecCtrl_Test_counter +1; //aggregated counter |
| |
| //log("Not used, but interesting: v_EPTF_ExecCtrl_Test_counters: ",f_EPTF_Var_getIntValue(pl_idx)); //<<==This line can be continued... |
| //log("v_EPTF_ExecCtrl_Test_counter: ",v_EPTF_ExecCtrl_Test_counter); |
| log("Expected counter: ", pl_argList[0], " Real counter value: ", v_EPTF_ExecCtrl_Test_counter); |
| |
| if ( v_EPTF_ExecCtrl_Test_counter == pl_argList[0]) { |
| log("The counter reached the expected value. Test is passed!"); |
| f_EPTF_Base_stopAll(pass); |
| }else { |
| log("Sorry, not passed yet"); |
| } |
| } |
| |
| //==================================================== |
| // f_EPTF_ExecCtrl_Test_Action_pass_PostProc_stops4FirstPass |
| //==================================================== |
| function f_EPTF_ExecCtrl_Test_Action_pass_PostProc_stops4FirstPass(in integer pl_idx, in EPTF_IntegerList pl_argList) |
| runs on EPTF_ExecCtrl_UIHandler_Test_CT { |
| f_EPTF_Base_stopAll(pass); |
| } |
| //==================================================== |
| // f_EPTF_ExecCtrlClient_Test_Action_fail |
| //==================================================== |
| function f_EPTF_ExecCtrlClient_Test_Action_fail(integer tcIdx) |
| runs on EPTF_ExecCtrlClient_Test_CT { |
| log(%definitionId&": ExecTime expired, not enough calls generated: test failed!"); |
| setverdict(fail); |
| //f_EPTF_Base_stopAll(fail); |
| } |
| |
| //==================================================== |
| // f_EPTF_ExecCtrlClient_Test_Action_pass |
| // stops the test with pass after the first call |
| //==================================================== |
| function f_EPTF_ExecCtrlClient_Test_Action_pass(integer tcIdx) |
| runs on EPTF_ExecCtrlClient_Test_CT { |
| log(%definitionId&": Action called!"); |
| var integer vl_ActionCounterId := f_EPTF_Var_getId("ActionCounter"); |
| var integer vl_currentValue := f_EPTF_Var_getIntValue(vl_ActionCounterId); |
| f_EPTF_Var_adjustContent(vl_ActionCounterId, {intVal := vl_currentValue+1}); |
| //setverdict(pass); |
| //f_EPTF_Base_stopAll(pass); |
| } |
| |
| //==================================================== |
| // f_EPTF_ExecCtrlClient_Test_Action_action |
| //==================================================== |
| function f_EPTF_ExecCtrlClient_Test_Action_action(integer tcIdx) |
| runs on EPTF_ExecCtrlClient_Test_CT { |
| log(%definitionId&": This function shall be called after groupFinished"); |
| var integer vl_ActionCounterId := f_EPTF_Var_getId("ActionCounter"); |
| var integer vl_currentValue := f_EPTF_Var_getIntValue(vl_ActionCounterId); |
| f_EPTF_Var_adjustContent(vl_ActionCounterId, {intVal := vl_currentValue+1}); |
| } |
| |
| //==================================================== |
| // f_EPTF_ExecCtrlClient_Test_Action_customFinishCondition |
| // derermines if the fraffic case is finished. |
| //==================================================== |
| function f_EPTF_ExecCtrlClient_Test_Action_customFinishCondition( |
| in integer pl_tcIdx, |
| in integer pl_eIdx |
| ) runs on EPTF_ExecCtrlClient_Test_CT |
| return boolean { |
| |
| log(%definitionId&": This function shall be called to determine custom finish condition"); |
| if (pl_eIdx>20) { |
| return true; |
| } |
| return false; |
| } |
| |
| //==================================================== |
| // f_EPTF_ExecCtrlClient_Test_Action |
| //==================================================== |
| function f_EPTF_ExecCtrlClient_Test_Action( |
| in charstring pl_selfName, |
| in EPTF_ExecCtrl_Test_CT pl_execCtrl |
| ) |
| runs on EPTF_ExecCtrlClient_Test_CT |
| { |
| |
| f_EPTF_ExecCtrlClient_Test_init(pl_selfName, pl_execCtrl, -1, false); |
| f_EPTF_LGenBase_declareFunction("f_EPTF_ExecCtrlClient_Test_Action_fail", |
| {customFinishFunction:=refers(f_EPTF_ExecCtrlClient_Test_Action_fail)}); |
| f_EPTF_LGenBase_declareFunction("f_EPTF_ExecCtrlClient_Test_Action_pass", |
| {customFinishFunction:=refers(f_EPTF_ExecCtrlClient_Test_Action_pass)}); |
| f_EPTF_LGenBase_declareFunction("f_EPTF_ExecCtrlClient_Test_Action_action", |
| {customFinishFunction:=refers(f_EPTF_ExecCtrlClient_Test_Action_action)}); |
| |
| f_EPTF_LGenBase_declareFunction("f_EPTF_ExecCtrlClient_Test_Action_customFinishCondition", |
| {customFinishCondition:=refers(f_EPTF_ExecCtrlClient_Test_Action_customFinishCondition)}); |
| |
| var integer vl_scenFinishCounterId:=-1; |
| f_EPTF_Var_newInt("ScenFinishCounter",0, vl_scenFinishCounterId); |
| |
| |
| var integer vl_ActionCounterId:=-1; |
| f_EPTF_Var_newInt("ActionCounter",0, vl_ActionCounterId); |
| |
| f_EPTF_ExecCtrlClient_readyToStart(); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| } // Action |
| |
| group SetTargetCPSInAutoOff { |
| |
| function f_ExecCtrl_Regulator_Test_RegulatorBehaviour( |
| in charstring pl_selfName, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef, |
| in float pl_loadToReach := 0.0 |
| ) runs on EPTF_LoadRegulator_CT { |
| f_EPTF_LoadRegulator_init_CT(pl_selfName, |
| refers(f_EPTF_ExecCtrl_Test_PhaseRegulator_getSutLoad), |
| refers(f_EPTF_LoadRegulator_calculateNextCps_limitMax)); |
| f_EPTF_LoadRegulator_registerToExecCtrl(pl_execCtrlCompRef); |
| f_EPTF_LoadRegulator_adjustTargetLoadInExecCtrl(pl_loadToReach); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| } //~group SetTargetCPSInAutoOff |
| |
| group HL79051 { |
| |
| function f_EPTF_ExecCtrl_HL79051LGenBehaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrlClient_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_defaultFSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| timer t_changeCPS := 10.0; |
| t_changeCPS.start(0.0); |
| |
| // wait until GUI is ready: |
| alt { |
| [f_EPTF_ExecCtrlClient_checkGuiDone()] t_changeCPS.timeout { |
| t_changeCPS.start(0.0); |
| } |
| } |
| |
| // wait until traffic case is running: |
| var charstring vl_eGrpName := c_EPTF_ExecCtrl_DefaultScenarios_eGrpName; |
| var charstring vl_scName := c_EPTF_ExecCtrl_DefaultScenarios_scNameNormal; |
| var charstring vl_wscName := c_EPTF_ExecCtrl_DefaultScenarios_scNameWeighted; |
| var charstring vl_tcName := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc2; |
| var charstring vl_varName := "ExecCtrlClient.trafficCaseStatus."&vl_eGrpName&"."&vl_scName&"."&vl_tcName; |
| var integer vl_tcStateVarIdx := f_EPTF_Var_getId(vl_varName); |
| alt { |
| [f_EPTF_Var_getCharstringValue(vl_tcStateVarIdx)==c_EPTF_LGenBase_stateNames[c_EPTF_LGenBase_tcStateRunning]] t_changeCPS.timeout { |
| } |
| } |
| t_changeCPS.start(10.0); // wait 10 secs after CPS is running |
| alt { |
| [] t_changeCPS.timeout { |
| // update the CPS: |
| f_EPTF_LGenBase_setCPSByNames(vl_eGrpName,vl_scName,vl_tcName,2.0); |
| f_EPTF_LGenBase_setScenarioCPS(vl_eGrpName,vl_wscName,3.0); |
| } |
| } |
| |
| t_changeCPS.start(10.0); // wait 10 secs after CPS was changed |
| // check if the CPS stays the same: |
| alt { |
| [] t_changeCPS.timeout { |
| // check the CPS: |
| if (2.0 != f_EPTF_LGenBase_getTcCpsToReachByName(vl_eGrpName,vl_scName,vl_tcName)) { |
| setverdict(fail,"Unexpected CPS value (",f_EPTF_LGenBase_getTcCpsToReachByName(vl_eGrpName,vl_scName,vl_tcName), |
| ") while regulator is disconnected. Expected value: 2.0"); |
| } |
| else { |
| setverdict(pass); |
| } |
| // check the CPS in the weighted sc: |
| if (3.0 != f_EPTF_LGenBase_getScCpsSoReachByName(vl_eGrpName,vl_wscName)) { |
| setverdict(fail,"Unexpected Scenario CPS value (",f_EPTF_LGenBase_getScCpsSoReachByName(vl_eGrpName,vl_wscName), |
| ") while regulator is disconnected. Expected value: 3.0"); |
| } |
| else { |
| setverdict(pass); |
| } |
| } |
| } |
| |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_ExecCtrl_Test_createHL79051LGen ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrlClient_CT vl_lgen := EPTF_ExecCtrlClient_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_HL79051LGenBehaviour("ExecCtrl_HL79051LGen_"&log2str(vl_lgen),self) ); |
| return vl_lgen; |
| } |
| |
| } //~group HL79051 |
| |
| group CR_TR00017092 { |
| |
| function f_ExecCtrl_Test_createLGenWithLimitedEntities ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrlClient_CT vl_lgen := EPTF_ExecCtrlClient_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_LGenWithLimitedEntitiesBehaviour(pl_componentName,self) ); |
| return vl_lgen; |
| } |
| |
| function f_EPTF_ExecCtrl_LGenWithUnLimitedEntitiesBehaviour ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrlClient_CT vl_lgen := EPTF_ExecCtrlClient_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_CLITest_defaultLGenBehaviour(pl_componentName,self) ); |
| return vl_lgen; |
| } |
| |
| |
| function f_EPTF_ExecCtrl_LGenWithLimitedEntitiesBehaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrlClient_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, 20, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_defaultFSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| } //~group CR_TR00017092 |
| |
| group LoadConfigFromClient { |
| |
| function f_EPTF_ExecCtrl_LoadConfigFromClient_behaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrlClient_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_defaultFSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef,pl_reportReady:=false); |
| |
| f_EPTF_ExecCtrlClient_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := c_EPTF_ExecCtrl_DefaultScenarios_EGrpList, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList& |
| c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList_scGroups, |
| pl_EPTF_LGenBase_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_tcTypeDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList := {c_EPTF_ExecCtrl_DefaultScenarios_defaultTCType}, |
| pl_EPTF_LGenBase_TcMgmt_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_WeightedScenarioDeclaratorList:= {}, |
| pl_EPTF_ExecCtrl_TimeProfileDescrList:={}, |
| pl_EPTF_ExecCtrl_TimeProfileList:={}, |
| pl_EPTF_ExecCtrl_TimeProfile2TcList:={}, |
| pl_EPTF_LGenBase_ScenarioTypeDeclaratorList:= { |
| c_EPTF_ExecCtrl_DefaultScenarios_normalScenario,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenario, |
| c_EPTF_ExecCtrl_DefaultScenarios_normalScenarioInScGrp,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenarioInScGrp |
| }, |
| pl_EPTF_ExecCtrl_ScenarioInstanceTypeList:={}, |
| pl_EPTF_ExecCtrl_LGenPool_Declarators:=c_EPTF_ExecCtrl_Test_defaultLGenPool_Declarators, |
| pl_EPTF_ExecCtrl_EntityGroup2LGenPool_List:=c_EPTF_ExecCtrl_DefaultScenarios_EntityGroup2LGenPool_List, |
| // pl_EPTF_ExecCtrl_LGenFunction_Entry_List:={{ |
| // name := omit, |
| // fn := refers(f_ExecCtrl_Test_createDefaultLGen) |
| // }}, |
| pl_EPTF_ExecCtrl_PhaseList_Declarators:=c_EPTF_ExecCtrl_DefaultScenarios_phases, |
| pl_EPTF_ExecCtrl_ScenarioGroup_Declarators:=c_EPTF_ExecCtrl_DefaultScenarios_scGroups, |
| pl_EPTF_ExecCtrl_RegulatorNames:={c_EPTF_ExecCtrl_DefaultRegulatorName}, |
| pl_EPTF_ExecCtrl_RegulatedItems:=c_EPTF_ExecCtrl_DefaultRegulatedItems |
| ); |
| |
| f_EPTF_ExecCtrlClient_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := {{ |
| name := "LoadedGroup", |
| eType := c_EPTF_ExecCtrl_Test_defaultETypeName, |
| eCount := 100 |
| }}, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := { |
| { |
| eGrpName := "LoadedGroup", |
| scenarioNames := { |
| c_EPTF_ExecCtrl_DefaultScenarios_scNameNormal |
| } |
| }, |
| { |
| eGrpName := "LoadedGroup", |
| scenarioNames := { |
| c_EPTF_ExecCtrl_DefaultScenarios_scNameWeighted |
| } |
| } |
| } |
| ); |
| f_EPTF_ExecCtrlClient_readyToStart(); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| // load config after ready to start behaviour: |
| function f_EPTF_ExecCtrl_LoadConfigFromClientAfterStart_behaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrlClient_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_defaultFSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef,pl_reportReady:=false); |
| |
| f_EPTF_ExecCtrlClient_readyToStart(); |
| |
| // this will generate a warning: |
| f_EPTF_ExecCtrlClient_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := {{ |
| name := "EGrpLoadedAfterStartInClient", |
| eType := c_EPTF_ExecCtrl_Test_defaultETypeName, |
| eCount := c_EPTF_ExecCtrl_DefaultScenarios_eGrpSize |
| }} |
| ); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| |
| // load config from pool LGen behaviour |
| function f_EPTF_ExecCtrl_loadConfigFromLGenBehaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrlClient_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_defaultFSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef,pl_reportReady:=false); |
| |
| // this should generate a warning: |
| f_EPTF_ExecCtrlClient_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := {{ |
| name := "LoadedGroupFromPool", |
| eType := c_EPTF_ExecCtrl_Test_defaultETypeName, |
| eCount := 100 |
| }}, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := { |
| { |
| eGrpName := "LoadedGroupFromPool", |
| scenarioNames := { |
| c_EPTF_ExecCtrl_DefaultScenarios_scNameNormal |
| } |
| }, |
| { |
| eGrpName := "LoadedGroupFromPool", |
| scenarioNames := { |
| c_EPTF_ExecCtrl_DefaultScenarios_scNameWeighted |
| } |
| } |
| }, |
| pl_EPTF_ExecCtrl_EntityGroup2LGenPool_List:={ |
| { |
| eGrpName := "LoadedGroupFromPool", |
| lgenPoolName := "LoadConfigInPool" |
| } |
| } |
| ); |
| f_EPTF_ExecCtrlClient_readyToStart(); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| |
| external function f_EPTF_runTop() return float |
| |
| function f_ExecCtrl_Test_createLoadConfigLGen ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrlClient_CT vl_lgen := EPTF_ExecCtrlClient_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_loadConfigFromLGenBehaviour("ExecCtrl_LoadConfigFromPool_"&log2str(vl_lgen),self) ); |
| return vl_lgen; |
| } |
| |
| } //group LoadConfigFromClient |
| |
| group TerminateClientBeforeStart { |
| |
| function f_EPTF_ExecCtrl_TerminateClientBeforeStart_behaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef, |
| in boolean pl_stopAll := true) |
| runs on EPTF_ExecCtrlClient_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_defaultFSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef,pl_reportReady:=false); |
| |
| f_EPTF_ExecCtrlClient_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := c_EPTF_ExecCtrl_DefaultScenarios_EGrpList, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList& |
| c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList_scGroups, |
| pl_EPTF_LGenBase_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_tcTypeDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList := {c_EPTF_ExecCtrl_DefaultScenarios_defaultTCType}, |
| pl_EPTF_LGenBase_TcMgmt_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_WeightedScenarioDeclaratorList:= {}, |
| pl_EPTF_ExecCtrl_TimeProfileDescrList:={}, |
| pl_EPTF_ExecCtrl_TimeProfileList:={}, |
| pl_EPTF_ExecCtrl_TimeProfile2TcList:={}, |
| pl_EPTF_LGenBase_ScenarioTypeDeclaratorList:= { |
| c_EPTF_ExecCtrl_DefaultScenarios_normalScenario,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenario, |
| c_EPTF_ExecCtrl_DefaultScenarios_normalScenarioInScGrp,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenarioInScGrp |
| }, |
| pl_EPTF_ExecCtrl_ScenarioInstanceTypeList:={}, |
| pl_EPTF_ExecCtrl_LGenPool_Declarators:=c_EPTF_ExecCtrl_Test_defaultLGenPool_Declarators, |
| pl_EPTF_ExecCtrl_EntityGroup2LGenPool_List:=c_EPTF_ExecCtrl_DefaultScenarios_EntityGroup2LGenPool_List, |
| // pl_EPTF_ExecCtrl_LGenFunction_Entry_List:={{ |
| // name := omit, |
| // fn := refers(f_ExecCtrl_Test_createDefaultLGen) |
| // }}, |
| pl_EPTF_ExecCtrl_PhaseList_Declarators:=c_EPTF_ExecCtrl_DefaultScenarios_phases, |
| pl_EPTF_ExecCtrl_ScenarioGroup_Declarators:=c_EPTF_ExecCtrl_DefaultScenarios_scGroups, |
| pl_EPTF_ExecCtrl_RegulatorNames:={c_EPTF_ExecCtrl_DefaultRegulatorName}, |
| pl_EPTF_ExecCtrl_RegulatedItems:=c_EPTF_ExecCtrl_DefaultRegulatedItems |
| ); |
| |
| f_EPTF_ExecCtrlClient_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := {{ |
| name := "LoadedGroup", |
| eType := c_EPTF_ExecCtrl_Test_defaultETypeName, |
| eCount := 100 |
| }}, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := { |
| { |
| eGrpName := "LoadedGroup", |
| scenarioNames := { |
| c_EPTF_ExecCtrl_DefaultScenarios_scNameNormal |
| } |
| }, |
| { |
| eGrpName := "LoadedGroup", |
| scenarioNames := { |
| c_EPTF_ExecCtrl_DefaultScenarios_scNameWeighted |
| } |
| } |
| } |
| ); |
| f_EPTF_ExecCtrlClient_readyToStart(); |
| if (pl_stopAll) { |
| f_EPTF_Base_stopAll(pass); |
| } else { |
| f_EPTF_Base_stop(pass); |
| } |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| } // group TerminateClientBeforeStart |
| |
| group EPTF_ExecCtrl_GUIVars_Test { |
| |
| type component EPTF_ExecCtrl_GUIVars_Test_CT extends EPTF_UIHandler_CLI_CT, EPTF_ExecCtrl_UIHandler_CT { |
| } |
| |
| function f_ExecCtrl_Test_GUIVars_additionalTab() runs on EPTF_ExecCtrl_GUIVars_Test_CT { |
| var Tabpage v_additionalTab := { |
| id := "AdditionalTab", |
| label_ := "AdditionalTab" |
| }; |
| if(sr_Fail == f_EPTF_UIHandlerClient_XSD_addElementToGUI( |
| {tabpage := v_additionalTab}, |
| c_EPTF_GUI_Main_Tabbox_WidgetId)) { |
| log(log2str(%definitionId, ": cannot add element to gui: ", v_additionalTab)); |
| } |
| |
| const charstring c_EPTF_ExecCtrl_AddRemoveExecCtrlGUI := "c_EPTF_ExecCtrl_AddRemoveExecCtrlGUI"; |
| const charstring c_EPTF_ExecCtrl_AddRemoveExecCtrlGUI2 := "c_EPTF_ExecCtrl_AddRemoveExecCtrlGUI2"; |
| var Button vl_xml := |
| { |
| checked := omit,//BOOLEAN OPTIONAL, |
| disabled := true, |
| //disabledongui := false, |
| flex := 1.0, |
| id := c_EPTF_ExecCtrl_AddRemoveExecCtrlGUI2, |
| //imageid := omit, |
| imageid := omit,//"image_play" |
| label_ := "Add/Remove ExecCtrl GUI", |
| type_ := omit |
| } |
| if(log2str(f_EPTF_UIHandlerClient_XSD_addElementToGUI({button := vl_xml}, "AdditionalTab"))=="fail") |
| { |
| log(log2str(%definitionId, ": cannot add element to gui: ", vl_xml)); |
| } |
| |
| f_EPTF_UIHandlerClient_subscribeMe( |
| c_EPTF_ExecCtrl_AddRemoveExecCtrlGUI, |
| "GUI." & c_EPTF_ExecCtrl_AddRemoveExecCtrlGUI2, |
| c_EPTF_ExecCtrl_AddRemoveExecCtrlGUI2, |
| realtime); |
| |
| f_EPTF_UIHandlerClient_enableGUIElement( |
| c_EPTF_ExecCtrl_AddRemoveExecCtrlGUI2); |
| |
| |
| } |
| |
| |
| } // group EPTF_ExecCtrl_GUIVars_Test |
| |
| function f_EPTF_ExecCtrl_Test_DataSourceClientReady( |
| in charstring pl_source, |
| in charstring pl_ptcName) |
| runs on myMTC_UI{ |
| if (pl_source==c_ExecCtrl_DataSource_sourceId) { |
| v_ready := true; |
| } |
| } |
| |
| |
| function f_EPTF_ExecCtrl_Test_simpleBehavior(in EPTF_DataSource_CT pl_dataSource, in charstring pl_selfName) |
| runs on EPTF_ExecCtrl_Test_CT{ |
| f_EPTF_ExecCtrl_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := c_EPTF_ExecCtrl_DefaultScenarios_EGrpList, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList& |
| c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList_scGroups, |
| pl_EPTF_LGenBase_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_tcTypeDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList := {c_EPTF_ExecCtrl_DefaultScenarios_defaultTCType}, |
| pl_EPTF_LGenBase_TcMgmt_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_WeightedScenarioDeclaratorList:= {}, |
| pl_EPTF_ExecCtrl_TimeProfileDescrList:={}, |
| pl_EPTF_ExecCtrl_TimeProfileList:={}, |
| pl_EPTF_ExecCtrl_TimeProfile2TcList:={}, |
| pl_EPTF_LGenBase_ScenarioTypeDeclaratorList:= { |
| c_EPTF_ExecCtrl_DefaultScenarios_normalScenario,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenario, |
| c_EPTF_ExecCtrl_DefaultScenarios_normalScenarioInScGrp,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenarioInScGrp |
| }, |
| pl_EPTF_ExecCtrl_ScenarioInstanceTypeList:={}, |
| pl_EPTF_ExecCtrl_LGenPool_Declarators:=c_EPTF_ExecCtrl_Test_defaultLGenPool_Declarators, |
| pl_EPTF_ExecCtrl_EntityGroup2LGenPool_List:=c_EPTF_ExecCtrl_DefaultScenarios_EntityGroup2LGenPool_List, |
| pl_EPTF_ExecCtrl_LGenFunction_Entry_List:={{ |
| name := omit, |
| fn := refers(f_ExecCtrl_Test_createDefaultLGen) |
| }}, |
| pl_EPTF_ExecCtrl_PhaseList_Declarators:=c_EPTF_ExecCtrl_DefaultScenarios_phases, |
| pl_EPTF_ExecCtrl_ScenarioGroup_Declarators:=c_EPTF_ExecCtrl_DefaultScenarios_scGroups |
| ); |
| |
| f_EPTF_ExecCtrl_setManualControl(false); |
| |
| f_EPTF_ExecCtrl_init_CT( |
| pl_selfName := pl_selfName, |
| pl_nrOfClients :=0, |
| pl_dataSource_compRef := pl_dataSource); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_EPTF_ExecCtrl_Test_simpleBehaviorWithoutPhases(in EPTF_DataSource_CT pl_dataSource, in charstring pl_selfName) |
| runs on EPTF_ExecCtrl_Test_CT{ |
| f_EPTF_ExecCtrl_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := c_EPTF_ExecCtrl_DefaultScenarios_EGrpList, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList,//& |
| //c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList_scGroups, |
| pl_EPTF_LGenBase_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_tcTypeDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList := {c_EPTF_ExecCtrl_DefaultScenarios_defaultTCType}, |
| pl_EPTF_LGenBase_TcMgmt_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_WeightedScenarioDeclaratorList:= {}, |
| pl_EPTF_ExecCtrl_TimeProfileDescrList:={}, |
| pl_EPTF_ExecCtrl_TimeProfileList:={}, |
| pl_EPTF_ExecCtrl_TimeProfile2TcList:={}, |
| pl_EPTF_LGenBase_ScenarioTypeDeclaratorList:= { |
| c_EPTF_ExecCtrl_DefaultScenarios_normalScenario,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenario |
| //c_EPTF_ExecCtrl_DefaultScenarios_normalScenarioInScGrp,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenarioInScGrp |
| }, |
| pl_EPTF_ExecCtrl_ScenarioInstanceTypeList:={}, |
| pl_EPTF_ExecCtrl_LGenPool_Declarators:=c_EPTF_ExecCtrl_Test_defaultLGenPool_Declarators, |
| pl_EPTF_ExecCtrl_EntityGroup2LGenPool_List:=c_EPTF_ExecCtrl_DefaultScenarios_EntityGroup2LGenPool_List, |
| pl_EPTF_ExecCtrl_LGenFunction_Entry_List:={{ |
| name := omit, |
| fn := refers(f_ExecCtrl_Test_createDefaultLGen) |
| }} |
| //pl_EPTF_ExecCtrl_PhaseList_Declarators:=c_EPTF_ExecCtrl_DefaultScenarios_phases, |
| //pl_EPTF_ExecCtrl_ScenarioGroup_Declarators:=c_EPTF_ExecCtrl_DefaultScenarios_scGroups |
| ); |
| |
| f_EPTF_ExecCtrl_setManualControl(false); |
| |
| f_EPTF_ExecCtrl_init_CT( |
| pl_selfName := pl_selfName, |
| pl_nrOfClients :=0, |
| pl_dataSource_compRef := pl_dataSource); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| public function f_EPTF_ExecCtrl_Test_getFinalReport() runs on EPTF_ExecCtrl_CT return charstring{ |
| return v_EPTF_ExecCtrl_finalTestReport; |
| } |
| |
| group EPTF_ExecCtrl_Test_SmallCPSDistribution { |
| |
| public function f_EPTF_ExecCtrl_Test_SmallCPSDistribution_execute( |
| in integer pl_nofLGens, |
| in EPTF_UIHandler_CT pl_gui, |
| in charstring pl_eGrpName, |
| in charstring pl_scName, |
| in charstring pl_tcName, |
| in EPTF_FloatList pl_targetCPSList, |
| in integer pl_nofVarRefresh := c_EPTF_ExecCtrl_Test_SmallCPSDistribution_nofVarRefresh, |
| in integer pl_nofLGenRefresh := c_EPTF_ExecCtrl_Test_SmallCPSDistribution_nofLGenRefresh, |
| in EPTF_ExecCtrl_CreateLGen_FT pl_createLGenFn := refers(f_ExecCtrl_Test_createDefaultLGen) |
| ) runs on ExecCtrl_Test_SmallCPSDistribution_CT |
| { |
| var charstring vl_wndLayout := c_EPTF_ExecCtrl_Test_defaultMainWindow_str; |
| f_EPTF_UIHandlerXUL_init_CT("SmallCPSDistribution", true, vl_wndLayout); |
| f_EPTF_ExecCtrl_loadConfig( |
| pl_EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList := c_EPTF_ExecCtrl_DefaultScenarios_EGrpList, |
| pl_EPTF_LGenBase_TcMgmt_Scenarios2GrpList := c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList, |
| pl_EPTF_LGenBase_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_tcTypeDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_tcTypeDeclaratorList := {c_EPTF_ExecCtrl_DefaultScenarios_defaultTCType}, |
| pl_EPTF_LGenBase_TcMgmt_ScenarioDeclaratorList := {}, |
| pl_EPTF_LGenBase_TcMgmt_WeightedScenarioDeclaratorList:= {}, |
| pl_EPTF_ExecCtrl_TimeProfileDescrList:={}, |
| pl_EPTF_ExecCtrl_TimeProfileList:={}, |
| pl_EPTF_ExecCtrl_TimeProfile2TcList:={}, |
| pl_EPTF_LGenBase_ScenarioTypeDeclaratorList:= { |
| c_EPTF_ExecCtrl_DefaultScenarios_normalScenario,c_EPTF_ExecCtrl_DefaultScenarios_weightedScenario |
| }, |
| pl_EPTF_ExecCtrl_ScenarioInstanceTypeList:={}, |
| pl_EPTF_ExecCtrl_LGenPool_Declarators:={ |
| { |
| name := c_EPTF_ExecCtrl_Test_defaultLGenPoolName, |
| lgenPoolItems := { |
| { |
| hostname := "localhost", |
| num := pl_nofLGens, |
| createFunctionName := substr(log2str(pl_createLGenFn),7,lengthof(log2str(pl_createLGenFn))-8) |
| } |
| } |
| } |
| }, |
| pl_EPTF_ExecCtrl_EntityGroup2LGenPool_List:=c_EPTF_ExecCtrl_DefaultScenarios_EntityGroup2LGenPool_List, |
| pl_EPTF_ExecCtrl_LGenFunction_Entry_List:={{ |
| name := omit, |
| fn := pl_createLGenFn |
| }}, |
| pl_EPTF_ExecCtrl_RegulatorNames:={}, |
| pl_EPTF_ExecCtrl_RegulatedItems:={} |
| ); |
| f_EPTF_ExecCtrl_setManualControl(true); |
| |
| f_EPTF_ExecCtrl_init_CT(f_EPTF_Base_selfName(), pl_nrOfClients := 0, pl_dataSource_compRef := pl_gui); |
| f_EPTF_StatMeasure_init_CT("SmallCPSDistribution"); |
| |
| timer T_guard, T_alt; |
| T_guard.start( 100.0 ); |
| T_alt.start( 0.0 ); |
| alt{ |
| [] T_guard.timeout{ |
| setverdict(fail,"Timeout during config"); |
| f_EPTF_Base_stopAll(); |
| } |
| [f_EPTF_ExecCtrl_checkReadyToRun()] T_alt.timeout{} |
| }; |
| |
| |
| // start the scenarios, but ignore the initial transient |
| //f_EPTF_ExecCtrl_startAllScenarios(); |
| if (pl_tcName=="") { |
| f_EPTF_ExecCtrl_startScenarioOnLGensByName(pl_eGrpName,pl_scName); |
| } else { |
| var integer vl_scIdx := f_EPTF_ExecCtrl_getScenarioIdx(pl_eGrpName,pl_scName); |
| var integer vl_tcIdx := f_EPTF_ExecCtrl_getTrafficCaseIdx(pl_eGrpName,pl_scName,pl_tcName) |
| var integer vl_tcOfScIdx := f_EPTF_ExecCtrl_getTcOfScenarioIdx(vl_tcIdx); |
| f_EPTF_ExecCtrl_startTCOnLGens(vl_scIdx,vl_tcOfScIdx); |
| } |
| timer t_wait; |
| t_wait.start(f_EPTF_Var_getRefreshPeriod(0)*2.0+1.0); t_wait.timeout; |
| |
| for(var integer i:=0; i<sizeof(pl_targetCPSList); i:=i+1) { |
| f_ExecCtrl_Test_SmallCPSDistribution_measure( |
| pl_eGrpName := pl_eGrpName, |
| pl_scName := pl_scName, |
| pl_tcName := pl_tcName, |
| pl_targetCps := pl_targetCPSList[i], |
| pl_nofLGens := pl_nofLGens, |
| pl_nofVarRefresh := pl_nofVarRefresh, |
| pl_nofLGenRefresh := pl_nofLGenRefresh |
| ); |
| } |
| |
| f_EPTF_Base_cleanup_CT(); |
| } |
| |
| |
| public function f_EPTF_ExecCtrl_Test_SmallCPSDistribution_startTest_PostProc( |
| // in EPTF_IntegerList pl_argList) |
| in integer pl_idx, |
| in EPTF_IntegerList pl_argList) |
| runs on ExecCtrl_Test_SmallCPSDistribution_CT |
| { |
| vl_startTest :=true; |
| } |
| |
| public function f_EPTF_ExecCtrl_Test_SmallCPSDistribution_addData_EPS_PostProc( |
| in integer pl_idx, |
| in EPTF_IntegerList pl_argList) |
| runs on ExecCtrl_Test_SmallCPSDistribution_CT |
| { |
| //action("AAAA, delta: ", f_EPTF_Var_getIntValue(pl_idx)); |
| f_EPTF_Base_assert("Invalid size", |
| sizeof(pl_argList)==1); |
| |
| var integer pl_statIdx := pl_argList[0]; |
| |
| f_EPTF_StatMeasure_addData_EPS(pl_statIdx, f_EPTF_Var_getIntValue(pl_idx)); |
| f_EPTF_StatMeasure_update_EPS(pl_statIdx); |
| |
| var float currentEPS; |
| f_EPTF_StatMeasure_getStat_EPS(pl_statIdx,currentEPS); |
| //action("Current EPS: ", currentEPS); |
| |
| f_EPTF_StatMeasure_resetStat_EPS(pl_statIdx); |
| f_EPTF_StatMeasure_startMeasurement_EPS(pl_statIdx); |
| } |
| |
| function f_ExecCtrl_Test_SmallCPSDistribution_measure( |
| in charstring pl_eGrpName, |
| in charstring pl_scName, |
| in charstring pl_tcName, |
| in float pl_targetCps, |
| in integer pl_nofLGens, |
| in integer pl_nofVarRefresh := c_EPTF_ExecCtrl_Test_SmallCPSDistribution_nofVarRefresh, |
| in integer pl_nofLGenRefresh := c_EPTF_ExecCtrl_Test_SmallCPSDistribution_nofLGenRefresh |
| ) runs on ExecCtrl_Test_SmallCPSDistribution_CT { |
| |
| //get the id of the scenario: |
| var integer vl_scIdx := f_EPTF_ExecCtrl_getScenarioIdx(pl_eGrpName,pl_scName); |
| if (f_EPTF_ExecCtrl_isWeightedScenario(vl_scIdx)) { |
| if (pl_targetCps!=10.0) { |
| //action("SC CPS is set to: ", pl_targetCps); |
| f_EPTF_ExecCtrl_setCPSToReach_SC(vl_scIdx,pl_targetCps); |
| } |
| } else { |
| // get the Id of the traffic case: |
| var integer vl_tcIdx := f_EPTF_ExecCtrl_getTrafficCaseIdx(pl_eGrpName,pl_scName,pl_tcName); |
| // only set CPS if it differs from original |
| if (pl_targetCps!=10.0) { |
| //action("TC CPS is set to: ", pl_targetCps); |
| f_EPTF_ExecCtrl_setCPSToReach_TC(vl_tcIdx,pl_targetCps); |
| } |
| } |
| |
| // create standardDev stat for CPS: |
| var charstring vl_cpsVarName; |
| f_EPTF_DataSource_getData( |
| vl_cpsVarName, |
| c_ExecCtrl_DataSource_sourceId,"", |
| c_ExecCtrl_dataElementTcStat, |
| { |
| {c_ExecCtrl_paramNameEntityGroup,pl_eGrpName}, |
| {c_ExecCtrl_paramNameScenario,pl_scName}, |
| {c_ExecCtrl_paramNameTrafficCase,pl_tcName}, |
| {c_ExecCtrl_paramNameStatistic,c_EPTF_ExecCtrl_tcStatNames[c_EPTF_ExecCtrl_tcStatId_CurrentCPS]} |
| } |
| ); |
| var integer vl_cpsVarId := f_EPTF_Var_getId(vl_cpsVarName); |
| // var integer vl_standardDevStatId := f_EPTF_StatMeasure_newStat_standardDev(vl_cpsVarId); |
| var integer vl_standardDevStatId := f_EPTF_StatMeasure_newStat_standardDev(); |
| if (vl_cpsVarId==-1) { |
| setverdict(fail,"CPS stat not found!"); |
| f_EPTF_Base_stopAll(); |
| } |
| var float m,s; |
| var integer vl_n_varId := f_EPTF_StatMeasure_createVarFromStat_N_standardDev(vl_standardDevStatId); |
| var float currentCPS; |
| var float currentEPS; |
| |
| var charstring vl_startsVarName; |
| f_EPTF_DataSource_getData( |
| vl_startsVarName, |
| c_ExecCtrl_DataSource_sourceId,"", |
| c_ExecCtrl_dataElementTcStat, |
| { |
| {c_ExecCtrl_paramNameEntityGroup,pl_eGrpName}, |
| {c_ExecCtrl_paramNameScenario,pl_scName}, |
| {c_ExecCtrl_paramNameTrafficCase,pl_tcName}, |
| {c_ExecCtrl_paramNameStatistic,c_EPTF_ExecCtrl_tcStatNames[c_EPTF_ExecCtrl_tcStatId_Starts]} |
| }, |
| sampled |
| ); |
| var integer vl_startsVarId := f_EPTF_Var_getId(vl_startsVarName); |
| //f_EPTF_Var_newInt("CALIBRATION",0,vl_startsVarId); //CALIBRATION |
| var integer vl_deltaStatid := f_EPTF_StatMeasure_newStat_delta(vl_startsVarId); |
| f_EPTF_StatMeasure_addData_delta(vl_deltaStatid,{intVal := 0}); |
| timer t_wait := f_EPTF_Var_getRefreshPeriod(0)+1.0; |
| t_wait.start; t_wait.timeout; |
| |
| var integer vl_deltaStatVarId := f_EPTF_StatMeasure_createVarFromStat(vl_deltaStatid); |
| var integer devDeltaStatId := f_EPTF_StatMeasure_newStat_standardDev(vl_deltaStatVarId); |
| var integer currentStarts; |
| var integer deltaStarts; |
| var float meanDeltaStarts; |
| var float devDeltaStarts; |
| // var float sum; |
| // var integer sumNId := f_EPTF_StatMeasure_createVarFromStat_N_mean(meanDeltaStatId); |
| |
| // create EPS from Delta: |
| var integer vl_epsDeltaStatid := f_EPTF_StatMeasure_newStat_EPS(); |
| f_EPTF_Var_addPostProcFn(vl_deltaStatVarId, |
| {refers(f_EPTF_ExecCtrl_Test_SmallCPSDistribution_addData_EPS_PostProc), {vl_epsDeltaStatid}}); |
| var integer vl_epsDeltaStatVarId := f_EPTF_StatMeasure_createVarFromStat(vl_epsDeltaStatid); |
| var integer devEpsDeltaStatId := f_EPTF_StatMeasure_newStat_standardDev(vl_epsDeltaStatVarId); |
| var float meanEpsDeltaStarts; |
| var float devEpsDeltaStarts; |
| |
| // start the test at the variable sync event: |
| // wait for start: |
| //f_EPTF_Var_addSyncCallBackFn(refers(f_EPTF_ExecCtrl_Test_SmallCPSDistribution_startTest_PostProc), {},c_EPTF_Var_syncEnd); |
| f_EPTF_Var_addPostProcFn(vl_deltaStatVarId, |
| {refers(f_EPTF_ExecCtrl_Test_SmallCPSDistribution_startTest_PostProc), {}}); |
| vl_startTest := false; |
| t_wait.start(0.0); |
| //action("Waiting for var sync...."); |
| alt { |
| [vl_startTest] t_wait.timeout; |
| } |
| //action("START MEASUREMENT"); |
| var integer vl_startsOffset :=f_EPTF_Var_getIntValue(vl_startsVarId); |
| f_EPTF_StatMeasure_resetStat(devDeltaStatId); |
| f_EPTF_StatMeasure_resetStat(vl_epsDeltaStatid); |
| f_EPTF_StatMeasure_startMeasurement_EPS(vl_epsDeltaStatid); |
| f_EPTF_StatMeasure_resetStat(devEpsDeltaStatId); |
| |
| timer t_update := 5.0; |
| //t_update.start(5.0); |
| |
| timer t_measure := 0.0 |
| t_measure.start(f_EPTF_Var_getRefreshPeriod(0)*int2float(pl_nofVarRefresh)); // minimum time: pl_nofVarRefresh var refresh periods |
| var float vl_expected_meanEpsDeltaStarts := pl_targetCps; |
| var float vl_expected_meanDeltaStarts := f_EPTF_Var_getRefreshPeriod(0)*pl_targetCps; |
| if (vl_expected_meanDeltaStarts<1.0) { |
| vl_expected_meanDeltaStarts := 1.0; |
| } |
| alt { |
| // min starts: 10/LGen |
| [f_EPTF_Var_getIntValue(vl_startsVarId)-vl_startsOffset>=pl_nofLGens*pl_nofLGenRefresh] t_measure.timeout { |
| //f_EPTF_ExecCtrl_stopAllScenarios(); |
| action("--------MEASURED VALUES----------"); |
| |
| f_EPTF_StatMeasure_getStat_standardDev_mean(devDeltaStatId,meanDeltaStarts); |
| f_EPTF_StatMeasure_getStat_standardDev(devDeltaStatId,devDeltaStarts); |
| action("mean Delta Starts: ", meanDeltaStarts, " dev Delta Starts: ", devDeltaStarts); |
| // sum := meanDeltaStarts*int2float(f_EPTF_Var_getIntValue(sumNId)); |
| // action("sum Delta Starts: ", sum); |
| |
| f_EPTF_StatMeasure_getStat_standardDev_mean(devEpsDeltaStatId,meanEpsDeltaStarts); |
| f_EPTF_StatMeasure_getStat_standardDev(devEpsDeltaStatId,devEpsDeltaStarts); |
| action("mean EPS Delta Starts: ", meanEpsDeltaStarts, " dev EPS Delta Starts: ", devEpsDeltaStarts); |
| |
| |
| if ((vl_expected_meanEpsDeltaStarts-meanEpsDeltaStarts)*(vl_expected_meanEpsDeltaStarts-meanEpsDeltaStarts)>0.1) { |
| setverdict(fail, "Actual meanEpsDeltaStarts (",meanEpsDeltaStarts,") differs from expected value (",vl_expected_meanEpsDeltaStarts,")"); |
| f_EPTF_Base_stop(); |
| } else { |
| setverdict(pass, "Actual meanEpsDeltaStarts (",meanEpsDeltaStarts,") matches with expected value (",vl_expected_meanEpsDeltaStarts,")"); |
| } |
| if ((c_EPTF_ExecCtrl_Test_SmallCPSDistribution_expected_devEpsDeltaStarts-devEpsDeltaStarts)*(c_EPTF_ExecCtrl_Test_SmallCPSDistribution_expected_devEpsDeltaStarts-devEpsDeltaStarts)>0.1) { |
| setverdict(fail, "Actual devEpsDeltaStarts (",devEpsDeltaStarts,") differs from expected value (",c_EPTF_ExecCtrl_Test_SmallCPSDistribution_expected_devEpsDeltaStarts,")"); |
| f_EPTF_Base_stop(); |
| } else { |
| setverdict(pass, "Actual devEpsDeltaStarts (",devEpsDeltaStarts,") matches with expected value (",c_EPTF_ExecCtrl_Test_SmallCPSDistribution_expected_devEpsDeltaStarts,")"); |
| } |
| |
| if ((vl_expected_meanDeltaStarts-meanDeltaStarts)*(vl_expected_meanDeltaStarts-meanDeltaStarts)>0.1) { |
| setverdict(fail, "Actual meanDeltaStarts (",meanDeltaStarts,") differs from expected value (",vl_expected_meanDeltaStarts,")"); |
| f_EPTF_Base_stop(); |
| } else { |
| setverdict(pass, "Actual meanDeltaStarts (",meanDeltaStarts,") matches with expected value (",vl_expected_meanDeltaStarts,")"); |
| } |
| if ((c_EPTF_ExecCtrl_Test_SmallCPSDistribution_expected_devDeltaStarts -devDeltaStarts)*(c_EPTF_ExecCtrl_Test_SmallCPSDistribution_expected_devDeltaStarts-devDeltaStarts)>0.1) { |
| setverdict(fail, "Actual devDeltaStarts (",devDeltaStarts,") differs from expected value (",c_EPTF_ExecCtrl_Test_SmallCPSDistribution_expected_devDeltaStarts,")"); |
| f_EPTF_Base_stop(); |
| } else { |
| setverdict(pass, "Actual devDeltaStarts (",devDeltaStarts,") matches with expected value (",c_EPTF_ExecCtrl_Test_SmallCPSDistribution_expected_devDeltaStarts,")"); |
| } |
| action("------MEASURED VALUES END-------"); |
| } |
| []t_update.timeout { |
| currentStarts := f_EPTF_Var_getIntValue(vl_startsVarId); |
| action("Current Starts: ", currentStarts); |
| action("Delta Starts: ", f_EPTF_StatMeasure_delta2str(vl_deltaStatid)); |
| |
| currentCPS := f_EPTF_Var_getFloatValue(vl_cpsVarId); |
| action("Current CPS: ", currentCPS); |
| f_EPTF_StatMeasure_addData_standardDev(vl_standardDevStatId, currentCPS); |
| if(f_EPTF_StatMeasure_getStat_standardDev_mean(vl_standardDevStatId,m) |
| and f_EPTF_StatMeasure_getStat_standardDev(vl_standardDevStatId,s)) { |
| action("mean(CPS): ", m, " sdev(CPS): ", s, " n: ", f_EPTF_Var_getIntValue(vl_n_varId)); |
| } |
| |
| //currentEPS := f_EPTF_Var_getFloatValue(vl_epsDeltaStatVarId); |
| //action("Current EPS var : ", f_EPTF_Var_getFloatValue(vl_epsDeltaStatVarId)); |
| //f_EPTF_StatMeasure_getStat_EPS(vl_epsDeltaStatid,currentEPS); |
| //action("Current EPS stat: ", currentEPS); |
| f_EPTF_StatMeasure_getStat_standardDev_mean(devEpsDeltaStatId,meanEpsDeltaStarts); |
| f_EPTF_StatMeasure_getStat_standardDev(devEpsDeltaStatId,devEpsDeltaStarts); |
| action("mean EPS Delta Starts: ", meanEpsDeltaStarts, " dev EPS Delta Starts: ", devEpsDeltaStarts); |
| t_update.start(5.0); |
| //f_EPTF_Var_adjustContent(vl_startsVarId, {intVal := 5+f_EPTF_Var_getIntValue(vl_startsVarId)}); //CALIBRATION |
| repeat; |
| } |
| } |
| f_EPTF_Var_removePostProcFn(vl_deltaStatVarId, |
| {refers(f_EPTF_ExecCtrl_Test_SmallCPSDistribution_addData_EPS_PostProc), {vl_epsDeltaStatid}}); |
| f_EPTF_Var_removePostProcFn(vl_deltaStatVarId, |
| {refers(f_EPTF_ExecCtrl_Test_SmallCPSDistribution_startTest_PostProc), {}}); |
| } |
| |
| |
| //LGen capable to measure TrafficStartTime: |
| |
| function f_EPTF_ExecCtrl_Test_SmallCPSDistribution_startTimeMeasure_stepFn( |
| in EPTF_LGenBase_TestStepArgs pl_ptr |
| ) runs on ExecCtrl_Test_SmallCPSDistribution_LGen_CT { |
| v_startTimes[sizeof(v_startTimes)] := f_EPTF_Base_getRelTimeInSecs(); |
| } |
| |
| function f_EPTF_ExecCtrl_Test_SmallCPSDistribution_cleanup_CT() runs on ExecCtrl_Test_SmallCPSDistribution_LGen_CT { |
| if (v_expectedCPS==0.0) { |
| return; |
| } |
| var integer v_startTimeDistributionStatId := f_EPTF_StatMeasure_newStat_density({}); |
| var float vl_timeResolution := 1.0; |
| var EPTF_FloatList vl_boundaries := {}; |
| for(var integer i:=0; int2float(i)<2.0+(1.0+v_startTimes[sizeof(v_startTimes)-1]-v_startTimes[0])/vl_timeResolution; i:=i+1) { |
| vl_boundaries[i] := int2float(float2int(v_startTimes[0]))+int2float(i-1)*vl_timeResolution; |
| } |
| |
| f_EPTF_StatMeasure_setBoundaries_density(v_startTimeDistributionStatId,vl_boundaries) |
| // f_EPTF_StatMeasure_setScale_density( |
| // v_startTimeDistributionStatId, |
| // v_startTimes[0], |
| // v_startTimes[sizeof(v_startTimes)-1], |
| // float2int(v_startTimes[sizeof(v_startTimes)-1]-v_startTimes[0]) |
| // ); |
| for(var integer i:=0; i<sizeof(v_startTimes); i:=i+1) { |
| f_EPTF_StatMeasure_addData_density(v_startTimeDistributionStatId,v_startTimes[i]); |
| } |
| var EPTF_IntegerList vl_densityValues; |
| f_EPTF_StatMeasure_getStat_density(v_startTimeDistributionStatId,vl_densityValues); |
| //action("StartTimeBoundaries : ", f_EPTF_StatMeasure_getBoundaries_density(v_startTimeDistributionStatId)); |
| action("StartTimeDistribution: ", vl_densityValues); |
| // check the elements of the density to determine the verdict |
| var integer vl_standardDevStatId := f_EPTF_StatMeasure_newStat_standardDev(); |
| var float vl_standardDevStartTimeOffset := f_EPTF_Var_getRefreshPeriod(0)*2.0+2.0; |
| var integer first:=-1, last:=-1, firstId, lastId; |
| //var integer totalCalls := 0; |
| for(var integer i:=0; i<sizeof(vl_densityValues); i:=i+1) { |
| // measure standard dev, but remove initial and final transients: |
| if (vl_standardDevStartTimeOffset>int2float(i-2)*vl_timeResolution) { |
| continue; |
| } |
| if ((v_startTimes[sizeof(v_startTimes)-1]-v_startTimes[0])/vl_timeResolution<int2float(i-1)) { |
| continue; |
| } |
| if (first==-1) { |
| firstId := i; |
| first := vl_densityValues[i]; |
| } |
| lastId := i |
| last := vl_densityValues[i] |
| //totalCalls := totalCalls + vl_densityValues[i]; |
| f_EPTF_StatMeasure_addData_standardDev(vl_standardDevStatId,int2float(vl_densityValues[i])); |
| } |
| action("first: ",first," last: ", last); |
| action("firstId: ",firstId," lastId: ", lastId, " total: ", sizeof(vl_densityValues)); |
| var float vl_CPSMean, vl_CPSDev; |
| f_EPTF_StatMeasure_getStat_standardDev_mean(vl_standardDevStatId,vl_CPSMean) |
| f_EPTF_StatMeasure_getStat_standardDev(vl_standardDevStatId,vl_CPSDev) |
| action("CPSMean: ", vl_CPSMean/vl_timeResolution); |
| action("CPSDev : ", vl_CPSDev); |
| //action("CPSAvg : ", int2float(totalCalls)/(vl_timeResolution*int2float(lastId-firstId+1))); |
| var float vl_expectedBurst := v_expectedCPS*vl_timeResolution; |
| if ((vl_expectedBurst-vl_CPSMean)*(vl_expectedBurst-vl_CPSMean)>0.1) { |
| setverdict(fail, "Actual CPSMean (",vl_CPSMean/vl_timeResolution,") differs from expected value (",v_expectedCPS,")"); |
| } else { |
| setverdict(pass, "Actual CPSMean (",vl_CPSMean/vl_timeResolution,") matches with expected value (",v_expectedCPS,")"); |
| } |
| if ((c_EPTF_ExecCtrl_Test_SmallCPSDistribution_expected_devEpsDeltaStarts-vl_CPSDev)*(c_EPTF_ExecCtrl_Test_SmallCPSDistribution_expected_devEpsDeltaStarts-vl_CPSDev)>0.1) { |
| setverdict(fail, "Actual CPSDev (",vl_CPSDev,") differs from expected value (",c_EPTF_ExecCtrl_Test_SmallCPSDistribution_expected_devEpsDeltaStarts,")"); |
| } else { |
| setverdict(pass, "Actual CPSDev (",vl_CPSDev,") matches with expected value (",c_EPTF_ExecCtrl_Test_SmallCPSDistribution_expected_devEpsDeltaStarts,")"); |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_Test_SmallCPSDistribution_startTimeMeasureBehaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef, |
| in float pl_expectedCPS := 0.0) |
| runs on ExecCtrl_Test_SmallCPSDistribution_LGen_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_Base_registerCleanup(refers(f_EPTF_ExecCtrl_Test_SmallCPSDistribution_cleanup_CT)); |
| v_startTimes := {}; |
| v_expectedCPS := pl_expectedCPS; |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_SmallCPSDistribution_startTimeMeasure_stepName, refers(f_EPTF_ExecCtrl_Test_SmallCPSDistribution_startTimeMeasure_stepFn)}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_startTimeMeasurementFSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_EPTF_ExecCtrl_Test_SmallCPSDistribution_createStartTimeMeasureLGen ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on ExecCtrl_Test_SmallCPSDistribution_CT return EPTF_ExecCtrlClient_CT |
| { |
| var ExecCtrl_Test_SmallCPSDistribution_LGen_CT vl_lgen := ExecCtrl_Test_SmallCPSDistribution_LGen_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_Test_SmallCPSDistribution_startTimeMeasureBehaviour("ExecCtrl_StartTimeMeasure_"&log2str(vl_lgen),self,v_expectedCPSPerLGen) ); |
| return vl_lgen; |
| } |
| |
| } // group EPTF_ExecCtrl_Test_SmallCPSDistribution |
| |
| // functions and component that is needed to check expected warning messages |
| group CheckExcpectedWarning { |
| |
| private function f_EPTF_ExecCtrl_Test_ExpectedWarning_init() runs on EPTF_CLL_ExecCtrl_Test_ExpectedWarning_CT { |
| if (v_ExecCtrl_Test_expectedWarningInitialized) { |
| return; |
| } |
| v_ExecCtrl_Test_expectedWarningInitialized:=true; |
| v_ExecCtrl_Test_expectedWarningArrived := false; |
| v_ExecCtrl_Test_expectedWarningMsg:=""; |
| f_EPTF_Base_registerCleanup(refers(f_EPTF_ExecCtrl_Test_ExpectedWarning_cleanup)); |
| f_EPTF_Logging_registerPreambleFn(refers(f_EPTF_ExecCtrl_Test_ExpectedWarning_checkExpectedWarning_preamble_FT)); |
| } |
| |
| private function f_EPTF_ExecCtrl_Test_ExpectedWarning_cleanup() runs on EPTF_CLL_ExecCtrl_Test_ExpectedWarning_CT { |
| if (not v_ExecCtrl_Test_expectedWarningInitialized) { |
| return; |
| } |
| v_ExecCtrl_Test_expectedWarningInitialized:=false; |
| if (v_ExecCtrl_Test_expectedWarningMsg != "" and not v_ExecCtrl_Test_expectedWarningArrived) { |
| setverdict(fail,"Expected warning message ",v_ExecCtrl_Test_expectedWarningMsg," was not logged!"); |
| } else { |
| setverdict(pass,"Expected warning message was logged"); |
| } |
| } |
| |
| public function f_EPTF_ExecCtrl_Test_ExpectedWarning_setExpectedWarning(in charstring pl_expectedWarningMsg) runs on EPTF_CLL_ExecCtrl_Test_ExpectedWarning_CT { |
| if (pl_expectedWarningMsg=="") { |
| return; |
| } |
| f_EPTF_ExecCtrl_Test_ExpectedWarning_init(); |
| v_ExecCtrl_Test_expectedWarningMsg := pl_expectedWarningMsg; |
| } |
| |
| private function f_EPTF_ExecCtrl_Test_ExpectedWarning_checkExpectedWarning_preamble_FT(in charstring pl_message) runs on EPTF_CLL_ExecCtrl_Test_ExpectedWarning_CT { |
| if (not match(pl_message,pattern "*Warning*")) { |
| return; |
| } |
| action(match(pl_message,pattern v_ExecCtrl_Test_expectedWarningMsg)) |
| if (match(pl_message,pattern v_ExecCtrl_Test_expectedWarningMsg)) { |
| v_ExecCtrl_Test_expectedWarningArrived := true; |
| } |
| } |
| |
| } // group CheckExcpectedWarning |
| |
| group ScenarioWithFSM_no_tcTypeDeclaratorList_HO82462 { |
| |
| function f_EPTF_ExecCtrl_Test_HO82462_LGenBehaviour_1( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrlClient_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName&"_1", -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName&"_1"}); |
| var EPTF_LGenBase_FsmTableDeclarator vl_EPTF_ExecCtrl_Test_defaultFSM := c_EPTF_ExecCtrl_Test_defaultFSM; |
| vl_EPTF_ExecCtrl_Test_defaultFSM.name := c_EPTF_ExecCtrl_Test_defaultFSMName&"_1"; |
| f_EPTF_LGenBase_declareFSMTable(vl_EPTF_ExecCtrl_Test_defaultFSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_EPTF_ExecCtrl_Test_HO82462_LGenBehaviour_2( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrlClient_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName&"_2", -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName&"_2"}); |
| var EPTF_LGenBase_FsmTableDeclarator vl_EPTF_ExecCtrl_Test_defaultFSM := c_EPTF_ExecCtrl_Test_defaultFSM; |
| vl_EPTF_ExecCtrl_Test_defaultFSM.name := c_EPTF_ExecCtrl_Test_defaultFSMName&"_2"; |
| f_EPTF_LGenBase_declareFSMTable(vl_EPTF_ExecCtrl_Test_defaultFSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_ExecCtrl_Test_HO82462_createLGen_1 ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrlClient_CT vl_lgen := EPTF_ExecCtrlClient_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_Test_HO82462_LGenBehaviour_1("ExecCtrl_LGen_"&log2str(vl_lgen),self) ); |
| return vl_lgen; |
| } |
| |
| function f_ExecCtrl_Test_HO82462_createLGen_2 ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrlClient_CT vl_lgen := EPTF_ExecCtrlClient_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_Test_HO82462_LGenBehaviour_2("ExecCtrl_LGen_"&log2str(vl_lgen),self) ); |
| return vl_lgen; |
| } |
| |
| } //group ScenarioWithFSM_no_tcTypeDeclaratorList_HO82462 |
| |
| // {Delta statistics}: |
| group EPTF_ExecCtrl_Test_DeltaStatFSM { |
| |
| function f_EPTF_ExecCtrl_CLITest_deltaStatLGenBehaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrlClient_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_deltaStatFSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| |
| function f_ExecCtrl_Test_createDefaultLGenDeltaStat ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrlClient_CT vl_lgen := EPTF_ExecCtrlClient_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_CLITest_deltaStatLGenBehaviour("ExecCtrl_DefaultLGen_"&log2str(vl_lgen),self) ); |
| return vl_lgen; |
| } |
| |
| } //group EPTF_ExecCtrl_Test_DeltaStatFSM |
| |
| |
| group EPTF_ExecCtrl_Test_tcFailForNotRunning { |
| |
| function f_EPTF_ExecCtrl_CLITest_tcFailForNotRunningLGenBehaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrlClient_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_tcFailForNotRunning_FSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_ExecCtrl_Test_createTcFailForNotRunningLGen ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrlClient_CT vl_lgen := EPTF_ExecCtrlClient_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_CLITest_tcFailForNotRunningLGenBehaviour("ExecCtrl_TcFailForNotRunningLGen_"&log2str(vl_lgen),self) ); |
| return vl_lgen; |
| } |
| |
| |
| } // group EPTF_ExecCtrl_Test_tcFailForNotRunning |
| |
| group EPTF_ExecCtrl_Test_cpsProblem { |
| |
| function f_EPTF_ExecCtrl_CLITest_cpsProblemLGenBehaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrlClient_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_cpsProblem_FSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_ExecCtrl_Test_createcpsProblemLGen ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrlClient_CT vl_lgen := EPTF_ExecCtrlClient_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_CLITest_cpsProblemLGenBehaviour("ExecCtrl_cpsProblemLGen_"&log2str(vl_lgen),self) ); |
| return vl_lgen; |
| } |
| |
| |
| } // group EPTF_ExecCtrl_Test_tcFailForNotRunning |
| |
| group EPTF_ExecCtrl_ExitDuringTrafficRun_Test { |
| |
| function f_ExecCtrl_Test_createExitDuringTrafficRunLGen ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on ExecCtrlDSClient_Test_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrl_ExitDuringTrafficRun_CT vl_lgen := EPTF_ExecCtrl_ExitDuringTrafficRun_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_Test_ExitDuringTrafficRunLGen("ExecCtrl_DefaultLGen_"&log2str(vl_lgen),self) ); |
| return vl_lgen; |
| } |
| |
| function f_EPTF_ExecCtrl_Test_ExitDuringTrafficRunLGen_detectCleanup_stepFn( |
| in EPTF_LGenBase_TestStepArgs pl_ptr |
| ) runs on EPTF_ExecCtrl_ExitDuringTrafficRun_CT { |
| // action("call >> f_EPTF_ExecCtrl_Test_ExitDuringTrafficRunLGen_detectCleanup_stepFn"); |
| if(f_EPTF_Base_cleanupIsInProgress()==false) { |
| setverdict(fail, "TEST step called under cleanup"); |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_Test_ExitDuringTrafficRunLGen_detectCleanup_timeout_stepFn( |
| in EPTF_LGenBase_TestStepArgs pl_ptr |
| ) runs on EPTF_ExecCtrl_ExitDuringTrafficRun_CT { |
| // action("call >> f_EPTF_ExecCtrl_Test_ExitDuringTrafficRunLGen_detectCleanup_timeout_stepFn"); |
| if(f_EPTF_Base_cleanupIsInProgress()==false) { |
| setverdict(fail, "TEST timeout step called under cleanup"); |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_Test_ExitDuringTrafficRunLGen_detectCleanup_dispatch_stepFn( |
| in EPTF_LGenBase_TestStepArgs pl_ptr |
| ) runs on EPTF_ExecCtrl_ExitDuringTrafficRun_CT { // EPTF_ExecCtrl_ExitDuringTrafficRun_CT |
| // action("call >> f_EPTF_ExecCtrl_Test_ExitDuringTrafficRunLGen_detectCleanup_dispatch_stepFn"); |
| setverdict(fail, "TEST dispatchEvent called under cleanup"); |
| } |
| |
| |
| function f_EPTF_ExecCtrl_Test_ExitDuringTrafficRun_Cleanup_CT() |
| runs on EPTF_ExecCtrl_ExitDuringTrafficRun_CT { |
| action("call >> f_EPTF_ExecCtrl_Test_ExitDuringTrafficRun_Cleanup_CT"); |
| f_EPTF_LGenBase_dispatchEvent( { event:={ bIdx:= v_idxBCTExitDuringTrafficRun, iIdx:= v_idxFSMEventExitDuringTrafficRun, target:=omit, source := omit}, reportedArgs:= {} }); |
| timer t_wait := 10.0; |
| t_wait.start; |
| t_wait.timeout; |
| action("ENDE >> f_EPTF_ExecCtrl_Test_ExitDuringTrafficRun_Cleanup_CT"); |
| } |
| |
| function f_EPTF_ExecCtrl_Test_ExitDuringTrafficRunLGen(in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrl_ExitDuringTrafficRun_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| v_idxBCTExitDuringTrafficRun := f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_ExitDuringTrafficRun_Test_detectCleanup, refers(f_EPTF_ExecCtrl_Test_ExitDuringTrafficRunLGen_detectCleanup_stepFn)}); |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_ExitDuringTrafficRun_Test_detectTimeoutCleanup, refers(f_EPTF_ExecCtrl_Test_ExitDuringTrafficRunLGen_detectCleanup_timeout_stepFn)}); |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_ExitDuringTrafficRun_Test_detectDispatchCleanup, refers(f_EPTF_ExecCtrl_Test_ExitDuringTrafficRunLGen_detectCleanup_dispatch_stepFn)}); |
| //v_idxBCTExitDuringTrafficRun := f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_ExitDuringTrafficRun_eventName, -1, null, null, null); |
| v_idxFSMEventExitDuringTrafficRun := f_EPTF_LGenBase_declareFsmEvent(c_EPTF_ExecCtrl_Test_defaultBehaviorName, c_EPTF_ExecCtrl_ExitDuringTrafficRun_eventName); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_FSMExitDuringTrafficRunLGen); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| f_EPTF_Base_registerCleanup(refers(f_EPTF_ExecCtrl_Test_ExitDuringTrafficRun_Cleanup_CT)); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| } // group EPTF_ExecCtrl_ExitDuringTrafficRun_Test |
| |
| |
| group EPTF_ExecCtrl_Test_CatchDTEInTestStep { |
| |
| function f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_shouldGenerateDTE(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on EPTF_ExecCtrlClient_CT return boolean |
| { |
| // returns true if entity should generate DTE |
| return pl_ptr.eIdx rem 3 == 0; |
| } |
| |
| function f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_generateDTE(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on EPTF_ExecCtrlClient_CT |
| { |
| if (not f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_shouldGenerateDTE(pl_ptr)) { |
| return; // no DTE |
| } |
| //log(%definitionId, " started..."); |
| action("****Generating DTE..."); |
| var integer i := 1; |
| log(i/(i-1)); |
| } |
| |
| function f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkEventAfterDTE(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on EPTF_ExecCtrlClient_CT |
| { |
| if (not f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_shouldGenerateDTE(pl_ptr)) { |
| return; // no DTE |
| } |
| //log(%definitionId, " started..."); |
| action("****checkEventAfterDTE..."); |
| setverdict(fail,"Event was processed by an entity that has generated a DTE earlier! Entity should be disabled."); |
| } |
| |
| function f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkStepAfterDTE(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on EPTF_ExecCtrlClient_CT |
| { |
| if (not f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_shouldGenerateDTE(pl_ptr)) { |
| return; // no DTE |
| } |
| //log(%definitionId, " started..."); |
| action("****checkStepAfterDTE..."); |
| setverdict(fail,"Step was executed by an entity that has generated a DTE earlier! Entity should be disabled."); |
| } |
| |
| function f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkStepHandleDTEEvent(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT |
| { |
| //log(%definitionId, " started..."); |
| vl_LGenBase_DTE_Event_wasHandled := true; |
| action("****checkStepHandleDTEEvent received for entity #",pl_ptr.eIdx,", fsm: #",pl_ptr.refContext.fCtxIdx,". Error message: ", f_EPTF_LGenBase_get_dte_str(pl_ptr.eIdx,pl_ptr.refContext.fCtxIdx)); |
| } |
| |
| |
| function f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_cleanup_CT() runs on EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT { |
| if (not vl_LGenBase_DTE_Event_wasHandled) { |
| setverdict(fail,"The LGenBase DTE Event was not handled in FSM!"); |
| } else { |
| setverdict(pass,"Successfully handled the LGenBase DTE Event in FSM."); |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGenBehaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_Base_registerCleanup(refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_cleanup_CT)); |
| vl_LGenBase_DTE_Event_wasHandled := false; |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_CatchDTEInTestStep_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_generateDTE)}) |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_checkEventAfterDTEInTestStep_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkEventAfterDTE)}) |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_checkStepAfterDTEInTestStep_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkStepAfterDTE)}) |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_checkStepHandleDTEEvent_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkStepHandleDTEEvent)}) |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_CatchDTEInTestStep_FSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| f_EPTF_Base_setDTEHandling(true); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_ExecCtrl_Test_catchDTEInTestStep_createLGen ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT vl_lgen := EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGenBehaviour("ExecCtrl_DefaultLGen_"&log2str(vl_lgen),self) ); |
| return vl_lgen; |
| } |
| |
| |
| // LGenBase DTE Event is not catched in FSM: |
| |
| function f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_DoNotHandleDTE_LGen_cleanup_CT() runs on EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT { |
| if (not vl_LGenBase_DTE_Event_wasHandled) { |
| setverdict(pass,"The LGenBase DTE Event was not handled in FSM."); |
| } else { |
| setverdict(fail,"The FSM handled the LGenBase DTE Event but it should not!"); |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_DoNotHandleDTE_LGenBehaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_Base_registerCleanup(refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_DoNotHandleDTE_LGen_cleanup_CT)); |
| vl_LGenBase_DTE_Event_wasHandled := false; |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_CatchDTEInTestStep_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_generateDTE)}) |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_checkEventAfterDTEInTestStep_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkEventAfterDTE)}) |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_checkStepAfterDTEInTestStep_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkStepAfterDTE)}) |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_checkStepHandleDTEEvent_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkStepHandleDTEEvent)}) |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_CatchDTEInTestStep_FSM_DoNotHandleDTEEvent); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| f_EPTF_Base_setDTEHandling(true); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_ExecCtrl_Test_catchDTEInTestStep_DoNotHandleDTE_createLGen ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT vl_lgen := EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_DoNotHandleDTE_LGenBehaviour("ExecCtrl_DefaultLGen_"&log2str(vl_lgen),self) ); |
| return vl_lgen; |
| } |
| |
| ////////////// Generate DTE Event in DTE Handler in FSM: |
| |
| function f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_GenerateDTEInDTEHandler_LGenBehaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_Base_registerCleanup(refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_cleanup_CT)); |
| vl_LGenBase_DTE_Event_wasHandled := false; |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_CatchDTEInTestStep_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_generateDTE)}) |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_checkEventAfterDTEInTestStep_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkEventAfterDTE)}) |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_checkStepAfterDTEInTestStep_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkStepAfterDTE)}) |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_checkStepHandleDTEEvent_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkStepHandleDTEEvent)}) |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_CatchDTEInTestStep_FSM_GenerateDTEInDTEHandlerEvent); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| f_EPTF_Base_setDTEHandling(true); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_ExecCtrl_Test_catchDTEInTestStep_GenerateDTEInDTEHandler_createLGen ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT vl_lgen := EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_GenerateDTEInDTEHandler_LGenBehaviour("ExecCtrl_DefaultLGen_"&log2str(vl_lgen),self) ); |
| return vl_lgen; |
| } |
| |
| ////////////// Generate DTE Event in DTE Handler in FSM, no traffic failed is reported: |
| |
| function f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_GenerateDTEInDTEHandler2_LGenBehaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_Base_registerCleanup(refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_cleanup_CT)); |
| vl_LGenBase_DTE_Event_wasHandled := false; |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_CatchDTEInTestStep_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_generateDTE)}) |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_checkEventAfterDTEInTestStep_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkEventAfterDTE)}) |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_checkStepAfterDTEInTestStep_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkStepAfterDTE)}) |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_checkStepHandleDTEEvent_stepName,refers(f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_step_checkStepHandleDTEEvent)}) |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_CatchDTEInTestStep_FSM_GenerateDTEInDTEHandler2Event); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| f_EPTF_Base_setDTEHandling(true); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_ExecCtrl_Test_catchDTEInTestStep_GenerateDTEInDTEHandler2_createLGen ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT vl_lgen := EPTF_ExecCtrl_Test_CatchDTEInTestStep_LGen_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_Test_CatchDTEInTestStep_GenerateDTEInDTEHandler2_LGenBehaviour("ExecCtrl_DefaultLGen_"&log2str(vl_lgen),self) ); |
| return vl_lgen; |
| } |
| |
| } // group EPTF_ExecCtrl_Test_CatchDTEInTestStep |
| |
| // test the total counters |
| group EPTF_ExecCtrl_Test_TotalCounter { |
| |
| function f_EPTF_ExecCtrl_Test_TotalCounter_step_trafficHandler( |
| in EPTF_LGenBase_TestStepArgs pl_ptr |
| ) runs on ExecCtrl_Test_TotalCounter_LGen_CT { |
| var integer vl_tcIndx := f_EPTF_LGenBase_tcIdxOfStep(pl_ptr); |
| if(isbound(v_Counter[vl_tcIndx])) { |
| v_Counter[vl_tcIndx] := v_Counter[vl_tcIndx] + 1; |
| } else { |
| v_Counter[vl_tcIndx] := 1; |
| } |
| |
| if(v_Counter[vl_tcIndx] <= c_EPTF_ExecCtrl_Test_TotalCounter_executionValues[1]) { |
| f_EPTF_LGenBase_step_trafficSuccess(pl_ptr); |
| } else if(v_Counter[vl_tcIndx] <= c_EPTF_ExecCtrl_Test_TotalCounter_executionValues[1] + c_EPTF_ExecCtrl_Test_TotalCounter_executionValues[2]) { |
| f_EPTF_LGenBase_step_trafficFailed(pl_ptr); |
| } else if(v_Counter[vl_tcIndx] <= c_EPTF_ExecCtrl_Test_TotalCounter_executionValues[1] + c_EPTF_ExecCtrl_Test_TotalCounter_executionValues[2] + c_EPTF_ExecCtrl_Test_TotalCounter_executionValues[3]) { |
| f_EPTF_LGenBase_step_trafficTimeout(pl_ptr); |
| } else if(v_Counter[vl_tcIndx] < c_EPTF_ExecCtrl_Test_TotalCounter_executionValues[0]) { |
| f_EPTF_LGenBase_step_trafficError(pl_ptr); |
| } else { |
| // do nothing, let FSM to report traffic error on c_EPTF_LGenBase_inputName_testMgmt_stopTC event |
| } |
| } |
| |
| function f_EPTF_ExecCtrl_CLITest_totalCounterLGenBehaviour( |
| in charstring pl_name, |
| in EPTF_ExecCtrl_CT pl_execCtrlCompRef) |
| runs on ExecCtrl_Test_TotalCounter_LGen_CT { |
| f_EPTF_LGenBase_init(pl_name); |
| f_EPTF_Var_setSyncInterval(1.0); |
| f_EPTF_LGenBase_declareBehaviorType(c_EPTF_ExecCtrl_Test_defaultBehaviorName, -1, null, null, null); |
| f_EPTF_LGenBase_declareStep(c_EPTF_ExecCtrl_Test_defaultBehaviorName, {c_EPTF_ExecCtrl_Test_TotalCounter_stepName_trafficHandler,refers(f_EPTF_ExecCtrl_Test_TotalCounter_step_trafficHandler)}) |
| f_EPTF_LGenBase_declareEntityType(c_EPTF_ExecCtrl_Test_defaultETypeName, {c_EPTF_ExecCtrl_Test_defaultBehaviorName}); |
| f_EPTF_LGenBase_declareFSMTable(c_EPTF_ExecCtrl_Test_totalCounterFSM); |
| f_EPTF_ExecCtrlClient_init_CT(pl_name, pl_execCtrlCompRef); |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| |
| function f_ExecCtrl_Test_createDefaultLGenTotalCounter ( |
| in charstring pl_hostname, |
| in charstring pl_componentName |
| ) runs on EPTF_ExecCtrl_CT return EPTF_ExecCtrlClient_CT |
| { |
| var ExecCtrl_Test_TotalCounter_LGen_CT vl_lgen := ExecCtrl_Test_TotalCounter_LGen_CT.create; |
| vl_lgen.start( f_EPTF_ExecCtrl_CLITest_totalCounterLGenBehaviour("ExecCtrl_DefaultLGen_"&log2str(vl_lgen),self) ); |
| return vl_lgen; |
| } |
| |
| } // ~group EPTF_ExecCtrl_Test_TotalCounter |
| |
| } |