The ncm daemon creates a coded mesh network - at least, it will do so in the future.
Objective of the project was to replace the bidirectional session management with a unidirectional session management. See project_proposal.
The project contains a full CI setup
using GitHub Actions doing
unit testing, code coverage reporting, memchecking using valgrind and
static analysis using clang-tidy.
See Running session unit tests on how to manually
run unit tests and collect code coverage.
The ncm depends on the libmoep injection library. If not done so far, install libmoep:
git clone moep@git.net.in.tum.de:moep/libmoep
cd libmoep
autoreconf -fi
./configure
make
make install
ldconfig
See the libmoep README for further instructions.
This project uses the libcheck
framework for unit testing.
Refer to Running session unit tests
for install instructions.
If you cloned this repository without --recursive, you have to checkout the submodule libmoepgf:
git submodule init
git submodule update
To compile and run the moep80211ncm type
autoreconf -fi
./configure
make
./ncm --help
The script deploy.sh aids in deploying the source to a temporary build directory on a set of nodes via PSSH (or SSH) and compiling the sources.
The unit tests for the session management rely on the libcheck
framework.
Refer to the install instructions on how to install libcheck
.
Steps for debian based systems are highlighted below:
apt install check
If you additionally want to capture code coverage you have to install the lcov
dependency:
apt install lcov
Running unit tests without code coverage reporting:
autoreconf -fi
./configure
make
cd tests/ # see note below
make check
libmoepgf
includes some long running benchmark tests which would be executed as well if running make check
in the root directory. To only run session tests you can switch to the ./tests
directory before calling make check
.
make check
builds and runs the test suite.
If the unit tests fails, log output will be place in ./tests/test-suite.log
.
Additionally, you may also call ./tests/check_session
manually to view full testing log output.
Running unit tests with code coverage reporting:
Note: Unit tests with code coverage reporting run without any compiler optimizations.
autoreconf -fi
./configure --enable-code-coverage
make
cd tests/
make check
cd ..
make code-coverage-capture
make code-coverage-capture
uses lcov
to collect code coverage in a processable format.
The lcov file, which can be feed into other coverage displaying systems, is placed under ./ncm-coverage.info
.
Otherwise you may want to open ./ncm-coverage/index.html
to get a human readable visualization
of the collected code coverage.