Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Eclipse Titan » The Titan runtime configuration file
The Titan runtime configuration file [message #1735829] Thu, 23 June 2016 07:01 Go to next message
Elemer Lelik is currently offline Elemer LelikFriend
Messages: 1064
Registered: January 2015
Senior Member
Greetings.


Parts of the configuration file have been discussed earlier; the aim of this post to offer an overview that can be used as a quick reference.

Initializing the data for the code itself can be done in two ways in Titan:
some values are generated during compilation, but there's also the possibility to attribute values to module parameters at the start of execution from a configuration file. Likewise, some parameters controlling the behaviour of Titan during test execution can be read from an external configuration file.

The config file used by Titan is a text file, structured in sections , each section having a particular header.
Sections may come in random order. We'll briefly go through each section and describe them broadly.
Further details about the config file can be found in the reference guide Ch.7 The Run-time Configuration File

[MODULE_PARAMETERS]


This was discused in detail in https://www.eclipse.org/forums/index.php/t/1077635/
Essential to remember is that module parameters in the config will override module parameters in the code,
and their value is set at the start of execution, when Titan reads the config file;
this permits quickly changing values without the need to recompile the code.

[LOGGING]

Again, there's a separate forum post for this: https://www.eclipse.org/forums/index.php/t/1073933/
Logging can be configured with fine granularity using config file options.

[TESTPORT_PARAMETERS]

In this section one can specify parameters that are passed to test ports.

For example:
[TESTPORT_PARAMETERS]
mtc.*.LocalIPAddress := "10.48.161.146"  //all ports of mtc will have the given local address
*.HTTPPort.RemoteAddress := "10.48.161.147" // any port named HTTPPort in any component will be passed the given value of RemoteAddress 
mtc.RADIUS[0].LocalUDPPort := "12345"  //The first port of the RADIUS port array will have a LocalUDPPort value of "12345" 
mtc.RADIUS[1].LocalUDPPort := "12346" //The second port of the RADIUS port array will have a LocalUDPPort value of "12346" 


Each test port has its' own set of significant port parameters which are documented in the ports' description.


[DEFINE]

In this section one can create macro definitions that can be used in other configuration file sections except [INCLUDE].
Useful when a value appears in multiple sections, as when a change is needed, this has to be done in one location only.

[INCLUDE]

Other configuration files can be included.
The [INCLUDE] directives of included files are processed recursively.
Each referenced configuration file is processed exactly once even if it is included from several places.
Relative pathnames are resolved based on the directory of the referring configuration file.


Example
[INCLUDE]
"base_definitions.cfg"
"../additional_parameters.cfg"


[ORDERED_INCLUDE]

Same as include, except that inlcuded config files are sequentially processed.


[EXTERNAL_COMMANDS]


This section defines external commands ( shell scripts)
to be executed by the ETS whenever a control part or test case is started or terminated.
Using this feature one can control external monitor programs
(like tcpdump in case of IP testing) automatically during test execution.

Example
[EXTERNAL_COMMANDS]
BeginTestCase := "/usr/local/tester/bin/StartTcpdump"
EndTestCase := "/usr/local/tester/bin/StopTcpdump"



[EXECUTE]
In this section you have to specify what parts of your test suite you want to execute.
In single mode the configuration file is useless without this section.


Example
[EXECUTE]
IPv6Demo.tc_send_echo
IPv6Demo.tc_send_echo // run it twice
IPv6BaseSpecification.control //execute the control part
IPv6NeighborDiscovery.*  //execute all test cases




[GROUPS]
In this section one can specify groups of hosts.
These groups can be used inside the [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts.


Example
[GROUPS]
HeintelAndPauler := heintel, pauler.ez.domain.hu
myGroup := 10.44.87.34, test-host.123.com
AllHosts := *




[COMPONENTS]

This section consists of rules restricting the location of created PTCs. These constraints are useful when distributed tests are executed in a heterogeneous environment.
The participating computers may have different hardware setup, computing capacity or operating system.


Example
[COMPONENTS]
MyComponentType := HeintelAndPauler
CPComponentType := 10.44.87.34
* := AllHosts 



[GROUPS] and [COMPONENTS] can be used to control execution of Titan over an array of computers, physical or virtualized/cloud based.
Binaries will have to be distributed and launched manually. As a result , Host Controllers will be created on each host,
and they will connect to the Main Controller. For details see user guide 4.4 Running Parallel Test Suites.




[MAIN_CONTROLLER]
These options control the behavior of the main controller(MC).

Options LocalAddress and TCPPort determine the IP address and TCP port on which the MC application will listen for incoming HC connections.
LocalAddress can be useful on multi-homed hosts.If omitted MC will accept connections on all local IP addresses.
TCPPort is a port number between 0 and 65535, recommended value being 9034.
Using a port number less than 1024 requires super-user (root) privileges.
The MC will listen on an ephemeral port chosen by the kernel when TCPPort is omitted or set to zero.

The KillTimer option tells the MC to wait some seconds for a busy test component (MTC or PTC) to terminate when it was requested to stop .
The MC in co-operation with the local HC kills the UNIX process if the component did not terminate properly before KillTimer expiry.
The purpose of this function is to prevent the test system from deadlocks.
Please note that when the UNIX process of MTC is killed all existing PTCs are destroyed at the same time.



[PROFILER]

The settings in this section control the behavior of the TTCN-3 Profiler and Coverage measurement.
This section will be treated in detail in a separate post.




Best regards

Elemer



[Updated on: Thu, 23 June 2016 07:12]

Report message to a moderator

Re: The Titan runtime configuration file [message #1737454 is a reply to message #1735829] Fri, 08 July 2016 11:50 Go to previous messageGo to next message
Gustavo Gonnet is currently offline Gustavo GonnetFriend
Messages: 35
Registered: October 2015
Location: Montreal, Quebec, Canada
Member
Nicely explained. One thing I'd like to add is this:
All parameters defined in the [DEFINE] section have a local context and ARE NOT SEEN by Titan.

thank you
Gustavo.
Re: The Titan runtime configuration file [message #1803980 is a reply to message #1737454] Thu, 14 March 2019 18:36 Go to previous messageGo to next message
David Laurent is currently offline David LaurentFriend
Messages: 68
Registered: September 2018
Member
Thx for the hint Gustavo.

Regards - David
Re: The Titan runtime configuration file [message #1829103 is a reply to message #1735829] Thu, 25 June 2020 08:18 Go to previous messageGo to next message
salva silvestri is currently offline salva silvestriFriend
Messages: 3
Registered: July 2019
Junior Member
Dear Sirs
Is it possible to change an assignment inside the testport parameter section of the configuration file for each different testcase within a testset? For instance my testset
is a sequence of the same test case inside which I use a password that I would like to customize for each test case ..
If yes how can it be implemented?
It's my first experience with titan and I lack of experience.
Thanks a lot for your attention and best regards
Salva
Re: The Titan runtime configuration file [message #1829106 is a reply to message #1829103] Thu, 25 June 2020 09:16 Go to previous messageGo to next message
Elemer Lelik is currently offline Elemer LelikFriend
Messages: 1064
Registered: January 2015
Senior Member
Hi Salva,

the answer is yes and no :)

when starting execution, the config file is being read and then the execution continues with the values ( including test port parameters) from it until the end of the lifetime of the executable.
This is the behavior as provisioned by the standard.

However, some of our test ports can be reconfigured dynamically during execution using special messages from the test suite;
this comes with the drawback of some extra code needed to be added to the TTCN-3 code, and also , as this behavior is specific to Titan, will render the code non-compliant to the language standard, decreasing portability between tools.

As an example of dynamic port reconfiguration, pls. check the below test port:

https://github.com/eclipse/titan.TestPorts.TCPasp

see included documentation

Now the above is valid only for test port parameters; module parameters in the config file will only supply an initial value for e.g. a variable, and
this variable can be overwritten at any moment of the execution.

I'd imagine that a password is more like a module parameter, I don't see why it would belong to a test port. But I assume that depends
on the exact circumstances.


Best regards
Elemer
Re: The Titan runtime configuration file [message #1829120 is a reply to message #1735829] Thu, 25 June 2020 12:03 Go to previous messageGo to next message
salva silvestri is currently offline salva silvestriFriend
Messages: 3
Registered: July 2019
Junior Member
Thanks a lot Elemer for your promp and precise answer.
Could you please answer to me about one more question.
Can I get some strings (like the password for istance) from a file in runtime?
If yes please let me know how.
Have a nice afternoon and best regards
Salva
Re: The Titan runtime configuration file [message #1829124 is a reply to message #1829120] Thu, 25 June 2020 13:26 Go to previous message
Elemer Lelik is currently offline Elemer LelikFriend
Messages: 1064
Registered: January 2015
Senior Member
Hi Salva,

it is possible to read from a file during runtime;

pls check the functions in https://github.com/eclipse/titan.Libraries.TCCUsefulFunctions;

however it's probably simpler to read content from the configuration file, as this does not require anything extra, and store it in a variable
that can be used during execution;

mind that any kind of structure can be initialized from the config file, a large record of charstring for example:

{''password0",password1","password2","password3",.......,"password1999999"}

this structure can be accessed by referring to it's indexes

BR

Elemer
Previous Topic:TTCN-3 NBIOT Test Case Execution using Eclipse Titan
Next Topic:Running TTCN 3 Test cases (WebSocket ) on windows machine using Eclipse TITAN plugin
Goto Forum:
  


Current Time: Sun Jul 12 14:15:19 GMT 2020

Powered by FUDForum. Page generated in 0.01955 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top