blob: fb1f81dc427fdbcc846c718b482d183b29714806 [file] [log] [blame]
///////////////////////////////////////////////////////////////////////////////
// //
// 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
}