-
Notifications
You must be signed in to change notification settings - Fork 3
/
README
84 lines (66 loc) · 3 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
aufover-benchmark
=================
A unified set of automated tests for multiple formal verification tools
(cbmc, symbiotic, divine) as well as static analysis tools (gcc, clang,
cppcheck).
How to run existing tests?
--------------------------
- enable yum/dnf repositories from `aufover` COPRs:
$ sudo dnf copr enable -y @aufover/csdiff
$ sudo dnf copr enable -y @aufover/divine
$ sudo dnf copr enable -y @aufover/predator
$ sudo dnf copr enable -y @aufover/symbiotic
- install required/optional dependencies of the benchmark on the system:
$ make install-deps
- configure the benchmark:
$ make
- run the tests:
$ make check
- look for Label Time Summary in the output, it will tell you:
- which tools actually ran
- how many tests each of them analyzed (you need to divide the numbers by 4)
- how much time it took for each of the tools
Alternative ways of running tests
---------------------------------
- passing custom options to ctest:
$ CTEST_OPTS='-LE divine' make check # exclude Divine tests
- using a custom working directory:
$ mkdir /tmp/my-custom-wd
$ WORKDIR=/tmp/my-custom-wd make check [-C PATH_TO_THIS_REPO]
- using source directory as a working directory:
$ cd tests
$ cmake .
$ ctest -j16 --progress # see doc/cmake.txt for other useful options
- select tests by labels (expected to be run from a working directory):
$ ctest --print-labels
$ ctest -L cbmc
$ ctest -LE EXPENSIVE
- running selected tests (expected to be run from a working directory):
$ ctest --show-only
$ ctest -R test-0006
$ ctest -E predator-regre
Formal verification of RPM packages (expensive)
-----------------------------------------------
- run all tests:
$ sudo dnf install cmake koji make csmock-plugin-{cbmc,divine,symbiotic}
$ make check-csmock
- passing custom options to ctest:
$ CTEST_OPTS='-L symbiotic' make check-csmock # use only Symbiotic
$ CTEST_OPTS='-R coreutils' make check-csmock # verify only coreutils
$ CTEST_OPTS='--verbose' make check-csmock # provide verbose output
- passing custom options to cmake:
$ make check-csmock MOCK_PROFILE=fedora-34-x86_64
$ make check-csmock CSMOCK_ADD_OPTS=--use-ldpwrap
Tree layout of this repository
------------------------------
/Makefile top-level Makefile (its use is optional)
/doc documentation
/tests source code of the benchmark
/tests/CMakeLists.txt top-level CMake configuration file
/tests/rpm-pkgs test-suite that uses csmock to formally verify RPM pkgs
/tests/rpm-pkgs/README information specific to the rpm-pkgs test-suite
/tests/single-c simplified test-suite using single C file for each test
/tests/single-c/README information specific to the single-c test-suite
/tests/*/sync.sh scripts for syncing of expected results (use with care)
/workdir default working directory (its use is optional)
/workdir-for-sync separate working directory for sync script(s)