While most test cases today run solely in the target environment,
some packages may require external testing infrastructure and/or
feedback from the external environment to do complete testing.
The serial package is an example of this. The network package
also contains some tests that require programs to be run on a
host. See the network Tests and Demonstrations
section in the network documentation in the eCos Reference
Guide. Here we will concentrate on the serial tests since
these are applicable to more targets.
Since the serial line is also used for communication with
GDB, a filter is inserted in the communication pathway between
GDB and the serial device which is connected to the hardware target.
The filter forwards all communication between the two, but also
listens for special commands embedded in the data stream from the
target.
When such a command is seen, the filter stops forwarding data
to GDB from the target and enters a special mode. In this mode
the test case running on the target is able to control the filter,
commanding it to run various tests. While these tests run, GDB is
isolated from the target.
As the test completes (or if the filter detects a target crash)
the communication path between GDB and the hardware target is re-established,
allowing GDB to resume control.
In theory, it is possible to extend the filter to provide
a generic framework for other target-external testing components,
thus decoupling the testing infrastructure from the (possibly limited)
communication means provided by the target (serial, JTAG, Ethernet,
etc).
Another advantage is that the host tools do not need to
know about the various testing environments required by the eCos
packages, since all contact with the target continues to happen
via GDB.