///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// 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_PARAMETERS]
tsp_EPTF_UIHandler_headlessmode := false;
//tsp_ExecCtrl_manualControl := true;
//tsp_debug_EPTF_ExecCtrl_UIHandler := true;
//tsp_debug_EPTF_ExecCtrl_Functions := true;
//tsp_debug_EPTF_ExecCtrlClient_Functions := true;
//tsp_EPTF_LGenBaseDebug := true;
//tsp_EPTF_LGenBaseDebugTrafficVerbose := true;
//tsp_T_busy := 0.1;

tsp_LGenBase_EntityGrpDeclarators := {
  {name := "grp0", eType := "Entity_A", eCount := 100}
}


tsp_EPTF_ExecCtrl_Scenario2EntityGroupList := {
  {scenarioName:="scenario_0", eGrpName:="grp0",name:=omit},
  {scenarioName:="scenario_1", eGrpName:="grp0",name:=omit}
}



////////
// Declarator2
tsp_LGenBase_TcMgmt_tcTypeDeclarators2 := {
  {
    name := "TC0",
    fsmName := "BasicCall",
    entityType := "Entity_A",
    customEntitySucc := ""
  },
  {
   name := "TC1",
    fsmName := "BasicCall",
    entityType := "Entity_A",
    customEntitySucc := ""
  }
}

tsp_LGenBase_TcMgmt_ScenarioDeclarators3 :=
{
  {
    name := "scenario_0",
    tcList := {
      {
        tcName := "TC1",
        tcParamsList := {
          {startDelay := 0.0},
          {target := { cpsToReach := 20.0 }},
          {scheduler := {preDefinedName := poisson}},
          {enableEntitiesAtStart := true},
          {enabledAtStart := true},
          {ranges := {
              {name := "myRange_MSB", enableSplit := true, baseOffset := 10, count := 30},
              {name := "myRange_middle", enableSplit := false, baseOffset := 10, count := 30},
              {name := "myRange_LSB", enableSplit := false, baseOffset := 0, count := 9} 
            }
          },
          {params := {
              {aName := "myApplication1", pName := "header", pValue := "$EXTPATH/sip_support/templates/deregister.header"},
              {aName := "myApplication2", pName := "boost", pValue := "true"}
            }
          },
          {trafficStartFinish := {
              {nrOfExecStart := {count := 2000, actions := {}}},
              {execTime := {time := 100.0,actions := {}}}//,
//              {anythingFinished := {actions := {
//                    {enableTc := {tcName := "TC0", aMode := available}},
//                    {disableTc := {tcName := "TC1"}}
//                  }}}
            }
          }
        }
      },
      {
        tcName := "TC0",
        tcParamsList := {
          {startDelay := 0.0},
          {target := { cpsToReach := 20.0 }},
          {scheduler := {preDefinedName := imst2}},
          {entitySelection := random},
          {enableEntitiesAtStart := true},
          {enabledAtStart := true},
          {trafficStartFinish := {
              {nrOfSuccesses := {count := 2000,actions := {}}},
              {execTime := {time := 100.0,actions := {}}}
            }
          }
        }
      }
    },
    scParamsList := {
      {enabled := true}
    }
  },
  {
    name := "scenario_1",
    tcList := {
      {
        tcName := "TC0",
        tcParamsList := {
          {target := { cpsToReach := 1.0 }},
          {scheduler := {preDefinedName := imst}},
          {enableEntitiesAtStart := true},
          {enabledAtStart := true},
          {ranges := {
              {name := "myRange_MSB", enableSplit := true, baseOffset := 10, count := 30},
              {name := "myRange_middle", enableSplit := false, baseOffset := 10, count := 30},
              {name := "myRange_LSB", enableSplit := false, baseOffset := 0, count := 9}
            }},
          {params := {
              {aName := "myApplication1", pName := "header", pValue := "$EXTPATH/sip_support/templates/deregister.header"},
              {aName := "myApplication2", pName := "boost", pValue := "true"}
            }},
          {trafficStartFinish := {
              {execTime := {time := 30.0,actions := {}}},
              {nrOfSuccesses := {count := 300,actions := {}}},
              {anythingFinished := {actions := {
                    {enableTc := {tcName := "TC1", aMode := available}},
                    {disableTc := {tcName := "TC0"}}
                  }}}
            }}
        }
      },
      {
        tcName := "TC1",
        tcParamsList := {
          {target := { cpsToReach := 2.0 }},
          {scheduler := {preDefinedName := orig}},
          {enableEntitiesAtStart := true},
          {enabledAtStart := false},
          {trafficStartFinish := {
              {nrOfExecStart := {count := 500,actions := {}}},
              {nrOfSuccesses := {count := 100,actions := {}}},
              {execTime := {time := 40.0,actions := {}}}
          }}
        }
      }
    },
    scParamsList := {
    }
  }
}

