Skip to content

Commit 5242bb3

Browse files
committed
Merge pull request #6813
d80e3cb Support gathering of code coverage data for RPC tests (dexX7) e3b5e6c Run extended BitcoinJ tests for coverage based on config (dexX7) 45d4ff0 Add config option to enable extended RPC tests for code coverage (dexX7) 8e3a27b Require Python for RPC tests, when using lcov (dexX7) d425877 Remove coverage and test related files, when cleaning up (dexX7) 4d2a926 Ignore coverage data related and temporary test files (dexX7)
2 parents 867d6c9 + d80e3cb commit 5242bb3

File tree

4 files changed

+45
-7
lines changed

4 files changed

+45
-7
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ build
9191

9292
#lcov
9393
*.gcno
94+
*.gcda
9495
/*.info
9596
test_bitcoin.coverage/
9697
total.coverage/
@@ -104,6 +105,9 @@ qa/pull-tester/run-bitcoind-for-test.sh
104105
qa/pull-tester/tests_config.py
105106
qa/pull-tester/cache/*
106107
qa/pull-tester/test.*/*
108+
qa/tmp
109+
cache/
110+
share/BitcoindComparisonTool.jar
107111

108112
!src/leveldb*/Makefile
109113

Makefile.am

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) $
3939

4040
COVERAGE_INFO = baseline_filtered_combined.info baseline.info block_test.info \
4141
leveldb_baseline.info test_bitcoin_filtered.info total_coverage.info \
42-
baseline_filtered.info block_test_filtered.info \
42+
baseline_filtered.info block_test_filtered.info rpc_test.info rpc_test_filtered.info \
4343
leveldb_baseline_filtered.info test_bitcoin_coverage.info test_bitcoin.info
4444

4545
dist-hook:
@@ -170,19 +170,28 @@ test_bitcoin_filtered.info: test_bitcoin.info
170170

171171
block_test.info: test_bitcoin_filtered.info
172172
$(MKDIR_P) qa/tmp
173-
-@TIMEOUT=15 qa/pull-tester/run-bitcoind-for-test.sh $(JAVA) -jar $(JAVA_COMPARISON_TOOL) qa/tmp/compTool 0
173+
-@TIMEOUT=15 qa/pull-tester/run-bitcoind-for-test.sh $(JAVA) -jar $(JAVA_COMPARISON_TOOL) qa/tmp/compTool $(COMPARISON_TOOL_REORG_TESTS)
174174
$(LCOV) -c -d $(abs_builddir)/src --t BitcoinJBlockTest -o $@
175175
$(LCOV) -z -d $(abs_builddir)/src
176176
$(LCOV) -z -d $(abs_builddir)/src/leveldb
177177

178178
block_test_filtered.info: block_test.info
179179
$(LCOV) -r $< "/usr/include/*" -o $@
180180

181+
rpc_test.info: test_bitcoin_filtered.info
182+
-@TIMEOUT=15 python qa/pull-tester/rpc-tests.py $(EXTENDED_RPC_TESTS)
183+
$(LCOV) -c -d $(abs_builddir)/src --t rpc-tests -o $@
184+
$(LCOV) -z -d $(abs_builddir)/src
185+
$(LCOV) -z -d $(abs_builddir)/src/leveldb
186+
187+
rpc_test_filtered.info: rpc_test.info
188+
$(LCOV) -r $< "/usr/include/*" -o $@
189+
181190
test_bitcoin_coverage.info: baseline_filtered_combined.info test_bitcoin_filtered.info
182191
$(LCOV) -a baseline_filtered.info -a leveldb_baseline_filtered.info -a test_bitcoin_filtered.info -o $@
183192

184-
total_coverage.info: baseline_filtered_combined.info test_bitcoin_filtered.info block_test_filtered.info
185-
$(LCOV) -a baseline_filtered.info -a leveldb_baseline_filtered.info -a test_bitcoin_filtered.info -a block_test_filtered.info -o $@ | $(GREP) "\%" | $(AWK) '{ print substr($$3,2,50) "/" $$5 }' > coverage_percent.txt
193+
total_coverage.info: baseline_filtered_combined.info test_bitcoin_filtered.info block_test_filtered.info rpc_test_filtered.info
194+
$(LCOV) -a baseline_filtered.info -a leveldb_baseline_filtered.info -a test_bitcoin_filtered.info -a block_test_filtered.info -a rpc_test_filtered.info -o $@ | $(GREP) "\%" | $(AWK) '{ print substr($$3,2,50) "/" $$5 }' > coverage_percent.txt
186195

