| 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.) |