ION by default sends bundles encoded with CBHE (BPv6). This tests that we
can receive them. Also for BPv7 it makes sense to test reception, of
course. :-)
Signed-off-by: Felix Walter <felix.walter@d3tn.com>
This adds a Dockerfile containing everything needed in our other tests
(Clang, Python, Python dependencies, Netcat).
See also: #16
Signed-off-by: Felix Walter <felix.walter@d3tn.com>
In newer versions of ION the `ionstart` utility may not execute the
`dtn2admin` program, so our egress plans were not loaded properly.
Signed-off-by: Felix Walter <felix.walter@d3tn.com>
Note that this needs to extend the preparation script for build uD3TN in
case of the ION BIBE interop test with the proper compatibility flag.
Signed-off-by: Felix Walter <felix.walter@d3tn.com>
This makes the ion interop testing script flexible such that we can
specify the EID scheme to be used. Two additional CI tests are added for
the ipn scheme. Note that these use the newest version of ION while
there still seems to be incompatibility for dtn EIDs with these (see
issue #116).
Signed-off-by: Felix Walter <felix.walter@d3tn.com>
This makes the ION interoperability tests assume a prepared environment
(ION, uD3TN compiled, Python deps, ...) and, thus, only execute the test
run itself. The CI routines make use of the new Docker image.
Additionally a timeout for stopping ION is added (#120).
Fixes: #120
See also: #16
Signed-off-by: Felix Walter <felix.walter@d3tn.com>
This provides two new Dockerfiles for testing, one just containing ION
and one with an additional Python3 virtual environment for
interoperability testing.
Additionally, two scripts are provided:
* build_docker_images.sh: build images that can be pushed to the
registry and then used by the CI toolchain
* prepare_for_test.sh: a script to be run inside a newly created Docker
container based on the provided `ion-interop` image, to build uD3TN
and add the Python modules from the uD3TN source tree efficiently
Signed-off-by: Felix Walter <felix.walter@d3tn.com>
This artificially reduces the maximum number of open file descriptors to
make ION services start faster and address an issue with huge delays on
systems that have this limit set to 2^30-8 (observed in container
runtimes #121)
Fixes: #121
Signed-off-by: Felix Walter <felix.walter@d3tn.com>
This makes the testing logs prettier and may help in decoding the
responses received by aap_receive.py.
Signed-off-by: Felix Walter <felix.walter@d3tn.com>
We do not need this anymore due to making logging line-buffered and it
collides with ASAN in some cases.
Signed-off-by: Felix Walter <felix.walter@d3tn.com>
This enables ASAN and UBSAN in our unit and integration tests.
Another integration test using the thread (data race) sanitizer is added
to detect such issues as well.
The tests are extended such that they wait for uD3TN (all instances if
we launch multiple ones) to terminate, to allow for exit checks of
sanitizers to run. For example, ASAN and the thread sanitizer make use
of this and we need to obtain the exit status code to tell whether the
CI job succeeded or not.
Note that memory leak detection is turned off in the unit tests as they
do not properly deallocate temporary variables, see: #104
aap_send and aap_receive are always invoked with `-v` to get more
information on what happens there in the tests.
Fixes: #55
Signed-off-by: Felix Walter <felix.walter@d3tn.com>
ud3tn is available under multiple licenses and we want to reflect this in
our source code. But which license information should appear first and how
can we manage this efficiently in the future? The Linux Kernel uses SPDX
expressions instead of boilerplate sections. This seems to be a great
approach, so we do the same here.
Signed-off-by: Georg Alexander Murzik <georg.murzik@d3tn.com>