3f33b3ad8c
Use a more robust design for collecting the gcov logs from the case where test cases are run within a virtual machine. This generates a writable-from-vm build tree for each component separately so that the lcov and gcov can easily find the matching source code and data files. In addition, prepare the reports automatically at the end of the vm-run.sh --codecov execution. Signed-hostap: Jouni Malinen <j@w1.fi>
57 lines
2.1 KiB
Text
57 lines
2.1 KiB
Text
These scripts allow you to run the hwsim tests inside a KVM virtual machine.
|
|
|
|
To set it up, first compile a kernel with the kernel-config file as the
|
|
.config. You can adjust it as needed, the configuration is for a 64-bit
|
|
x86 system and should be close to minimal. The architecture must be the
|
|
same as your host since the host's filesystem is used.
|
|
|
|
Install the required tools: at least 'kvm', if you want tracing trace-cmd,
|
|
valgrind if you want, etc.
|
|
|
|
Compile the hwsim tests as per the instructions given, you may have to
|
|
install some extra development packages (e.g. binutils-dev for libbfd).
|
|
|
|
Create a vm-config file and put the KERNELDIR option into it (see the
|
|
vm-run.sh script). If you want valgrind, also increase the memory size.
|
|
|
|
Now you can run the vm-run.sh script and it will execute the tests using
|
|
your system's root filesystem (read-only) inside the VM. The options you
|
|
give it are passed through to run-all.sh, see there.
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
Code Coverage Analysis for user space code
|
|
|
|
Code coverage for wpa_supplicant and hostapd can be generated from the
|
|
test run with following command line:
|
|
|
|
./vm-run.sh --codecov [other arguments..]
|
|
|
|
This builds a separate copies of wpa_supplicant and hostapd into a
|
|
directory that is writable from the virtual machine to collect the gcov
|
|
data. lcov is then used to prepare the reports at the end of the test
|
|
run.
|
|
|
|
|
|
Code Coverage Analysis for kernel code
|
|
|
|
In order to do code coverage analysis, reconfigure the kernel to include
|
|
|
|
CONFIG_GCOV_KERNEL=y
|
|
CONFIG_GCOV_PROFILE_ALL=y
|
|
|
|
Note that for gcc 4.7, kernel version 3.13-rc1 or higher is required.
|
|
|
|
The scripts inside the VM will automatically copy the gcov data out of the
|
|
VM into the logs directory. To post-process this data, you'll want to use
|
|
lcov and run
|
|
|
|
cd /tmp/hwsim-test-logs/<timestamp>
|
|
lcov -c -d gcov/ > gcov/data
|
|
genhtml -o html/ gcov/data
|
|
|
|
Then open html/index.html in your browser.
|
|
|
|
Note that in this case you need to keep your build and source directories
|
|
across the test run (otherwise, it's safe to only keep the kernel image.)
|