summaryrefslogtreecommitdiff
path: root/source4/lib/ldb/README_gcov.txt
diff options
context:
space:
mode:
Diffstat (limited to 'source4/lib/ldb/README_gcov.txt')
-rw-r--r--source4/lib/ldb/README_gcov.txt33
1 files changed, 33 insertions, 0 deletions
diff --git a/source4/lib/ldb/README_gcov.txt b/source4/lib/ldb/README_gcov.txt
new file mode 100644
index 0000000000..02f090f69f
--- /dev/null
+++ b/source4/lib/ldb/README_gcov.txt
@@ -0,0 +1,33 @@
+Here is how to use gcov to test code coverage in ldb.
+
+Step 1: enable gcov support
+
+ Edit Makefile.ldb and uncommend the two GCOV_ lines
+
+Step 2: build ldb
+
+ make -sf Makefile.ldb clean all
+
+Step 3: run the test suite
+ make -sf Makefile.ldb test-tdb
+
+Step 4: produce the gcov report
+ make -sf Makefile.ldb gcov
+
+Step 5: read the summary reports
+ less *.report.gcov
+
+Step 6: examine the per-file reports
+ less ldb_tdb\#ldb_tdb.c.gcov
+
+You can also combine steps 2 to 4 like this:
+
+ make -sf Makefile.ldb clean all test-tdb gcov
+
+Note that you should not expect 100% coverage, as some error paths
+(such as memory allocation failures) are verr hard to trigger. There
+are ways of working around this, but they are quite tricky (they
+involve allocation wrappers that "fork and fail on malloc").
+
+The lines to look for in the per-file reports are the ones starting
+with "#####". Those are lines that are never executed.