[PATCH] vm test script: copy gcov data if present

Johannes Berg johannes at sipsolutions.net
Thu Dec 5 17:22:10 EST 2013


From: Johannes Berg <johannes.berg at intel.com>

If there's code coverage analysis data, copy it out of the VM
to be able to analyse it later. Also add a description to the
README file about how to use it.

Signed-hostap: Johannes Berg <johannes.berg at intel.com>
---
 tests/hwsim/vm/README    | 25 +++++++++++++++++++++++++
 tests/hwsim/vm/inside.sh |  5 +++++
 2 files changed, 30 insertions(+)

diff --git a/tests/hwsim/vm/README b/tests/hwsim/vm/README
index 53d8097..ba124ef 100644
--- a/tests/hwsim/vm/README
+++ b/tests/hwsim/vm/README
@@ -17,3 +17,28 @@ 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
+
+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.)
diff --git a/tests/hwsim/vm/inside.sh b/tests/hwsim/vm/inside.sh
index 5abaef4..5c33ecd 100755
--- a/tests/hwsim/vm/inside.sh
+++ b/tests/hwsim/vm/inside.sh
@@ -74,6 +74,11 @@ else
 
 	cd $TESTDIR
 	./run-all.sh $ARGS >/dev/ttyS0 2>&1
+	if test -d /sys/kernel/debug/gcov ; then
+		cp -ar /sys/kernel/debug/gcov /tmp/logs/
+		# these are broken as they're updated while being read ...
+		find /tmp/logs/gcov/ -wholename '*kernel/gcov/*' -print0 | xargs -0 rm
+	fi
 	#bash </dev/ttyS0 >/dev/ttyS0 2>&1
 fi
 
-- 
1.8.4.rc3



More information about the HostAP mailing list