///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// 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_PullModelDsRestAPI_PerfTest_Definitions
// 
//  Purpose:
//    This module contains the type definitions to test pull model performance.
// 
//  Module depends on:
//   <EPTF_ExecCtrl_Test_Definitions>
//   <EPTF_ExecCtrl_Test_Function>
//   <EPTF_CLL_Base_Functions>           
//   <EPTF_CLL_Common_Definitions>
//   <EPTF_CLL_CLI_Definitions>
//   <EPTF_CLL_ExecCtrlTimeProfile_Definitions>
//   <EPTF_CLL_ExecCtrl_Functions>
//   <EPTF_CLL_ExecCtrl_CLIFunctions>
//   <EPTF_CLL_ExecCtrl_Definitions>
//   <EPTF_CLL_DsRestAPI_WidgetFunctions>
//   <EPTF_CLL_ExecCtrlDsRestAPI_Definitions>
//   <EPTF_CLL_HashMapInt2Int_Functions>
//   <EPTF_CLL_HashMapOct2Int_Functions>
//   <EPTF_CLL_HashMapStr2Int_Functions>
// 
//  Current Owner:
//    Jozsef Gyurusi (ETHJGI)
// 
//  Last Review Date:
//    2013-xx-xx
//
//  Detailed Comments:
//    -
//
///////////////////////////////////////////////////////////////