187196
test_bitcoin.coverage/.dirstamp: test_bitcoin_coverage.info
188197
$(GENHTML) -s $< -o $(@D)
@@ -211,4 +220,4 @@ CLEANFILES = $(OSX_DMG) $(BITCOIN_WIN_INSTALLER)
211220
.INTERMEDIATE: $(COVERAGE_INFO)
212221

213222
clean-local:
214-
rm -rf test_bitcoin.coverage/ total.coverage/ $(OSX_APP)
223+
rm -rf coverage_percent.txt test_bitcoin.coverage/ total.coverage/ qa/tmp/ cache/ $(OSX_APP)

configure.ac

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ AC_PATH_TOOL(STRIP, strip)
5858
AC_PATH_TOOL(GCOV, gcov)
5959
AC_PATH_PROG(LCOV, lcov)
6060
AC_PATH_PROG(JAVA, java)
61+
AC_PATH_PROG(PYTHON, python)
6162
AC_PATH_PROG(GENHTML, genhtml)
6263
AC_PATH_PROG([GIT], [git])
6364
AC_PATH_PROG(CCACHE,ccache)
@@ -106,6 +107,11 @@ AC_ARG_ENABLE([comparison-tool-reorg-tests],
106107
[use_comparison_tool_reorg_tests=$enableval],
107108
[use_comparison_tool_reorg_tests=no])
108109

110+
AC_ARG_ENABLE([extended-rpc-tests],
111+
AS_HELP_STRING([--enable-extended-rpc-tests],[enable expensive RPC tests when using lcov (default no)]),
112+
[use_extended_rpc_tests=$enableval],
113+
[use_extended_rpc_tests=no])
114+
109115
AC_ARG_WITH([qrencode],
110116
[AS_HELP_STRING([--with-qrencode],
111117
[enable QR code support (default is yes if qt is enabled and libqrencode is found)])],
@@ -341,6 +347,10 @@ else
341347
AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 0)
342348
fi
343349

350+
if test x$use_extended_rpc_tests != xno; then
351+
AC_SUBST(EXTENDED_RPC_TESTS, -extended)
352+
fi
353+
344354
if test x$use_lcov = xyes; then
345355
if test x$LCOV = x; then
346356
AC_MSG_ERROR("lcov testing requested but lcov not found")
@@ -351,6 +361,9 @@ if test x$use_lcov = xyes; then
351361
if test x$JAVA = x; then
352362
AC_MSG_ERROR("lcov testing requested but java not found")
353363
fi
364+
if test x$PYTHON = x; then
365+
AC_MSG_ERROR("lcov testing requested but python not found")
366+
fi
354367
if test x$GENHTML = x; then
355368
AC_MSG_ERROR("lcov testing requested but genhtml not found")
356369
fi

src/Makefile.am

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,19 @@ libbitcoinconsensus_la_CPPFLAGS = $(CRYPTO_CFLAGS) -I$(builddir)/obj -DBUILD_BIT
412412
endif
413413
#
414414

415-
CLEANFILES = leveldb/libleveldb.a leveldb/libmemenv.a *.gcda *.gcno
415+
CLEANFILES = leveldb/libleveldb.a leveldb/libmemenv.a
416+
CLEANFILES += *.gcda *.gcno
417+
CLEANFILES += compat/*.gcda compat/*.gcno
418+
CLEANFILES += consensus/*.gcda consensus/*.gcno
419+
CLEANFILES += crypto/*.gcda crypto/*.gcno
420+
CLEANFILES += policy/*.gcda policy/*.gcno
421+
CLEANFILES += primitives/*.gcda primitives/*.gcno
422+
CLEANFILES += script/*.gcda script/*.gcno
423+
CLEANFILES += support/*.gcda support/*.gcno
424+
CLEANFILES += univalue/*.gcda univalue/*.gcno
425+
CLEANFILES += wallet/*.gcda wallet/*.gcno
426+
CLEANFILES += wallet/test/*.gcda wallet/test/*.gcno
427+
CLEANFILES += zmq/*.gcda zmq/*.gcno
416428

417429
DISTCLEANFILES = obj/build.h
418430

@@ -422,7 +434,7 @@ clean-local:
422434
-$(MAKE) -C leveldb clean
423435
-$(MAKE) -C secp256k1 clean
424436
-$(MAKE) -C univalue clean
425-
rm -f leveldb/*/*.gcno leveldb/helpers/memenv/*.gcno
437+
-rm -f leveldb/*/*.gcda leveldb/*/*.gcno leveldb/helpers/memenv/*.gcda leveldb/helpers/memenv/*.gcno
426438
-rm -f config.h
427439

428440
.rc.o:

0 commit comments

Comments
 (0)