37.
How do environment variables get passed to test cases?
Question
When we run using TET-Lite, we pick up
environment information by sourcing files specify environment variables
such as
TET_ROOT ,
TET_SUITE_ROOT
and
PATH .
At what point does this information
get put into the environment on the remote machine when Distributed
TETware is used?
Answer
When
tcc
processes a test case, it puts certain variables in the test
case's environment.
These variables are called
communication variables
and are used by
tcc
to communicate information to the TCM and API.
tcc
always puts all of these variables in the test case's environment,
supplying default values if necessary.
This operation is performed by both the Lite and the Distributed
versions of
tcc .
The values of some of these variables on the local
system are derived from environment variables that you provide to
tcc
(namely:
TET_ROOT ,
TET_EXECUTE ,
TET_SUITE_ROOT
and
TET_RUN ).
By contrast, when
tcc
puts communication variables in the environment of a test case or tool
on a remote system, it derives values for these variables from the values
that you specify in
tetdist.cfg .
The values of other communication variables (such as
TET_CONFIG
and
TET_ACTIVITY )
are generated internally by
tcc .
In TETware-Lite, test cases and tools are children of
tcc
so they inherit environment variables from
tcc .
By contrast, in Distributed TETware, test cases and tools are children
of
tccd ,
so they inherit environment variables from
tccd .
tcc
sends a copy of its environment to
tccd
on system 0 (the local system) soon after logging on.
This ensures that test cases and tools running on the local system
receive (almost) the same environment as they would if run by the Lite
version of
tcc .
(In practice, the environment inherited by test cases and tools running
on the local system is the union of
tcc 's
and
tccd 's
environment, with the values of variables supplied by
tcc
having precedence over any corresponding values in
tccd 's
environment.)
However,
tcc
does
not
send a copy of its environment to tccd on other systems; it only sends
the communication variables as described previously.
This means that the values of other variables (such as
PATH )
are the ones that are in force at the time that
tccd
starts up
(although additional variables may be specified using the
-e
command-line option).
In particular, the
inetd
version of
tccd
inherits its environment from
inetd ,
which is usually fairly minimal.
See also
-
"Initial processing'' and "Communication variables'',
both in the chapter entitled "The Test Case Controller''
in the TETware Programmers Guide.
-
The
tccd
manual page in the TETware User Guide.
|