module EPTF_ExecCtrl_PullModelDsRestAPI_PerfTest_Definitions {

import from EPTF_CLL_ExecCtrl_Definitions all;
import from EPTF_CLL_Logging_Definitions all;
import from EPTF_CLL_DsRestAPI_Definitions all;
import from EPTF_CLL_Base_Definitions all;
import from EPTF_CLL_ExecCtrlTimeProfile_Definitions all;
import from EPTF_CLL_Common_Definitions all;
import from EPTF_CLL_LGenBase_ConfigDefinitions all;
import from EPTF_CLL_StatHandlerClient_Definitions all;
import from EPTF_CLL_LGenBase_Definitions all;
import from EPTF_CLL_LGenBase_PhaseDefinitions all;
import from EPTF_CLL_ExecCtrl_PhaseDefinitions all;
import from EPTF_CLL_ExecCtrl_CLIDefinitions all;
import from EPTF_CLL_LoadRegulator_Definitions all;
import from EPTF_CLL_HostAdmin_BaseDefinitions all;
import from EPTF_CLL_CLI_Definitions all;
import from EPTF_CLL_StatManager_Definitions all;
import from TestResultGen all;

modulepar charstring tsp_ExecCtrl_DS_guiXmlName := "gui.xml";

modulepar charstring tsp_EPTF_DsRestAPI_HTTPServer_RemoteAddress := "127.0.0.1";
modulepar integer tsp_EPTF_DsRestAPI_HTTPServer_RemotePort := 4040;
modulepar charstring tsp_EPTF_DsRestAPI_HTTPServer_directory := "./WebGUI_link/WebGUI_link/";

modulepar charstring tsp_EPTF_DsRestAPI_customizableApp_directory := "./WebGUI_link/GUICustomization_link";
modulepar charstring tsp_EPTF_DsRestAPI_API_directory := "./WebGUI_link/Js_link";


modulepar integer tsp_EPTF_ExecCtrl_PullModelDsRestAPI_PerfTest_nofEGrps := 25;
modulepar integer tsp_EPTF_ExecCtrl_PullModelDsRestAPI_PerfTest_nofLgens := 8;
modulepar float tsp_EPTF_ExecCtrl_PullModelDsRestAPI_PerfTest_maxStartUpTime := 400.0;

modulepar charstring tsp_DsRestAPI_Test_sendDSRequestScript := "DsRestAPI_stdout.py";


const charstring c_EPTF_ExecCtrl_DefaultScenarios_eGrpName := "DefaultEGrp";
const charstring c_EPTF_ExecCtrl_DefaultScenarios_scNameNormal := "DefaultSc";
const charstring c_EPTF_ExecCtrl_DefaultScenarios_scNameWeighted := "DefaultWSc";
const charstring c_EPTF_ExecCtrl_DefaultScenarios_tcTypeName := "DefaultTcType";
const charstring c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc1 := "DefaultTC1";
const charstring c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc2 := "DefaultTC2";
const charstring c_EPTF_ExecCtrl_DefaultScenarios_scGrpName := "DefaultScGroup";
const integer c_EPTF_ExecCtrl_DefaultScenarios_eGrpSize := 100;

const charstring c_EPTF_ExecCtrl_Test_defaultBehaviorName := "ExecCtrTestDefaultBehavior";
const charstring c_EPTF_ExecCtrl_Test_defaultETypeName := "ExecCtrTestDefaultETypeName";
const charstring c_EPTF_ExecCtrl_Test_defaultFSMName := "defaultFSM";

const EPTF_LGenBase_TcMgmt_EntityGrpDeclaratorList c_EPTF_ExecCtrl_DefaultScenarios_EGrpList :={{
    name := c_EPTF_ExecCtrl_DefaultScenarios_eGrpName,
    eType := c_EPTF_ExecCtrl_Test_defaultETypeName,
    eCount := c_EPTF_ExecCtrl_DefaultScenarios_eGrpSize
  }}

const EPTF_LGenBase_TcMgmt_Scenarios2GrpList c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList := {
  {
    eGrpName := c_EPTF_ExecCtrl_DefaultScenarios_eGrpName,
    scenarioNames := {
      c_EPTF_ExecCtrl_DefaultScenarios_scNameNormal
    }
  },
  {
    eGrpName := c_EPTF_ExecCtrl_DefaultScenarios_eGrpName,
    scenarioNames := {
      c_EPTF_ExecCtrl_DefaultScenarios_scNameWeighted
    }
  }
}

const charstring c_EPTF_ExecCtrl_Test_defaultLGenPoolName := "LGenDefaultPool";

const EPTF_ExecCtrl_EntityGroup2LGenPool_List c_EPTF_ExecCtrl_DefaultScenarios_EntityGroup2LGenPool_List := {
  {
    eGrpName := c_EPTF_ExecCtrl_DefaultScenarios_eGrpName,
    lgenPoolName := c_EPTF_ExecCtrl_Test_defaultLGenPoolName
  }
}

const EPTF_LGenBase_TcMgmt_tcTypeDeclarator2 c_EPTF_ExecCtrl_DefaultScenarios_defaultTCType := {
  name := c_EPTF_ExecCtrl_DefaultScenarios_tcTypeName,
  fsmName := c_EPTF_ExecCtrl_Test_defaultFSMName,
  entityType := c_EPTF_ExecCtrl_Test_defaultETypeName,
  customEntitySucc := ""
}


const EPTF_LGenBase_ScenarioTypeDeclarator c_EPTF_ExecCtrl_DefaultScenarios_normalScenario := {
  name := c_EPTF_ExecCtrl_DefaultScenarios_scNameNormal,
  tcList := {
    {
      tcName := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc1,
      tcParamsList := {
        {tcTypeName := c_EPTF_ExecCtrl_DefaultScenarios_tcTypeName},
        {enableEntitiesAtStart := true},
        {enabledAtStart := true},
        {target := {cpsToReach := 10.0} }
      }
    },
    {
      tcName := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc2,
      tcParamsList := {
        {tcTypeName := c_EPTF_ExecCtrl_DefaultScenarios_tcTypeName},
        {enableEntitiesAtStart := true},
        {enabledAtStart := true},
        {target := {cpsToReach := 10.0} }
      }
    }
  },
  scParamsList := {
    {enabled := true}
  }
}

const EPTF_LGenBase_ScenarioTypeDeclarator c_EPTF_ExecCtrl_DefaultScenarios_weightedScenario := {
  name := c_EPTF_ExecCtrl_DefaultScenarios_scNameWeighted,
  tcList := {
    {
      tcName := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc1,
      tcParamsList := {
        {tcTypeName := c_EPTF_ExecCtrl_DefaultScenarios_tcTypeName},
        {enableEntitiesAtStart := true},
        {enabledAtStart := true},
        {target := {trafficWeight := 1.0} }
      }
    },
    {
      tcName := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc2,
      tcParamsList := {
        {tcTypeName := c_EPTF_ExecCtrl_DefaultScenarios_tcTypeName},
        {enableEntitiesAtStart := true},
        {enabledAtStart := true},
        {target := {trafficWeight := 3.0} }
      }
    }
  },
  scParamsList := {
    {weightedScData := {
        cpsToReach := 10.0,
        lockCPS := false,
        deterministicMix := false,
        scheduler := omit
      }
    },
    {enabled := true}
  }
}

const charstring c_EPTF_ExecCtrl_DefaultScenarios_scInScGrpNameNormal := "DefaultScInScGrp";
const charstring c_EPTF_ExecCtrl_DefaultScenarios_scInScGrpNameWeighted := "DefaultWScInScGrp";

const EPTF_LGenBase_ScenarioTypeDeclarator c_EPTF_ExecCtrl_DefaultScenarios_normalScenarioInScGrp := {
  name := c_EPTF_ExecCtrl_DefaultScenarios_scInScGrpNameNormal,
  tcList := {
    {
      tcName := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc1,
      tcParamsList := {
        {tcTypeName := c_EPTF_ExecCtrl_DefaultScenarios_tcTypeName},
        {enableEntitiesAtStart := true},
        {enabledAtStart := true},
        {target := {cpsToReach := 10.0} },
        {trafficStartFinish := {
            {nrOfExecStart := {count := 200,actions := {}}}
          }
        }
      }
    },
    {
      tcName := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc2,
      tcParamsList := {
        {tcTypeName := c_EPTF_ExecCtrl_DefaultScenarios_tcTypeName},
        {enableEntitiesAtStart := true},
        {enabledAtStart := true},
        {target := {cpsToReach := 10.0} },
        {trafficStartFinish := {
            {execTime := {time := 60.0,actions := {}}}
          }
        }
      }
    }
  },
  scParamsList := {
    {enabled := true},
    {phaseListName := "DefaultPhases"},
    {phaseFinishConditions := {
        {
          phase := "phase1",
          conditions := {
            { tcFinished := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc1 }
          }
        },
        {
          phase := "phase2",
          conditions := {
            { tcFinished := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc2 }
          }
        },
        {
          phase := "phase3",
          conditions := {
            { tcFinished := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc1 }
          }
        }
      }
    },
    {phaseStateChangeActions := {
        {
          phase := "phase1",
          state := RUNNING,
          actions := {
            { startScenario:="Sc" }
          }
        },
        {
          phase := "phase2",
          state := RUNNING,
          actions := {
            { stopTc := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc1 }
          }
        },
        {
          phase := "phase3",
          state := RUNNING,
          actions := {
            { startTc := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc1 }
          }
        },
        {
          phase := "phase1",
          state := STOPPING,
          actions := {
            { stopScenario:="Sc" }
          }
        },
        {
          phase := "phase2",
          state := STOPPING,
          actions := {
            { stopScenario:="Sc" }
          }
        },
        {
          phase := "phase3",
          state := STOPPING,
          actions := {
            { stopScenario:="Sc" }
          }
        }
      }
    }
  }
}

const EPTF_LGenBase_ScenarioTypeDeclarator c_EPTF_ExecCtrl_DefaultScenarios_weightedScenarioInScGrp := {
  name := c_EPTF_ExecCtrl_DefaultScenarios_scInScGrpNameWeighted,
  tcList := {
    {
      tcName := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc1,
      tcParamsList := {
        {tcTypeName := c_EPTF_ExecCtrl_DefaultScenarios_tcTypeName},
        {enableEntitiesAtStart := true},
        {enabledAtStart := true},
        {target := {trafficWeight := 1.0} },
        {trafficStartFinish := {
            {nrOfExecStart := {count := 200,actions := {}}}
          }
        }
      }
    },
    {
      tcName := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc2,
      tcParamsList := {
        {tcTypeName := c_EPTF_ExecCtrl_DefaultScenarios_tcTypeName},
        {enableEntitiesAtStart := true},
        {enabledAtStart := true},
        {target := {trafficWeight := 3.0} },
        {trafficStartFinish := {
            {execTime := {time := 60.0,actions := {}}}
          }
        }
      }
    }
  },
  scParamsList := {
    {weightedScData := {
        cpsToReach := 10.0,
        lockCPS := false,
        deterministicMix := false,
        scheduler := omit
      }
    },
    {enabled := true},
    {phaseListName := "DefaultPhases"},
    {phaseFinishConditions := {
        {
          phase := "phase1",
          conditions := {
            { tcFinished := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc2 }
          }
        },
        {
          phase := "phase2",
          conditions := {
            //{ scenarioFinished := "" }
            { tcFinished := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc1 }
          }
        },
        {
          phase := "phase3",
          conditions := {
            //{ scenarioFinished := "" }
            { tcFinished := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc1 }
          }
        }
      }
    },
    {phaseStateChangeActions := {
        {
          phase := "phase1",
          state := RUNNING,
          actions := {
            { startScenario:="Sc" }
          }
        },
        {
          phase := "phase2",
          state := RUNNING,
          actions := {
            //{ startScenario:="Sc" }
            //{ stopTc := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc1 },
            //{ startTc := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc2 }
          }
        },
        {
          phase := "phase3",
          state := RUNNING,
          actions := {
            //{ startScenario:="Sc" }
            { startTc := c_EPTF_ExecCtrl_DefaultScenarios_tcNameTc1 }
          }
        },
        {
          phase := "phase1",
          state := STOPPING,
          actions := {
            { stopScenario:="Sc" }
          }
        },
        {
          phase := "phase2",
          state := STOPPING,
          actions := {
            { stopScenario:="Sc" }
          }
        },
        {
          phase := "phase3",
          state := STOPPING,
          actions := {
            { stopScenario:="Sc" }
          }
        }
      }
    }
  }
}

const EPTF_LGenBase_TcMgmt_Scenarios2GrpList c_EPTF_ExecCtrl_DefaultScenarios_Scenarios2GrpList_scGroups := {
  {
    eGrpName := c_EPTF_ExecCtrl_DefaultScenarios_eGrpName,
    scenarioNames := {
      c_EPTF_ExecCtrl_DefaultScenarios_scInScGrpNameNormal
    }
  },
  {
    eGrpName := c_EPTF_ExecCtrl_DefaultScenarios_eGrpName,
    scenarioNames := {
      c_EPTF_ExecCtrl_DefaultScenarios_scInScGrpNameWeighted
    }
  }
}

const EPTF_LGenBase_PhaseList_Declarators c_EPTF_ExecCtrl_DefaultScenarios_phases := {
  {
    name := "DefaultPhases",
    phases :=
    {
      { name := "phase1", enabled := true },
      { name := "phase2" , enabled := true },
      { name := "phase3",enabled := true }
    }
  }
}

const EPTF_ExecCtrl_ScenarioGroup_Declarators c_EPTF_ExecCtrl_DefaultScenarios_scGroups := {
      {
        name := c_EPTF_ExecCtrl_DefaultScenarios_scGrpName,
        execMode := AUTOMATIC,
        scenarioNames := {
          c_EPTF_ExecCtrl_DefaultScenarios_eGrpName&"."&c_EPTF_ExecCtrl_DefaultScenarios_scInScGrpNameNormal,
          c_EPTF_ExecCtrl_DefaultScenarios_eGrpName&"."&c_EPTF_ExecCtrl_DefaultScenarios_scInScGrpNameWeighted
        },
        phaseListName := "DefaultPhases"
      }
    }


const EPTF_ExecCtrl_LGenPool_Declarators c_EPTF_ExecCtrl_Test_defaultLGenPoolWithSpecId_DeclaratorsWithFSMStatsLive := {
  {
    name := c_EPTF_ExecCtrl_Test_defaultLGenPoolName,
    lgenPoolItems := {
      {
        hostname := "localhost",
        num := 2,
        createFunctionName := "EPTF_ExecCtrl_PullModelDsRestAPI_PerfTest_Functions.f_ExecCtrl_PullModelDsRestAPI_PerfTest_createDefaultLGenWithSpecIdWithFSMStatsLive"
      }
    }
  }
}

const EPTF_LGenBase_FsmTableDeclarator c_EPTF_ExecCtrl_Test_defaultFSMWithFSMStatsLive :=  
{
  name := c_EPTF_ExecCtrl_Test_defaultFSMName,
  fsmParams := {
    {stateList := {"idle"}},
    {timerList := {{"busyTimer",1.0}}}
    ,{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 
        },
// copy of statistics:
        {
          name := "MeanFreeTime2",
          providers := {
            {statMeas := "meanFree"}
          },
          statMethod := c_EPTF_StatHandler_Method_Mean,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "AvrgFreeTime2",
          providers := {
            {varList := {"vf_chrono_free", "cf_one"}}
          },
          statMethod := c_EPTF_StatHandler_Method_GlobalAverage,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "NofBusy2",
          providers := {
            {varList := {"vf_running"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },
        {
          name := "NofStarts2",
          providers := {
            {varList := {"vf_starts"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },

        {
          name := "MeanFreeTime3",
          providers := {
            {statMeas := "meanFree"}
          },
          statMethod := c_EPTF_StatHandler_Method_Mean,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "AvrgFreeTime3",
          providers := {
            {varList := {"vf_chrono_free", "cf_one"}}
          },
          statMethod := c_EPTF_StatHandler_Method_GlobalAverage,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "NofBusy3",
          providers := {
            {varList := {"vf_running"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },
        {
          name := "NofStarts3",
          providers := {
            {varList := {"vf_starts"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },
        
        {
          name := "MeanFreeTime4",
          providers := {
            {statMeas := "meanFree"}
          },
          statMethod := c_EPTF_StatHandler_Method_Mean,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "AvrgFreeTime4",
          providers := {
            {varList := {"vf_chrono_free", "cf_one"}}
          },
          statMethod := c_EPTF_StatHandler_Method_GlobalAverage,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "NofBusy4",
          providers := {
            {varList := {"vf_running"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },
        {
          name := "NofStarts4",
          providers := {
            {varList := {"vf_starts"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },

        {
          name := "MeanFreeTime5",
          providers := {
            {statMeas := "meanFree"}
          },
          statMethod := c_EPTF_StatHandler_Method_Mean,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "AvrgFreeTime5",
          providers := {
            {varList := {"vf_chrono_free", "cf_one"}}
          },
          statMethod := c_EPTF_StatHandler_Method_GlobalAverage,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "NofBusy5",
          providers := {
            {varList := {"vf_running"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },
        {
          name := "NofStarts5",
          providers := {
            {varList := {"vf_starts"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },
        
        {
          name := "MeanFreeTime6",
          providers := {
            {statMeas := "meanFree"}
          },
          statMethod := c_EPTF_StatHandler_Method_Mean,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "AvrgFreeTime6",
          providers := {
            {varList := {"vf_chrono_free", "cf_one"}}
          },
          statMethod := c_EPTF_StatHandler_Method_GlobalAverage,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "NofBusy6",
          providers := {
            {varList := {"vf_running"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },
        {
          name := "NofStarts6",
          providers := {
            {varList := {"vf_starts"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },

        {
          name := "MeanFreeTime7",
          providers := {
            {statMeas := "meanFree"}
          },
          statMethod := c_EPTF_StatHandler_Method_Mean,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "AvrgFreeTime7",
          providers := {
            {varList := {"vf_chrono_free", "cf_one"}}
          },
          statMethod := c_EPTF_StatHandler_Method_GlobalAverage,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "NofBusy7",
          providers := {
            {varList := {"vf_running"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },
        {
          name := "NofStarts7",
          providers := {
            {varList := {"vf_starts"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },
        
        {
          name := "MeanFreeTime8",
          providers := {
            {statMeas := "meanFree"}
          },
          statMethod := c_EPTF_StatHandler_Method_Mean,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "AvrgFreeTime8",
          providers := {
            {varList := {"vf_chrono_free", "cf_one"}}
          },
          statMethod := c_EPTF_StatHandler_Method_GlobalAverage,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "NofBusy8",
          providers := {
            {varList := {"vf_running"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },
        {
          name := "NofStarts8",
          providers := {
            {varList := {"vf_starts"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },

        {
          name := "MeanFreeTime9",
          providers := {
            {statMeas := "meanFree"}
          },
          statMethod := c_EPTF_StatHandler_Method_Mean,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "AvrgFreeTime9",
          providers := {
            {varList := {"vf_chrono_free", "cf_one"}}
          },
          statMethod := c_EPTF_StatHandler_Method_GlobalAverage,
          statResetValue := {floatVal := 0.0},
          scope := TC 
        },
        {
          name := "NofBusy9",
          providers := {
            {varList := {"vf_running"}}
          },
          statMethod := c_EPTF_StatHandler_Method_Sum,
          statResetValue := {intVal := 0},
          scope := TC 
        },
        {
          name := "NofStarts9",
          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 := {{{
              {c_EPTF_LGenBase_stepName_fsmVarInc, {varParams := {"vf_starts", omit}}},
              {c_EPTF_LGenBase_stepName_fsmVarInc, {varParams := {"vf_running", omit}}},
              {c_EPTF_LGenBase_stepName_fsmStartChrono,{statMeasParams := {"chrono_busy", omit}}},
              {c_EPTF_LGenBase_stepName_fsmStopChrono,{statMeasParams := {"chrono_busy", omit}}},
              {c_EPTF_LGenBase_stepName_fsmStartChrono,{statMeasParams := {"chrono_free", omit}}},
              {c_EPTF_LGenBase_stepName_fsmStopChrono,{statMeasParams := {"chrono_free", omit}}},
              {c_EPTF_LGenBase_stepName_trafficSuccess, omit}
            }, omit, omit}}
      },        
      { eventToListen := {c_EPTF_LGenBase_behavior,c_EPTF_LGenBase_inputName_testMgmt_stopTC,fsm},
        cellRow := {{{
              {c_EPTF_LGenBase_stepName_entityStopped, omit}
            }, omit, omit}}
      },        
      { eventToListen := {c_EPTF_LGenBase_behavior,c_EPTF_LGenBase_inputName_testMgmt_abortTC,fsm},
        cellRow := {{{
              {c_EPTF_LGenBase_stepName_entityAborted, omit}
            }, omit, omit}}
      }        
    }
  }
}


const charstring c_EPTF_ExecCtrl_Test_defaultMainWindow_str:= "<Widgets xmlns='http://ttcn.ericsson.se/protocolModules/xtdp/xtdl'>\n\t<window height='800.000000' id='EPTF_Main_Window' orientation='vertical' title='TTCN constructed window' width='800.000000'>\n\t\t<hbox orientation='vertical'>\n\t\t\t<tabpages id='EPTF_Main_tabbox'/>\n\t\t</hbox>\n\t</window>\n</Widgets>\n\n";

  type component PhaseRegulator_CT extends EPTF_LoadRegulator_CT {}


type record EPTF_ExecCtrl_Test_SCData {
  charstring eGrpName,
  charstring scenName,
  charstring tcName,
  integer state,
  EPTF_ExecCtrl_TimeProfileItemList timeProfile
}
type record of EPTF_ExecCtrl_Test_SCData EPTF_ExecCtrl_Test_SCDataList;

type component EPTF_ExecCtrlClient_Test_CT extends EPTF_ExecCtrlClient_CT
{
  var boolean v_EPTF_ExecCtrlClient_Test_initialized := false;
  var integer v_myBIdx;
  var EPTF_ExecCtrl_Test_SCDataList v_EPTF_ExecCtrlClient_Test_scenarios;
  var EPTF_ExecCtrl_TimeProfileItemList v_timeProfile;
  var integer v_trafficCount := 0;
  var boolean v_EPTF_ExecCtrlClient_Test_CPSChangedCallback_Called := false;
}

type set of EPTF_ExecCtrlClient_Test_CT EPTF_ExecCtrlClient_Test_CT_List;

type component EPTF_ExecCtrl_Test_CT extends EPTF_ExecCtrl_CT
{
  var boolean v_EPTF_ExecCtrl_Test_initialized := false;
  var integer v_EPTF_ExecCtrl_Test_statError := 0;
  // var integer v_EPTF_ExecCtrl_Test_scanState := -1;  //0: Idle, 1: Running
  timer t_test;

  var EPTF_ExecCtrl_Test_SCDataList v_EPTF_ExecCtrl_Test_scenarios := {};
  var integer v_steps := 0;
  var boolean v_EPTF_ExecCtrl_Test_CPSChangedCallback_Called := false;
  var EPTF_IntegerList v_EPTF_ExecCtrl_Test_counters :={};
  var integer v_EPTF_ExecCtrl_Test_counter := 0;
}


type component myMTC extends EPTF_Base_CT
{
  timer t;
  var  EPTF_ExecCtrlClient_Test_CT_List  v_clients;
  var  EPTF_ExecCtrl_Test_CT             v_execCtrl;
  var  EPTF_ExecCtrl_Test_SCDataList     v_scens;
  var  EPTF_ExecCtrl_Test_SCDataList     v_scensClient;
}

type component myMTC_UI extends EPTF_DsRestAPI_CT, EPTF_ExecCtrl_CLI_CT, myMTC {
  var EPTF_ExecCtrl_Test_CT v_execCtrlUI;
  var EPTF_ExecCtrlClient_Test_CT_List v_clientsUI;
  var boolean v_ready := false; 
}

type component EPTF_CLL_ExecCtrl_Test_ExpectedWarning_CT extends EPTF_Logging_CT {
  var boolean v_ExecCtrl_Test_expectedWarningInitialized:=false;
  var boolean v_ExecCtrl_Test_expectedWarningArrived := false;
  var charstring v_ExecCtrl_Test_expectedWarningMsg:="";
}

type component ExecCtrlDSClient_Test_CT extends EPTF_DsRestAPI_CT,EPTF_CLL_ExecCtrl_Test_ExpectedWarning_CT, myMTC_UI {
  var integer v_lgenId := 0;
}

type component ExecCtrl_NewGUITest_CT extends myMTC_UI,ExecCtrlDSClient_Test_CT {
}


type component ExecCtrl_PullModelPerfTest_CT extends TestResultGen_CT, EPTF_CLI_CT, EPTF_StatManager_CT, ExecCtrl_NewGUITest_CT, EPTF_HostAdmin_Base_CT {
  timer t_cpuMeasure := 3.0;
  timer t_singleReqTimeMeasure := 3.0;
  timer t_fullReqTimeMeasure := 3.0;
  timer t_fullReqTimeHTTPMeasure := 3.0;
  var charstring v_requestString;
  var octetstring v_requestOct;
  var integer v_execCtrlPID,v_execCtrlCPULoadStat, v_execCtrlMemUsageStat;
  var integer v_DsRestAPIPID,v_DsRestAPICPULoadStat, v_DsRestAPIMemUsageStat;
  
  var integer v_hostCPULoadStat, v_hostFreeMemoryStat;

  var integer v_execCtrlSingleReqTimeStat, v_execCtrlFullReqTimeStat, v_execCtrlFullReqTimeHTTPStat;
}


} //end of module EPTF_ExecCtrl_PullModelDsRestAPI_PerfTest_Definitions