tsp_EPTF_ExecCtrl_LGenPool_Declarators := {
  {
    name := "Pool_0",
    lgenPoolItems := {
      {
        hostname := "localhost",
        num := 2,
        createFunctionName := "ExecCtrlLGenPool_Demo.f_myCreateLGen"
      },
      {
        hostname := "localhost",
        num := 1,
        createFunctionName := "ExecCtrlLGenPool_Demo.f_myComponentDeployment"
      }
    }
  },
  {
    name := "Pool_null", // this pool only calls f_myCreateLGenNull
    lgenPoolItems := {
      {
        hostname := "rhea",
        num := 1,
        createFunctionName := "ExecCtrlLGenPool_Demo.f_myCreateLGenNull"
      }
    }
  }
}

tsp_EPTF_ExecCtrl_EntityGroup2LGenPool_List := {
  {
    eGrpName := "grp0",
    lgenPoolName := "Pool_0"
  }
}

// to connect to the runtime GUI started by:
// java -jar /vobs/ttcn/TCC_Releases/Libraries/Runtime_GUI_CNL113437/bin/TitanRuntimeGUI.jar -p 55678
EPTF_CLL_UIHandler_WidgetFunctions.tsp_xtdp_listen_addr := "127.0.0.1"; // RuntimeGUI is running on localhost
EPTF_CLL_UIHandler_WidgetFunctions.tsp_xtdp_listen_port := 55678;

tsp_EPTF_GUI_Main_Window_Height := 630.0;

[LOGGING]
FileMask := LOG_ALL //| DEBUG
ConsoleMask := TTCN_ERROR | TTCN_ACTION | TTCN_TESTCASE | TTCN_STATISTICS | TTCN_WARNING
LogFile := "%e.%h-%r.log"
LogEventTypes := Yes
SourceInfoFormat := Stack
LogEntityName := Yes

[DEFINE]

[INCLUDE]

[EXTERNAL_COMMANDS]

[EXECUTE]
ExecCtrlUIHandler_Demo.TC

[COMPONENTS]

[MAIN_CONTROLLER]
TCPPort := 9876
KillTimer := 30.0
NumHCs := 1

[TESTPORT_PARAMETERS]
*.EPTF_guiPortIf.socket_debugging := "no"
*.EPTF_guiPortIf.server_mode := "NO"
*.EPTF_guiPortIf.halt_on_connection_reset := "NO"
*.EPTF_guiPortIf.packet_hdr_length_offset := "0"
*.EPTF_guiPortIf.packet_hdr_nr_bytes_in_length := "4"
*.EPTF_guiPortIf.packet_hdr_byte_order := "MSB"
*.EPTF_guiPortIf.use_connection_ASPs := "yes"

# EPTF CLL CLI TELNET interface
*.v_UIHandler_CLI_TELNETaspIf.CTRL_PORTNUM := "17100"
*.v_UIHandler_CLI_TELNETaspIf.CTRL_LOGIN_SKIPPED := "yes"
*.v_UIHandler_CLI_TELNETaspIf.CTRL_USERNAME_CLIENT := "ttcn"
*.v_UIHandler_CLI_TELNETaspIf.CTRL_PASSWORD_CLIENT := "ttcn"
*.v_UIHandler_CLI_TELNETaspIf.CTRL_SERVER_PROMPT := "TTCN> "
*.v_UIHandler_CLI_TELNETaspIf.CTRL_MODE := "server"

*.v_UIHandler_CLI_displayTELNETaspIf.CTRL_PORTNUM := "17101"
*.v_UIHandler_CLI_displayTELNETaspIf.CTRL_LOGIN_SKIPPED := "yes"
*.v_UIHandler_CLI_displayTELNETaspIf.CTRL_USERNAME_CLIENT := "ttcn"
*.v_UIHandler_CLI_displayTELNETaspIf.CTRL_PASSWORD_CLIENT := "ttcn"
*.v_UIHandler_CLI_displayTELNETaspIf.CTRL_SERVER_PROMPT := "TTCN> "
*.v_UIHandler_CLI_displayTELNETaspIf.CTRL_MODE := "server"
