This repository contains both the necessary framework and the entire test suite
used for testing the CADETS HyperTrace implementation. The current state of the
code is heavily unstable and changing often. Tests themselves can be specified
in the tests/
subdirectory. Each subdirectory of tests/
, for example
tests/example
needs to have a test stager specified under stagers/
. See
stagers/example.scm
. In the future, it is likely that stagers will be able
to stage multiple directories, however that is not supported quite yet, as it
is unclear what they would be filtered on.
- Custom diffing functions (e.g. allowing different ordering, not exact match).
- FreeBSD port.
- Aggregation of results and reporting (HTML, JUnit)
This project is implemented in Chicken Scheme, which
is a BSD-licensed Scheme implementation. It supports both compilation to C (and
through that, individual binaries) and can be interpreted using csi
. This
project is mostly meant to be compiled down to a single binary (and perhaps in
the future as a library). Chicken Scheme can easily be called from C, and it can
easily call C.
This software depends on Chicken Scheme 5. If your OS ships Chicken Scheme 4, please follow the instructions down below on building Chicken from source.
# pkg install chicken5 gmake
./bootstrap
gmake
# <package manager> install chicken
./bootstrap
make
A download to a Chicken Scheme tarball is available
on their website on the Downloads page. Download the tarball, verify the
checksum using sha256sum
and simply issue:
make PLATFORM=(bsd|linux|macosx)
sudo make PLATFORM=(bsd|linux|macosx) install
This will get you the necessary binaries and the libchicken
library which is
the only runtime dependency of the HyperTrace test suite.
You will then be able to run the generic build instructions of
./bootstrap
gmake
which will use chicken-install
to set up the necessary build dependencies and
csc
to build the source into a single binary which depends on libchicken
.
You can check that everything was correctly linked using ldd
(sample FreeBSD
output):
ldd build/hypertrace-test
build/hypertrace-test:
libchicken5.so.11 => /usr/local/lib/libchicken5.so.11 (0x800252000)
libm.so.5 => /lib/libm.so.5 (0x800630000)
libthr.so.3 => /lib/libthr.so.3 (0x800667000)
libc.so.7 => /lib/libc.so.7 (0x800694000)
The tests for the test suite itself can be run on any platform, regardless of HyperTrace support. Currently, HyperTrace tests will fail on any platform that doesn't support them. You can choose to run only the tests for the test suite itself:
./build/bin/hypertrace-test --no-stagers
However, if you wish to actually test the HyperTrace implementation, simply running the binary is sufficient:
./build/bin/hypertrace-test
Further, there is a HYPERTRACE_TESTPATH
environment variable that the
HyperTrace test suite recognises. If it is set, the tests and stagers will be
looked for in that directory.