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.

To speed up testing, it is possible to run multiple VMs concurrently and
split the test cases between all the VMs. If the host system has enough
memory and CPU resources, this can significantly speed up the full test
cycle. For example, a 4 core system with 4 GB of RAM can easily run 8
parallel VMs (assuming valgrind is not used with its higher memory
requirements). This can be run with:

./parallel-vm.sh <number of VMs> [arguments..]


--------------------------------------------------------------------------------

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 -b <path to kernel dir> -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.)
