This is the TESH tool. It constitutes a testing shell, ie a sort of shell
specialized to run tests. The list of actions to take is parsed from files
-files called testsuite.
+files called testsuite.
Testsuites syntax
-----------------
The kind of each line is given by the first char (the second char should be
blank and is ignored):
-
- `$' command to run in forground
+
+ `$' command to run in foreground
`&' command to run in background
`<' input to pass to the command
`>' output expected from the command
Command line arguments
----------------------
Tesh accepts several command line arguments:
- --cd some/directory: ask tesh to switch the working directory before
- lauching the tests
- --setenv var=value: set a specific environment variable
+ --cd some/directory : ask tesh to switch the working directory before
+ launching the tests
+ --setenv var=value : set a specific environment variable
+ --cfg arg : add parameter --cfg=arg to each command line
+ --enable-coverage : ignore output lines starting with "profiling:"
IO orders
---------
$ mkfile file
TOTO will be passed to the cd command, where the user clearly want to pass it
-to the mkfile buildin command (see below).
+to the mkfile built-in command (see below).
Stream redirection
------------------
welcome...
The situation in which it is mainly problematic is to create a
-temporary file. The solution is to use the "mkfile" buildin command,
+temporary file. The solution is to use the "mkfile" built-in command,
as in the following example:
$ mkfile myFile
> some content
It is also possible to specify that a given command must raise a given
signal. For this, use the "expect signal" metacommand. It takes the signal name
as argument. The change only apply to the next command (cf. set-signal.tesh).
-
+
TIMEOUTS
--------
------
By default, the commands output is matched against the one expected,
-and an error is raised on discrepency. Metacomands to change this:
- "output ignore" -> output completely discarded
+and an error is raised on discrepancy. Metacommands to change this:
+ "output ignore" -> output completely discarded
"output display" -> output displayed (but not verified)
"output sort" -> sorts the display before verifying it (see below)
SimGrid since the processes run out of order at any scheduling point
(ie, every processes ready to run at simulated time t run in
parallel). To ensure that the simulator outputs still match, we have
-to sort the output back before comparing it.
+to sort the output back before comparing it.
-We expect the simulators to run with that log formating argument:
+We expect the simulators to run with that log formatting argument:
-log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
Then, tesh sorts string on the 19 first chars only, and is stable when
-line beginings are equal. This should ensure that:
+line beginnings are equal. This should ensure that:
(1) tesh is effective (no false positive, no false negative)
- (2) scheduling points are separated from each other
- (3) at each scheduling point, processes are separated from each other
+ (2) scheduling points are separated from each other
+ (3) at each scheduling point, processes are separated from each other
(4) the order of what a given process says at a given scheduling
point is preserved.
-
+
This is of course very SimGrid oriented, breaking the generality of
-tesh, but who cares, actually?
+tesh, but who cares, actually?
If you want to change the length of the prefix used for the sort,
simply specify it after the output sort directive, like this:
! output sort 22
-
+
ENVIRONMENT
-----------
You can add some content to the tested processes environment with the