misc: add lcov scripts, README.md 99/23299/2
authorDave Barach <dave@barachs.net>
Wed, 6 Nov 2019 21:58:48 +0000 (16:58 -0500)
committerFlorin Coras <florin.coras@gmail.com>
Wed, 6 Nov 2019 23:58:23 +0000 (23:58 +0000)
See extras/lcov

Type: feature

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: Id229436bd94cd18bcd0f3a3d938eae2b28d5b1f5

extras/lcov/README.md [new file with mode: 0644]
extras/lcov/lcov_post [new file with mode: 0755]
extras/lcov/lcov_prep [new file with mode: 0755]

diff --git a/extras/lcov/README.md b/extras/lcov/README.md
new file mode 100644 (file)
index 0000000..ff0e7bd
--- /dev/null
@@ -0,0 +1,46 @@
+## Prerequisites
+
+The Linux gcov and lcov tools are fussy about gcc / g++ compiler
+versions. As of this writing, Ubuntu 18.04 gcov / lcov work with
+these toolchain versions:
+
+  $ gcc --version
+  gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
+  $ g++ --version
+  g++ (Ubuntu 8.3.0-6ubuntu1~18.04.1) 8.3.0
+
+Refer to
+https://askubuntu.com/questions/26498/how-to-choose-the-default-gcc-and-g-version for information on how to install multiple gcc / g++ versions, and
+switch between them.
+
+You'll need to install the following additional packages:
+
+  $ sudo apt-get install gcovr ggcov lcov
+
+## Compile an instrumented vpp image
+
+Two ways:
+
+  $ cd <workspace-root>
+  $ make test-gcov
+  $ ## interrupt compilation after building the image
+
+or
+  $ cd <workspace-root>/build-root
+  $ make PLATFORM=vpp TAG=vpp_gcov vpp-install
+
+## Initialize the lcov database
+
+  $ cd <workspace-root>
+  $ ./extras/lcov/lcov_prep
+  $ make test-gcov or make TEST=my_test test-gcov
+  $ # repeat or vary as desired to increase reported coverage
+  $ # Generate the report:
+  $ ./extras/lcov/lcov_post
+
+You can run vpp manually, do anything you like. Results are cumulative
+until you re-run the "prep" script.
+
+## Look at the results
+
+Point a browser at file:///<workspace-root>/build-root/html/index.html
diff --git a/extras/lcov/lcov_post b/extras/lcov/lcov_post
new file mode 100755 (executable)
index 0000000..f439796
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+set -e
+
+cd build-root
+rm -rf html
+mkdir html
+lcov --no-checksum --directory . --capture --output-file out.info
+genhtml out.info -o html
diff --git a/extras/lcov/lcov_prep b/extras/lcov/lcov_prep
new file mode 100755 (executable)
index 0000000..1212d04
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+set -e
+
+cd build-root
+rm -rf html
+lcov --capture --initial --directory . --output-file lcov.out