[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Test code coverage

From: Julian Foad <julianfoad_at_btopenworld.com>
Date: Wed, 28 Nov 2012 21:55:53 +0000 (GMT)

Stefan Fuhrmann wrote:

> Julian Foad wrote:
>>> [[[
>>> env CFLAGS='-fprofile-arcs -ftest-coverage' ./configure \
>>>     --disable-shared --enable-maintainer-mode $moreopts
>>>
>>> make -sj 2> /dev/null > /dev/null

I tried this on the Centos buildbot today and ran into another issue: the Perl bindings build fails at link stage.  See <http://ci.apache.org/builders/svn-x64-centos-gcc/builds/7765/steps/Build/logs/stdio> or here are the last few lines:
[[[
Running Mkbootstrap for SVN::_Core ()
chmod 644 _Core.bs
rm -f blib/arch/auto/SVN/_Core/_Core.so
gcc  -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic core.o  -o blib/arch/auto/SVN/_Core/_Core.so -L[...] -l[...]
/usr/bin/ld: /home/bt/slaves/x64-centos/build/subversion/libsvn_diff/.libs/libsvn_diff-1.a(deprecated.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
]]]

It looks like the effect of --disable-shared and the two '-f' flags aren't getting passed along to this link stage.

>>> make svnserveautocheck PARALLEL=1
>>
>> Some of the Python tests error out when I run them in parallel
>> like this.  The errors are:
>> [[[
>> W: profiling:/.../subversion/libsvn_subr/.libs/nls.gcda:Invocation mismatch - some data files may have been removed
>> ]]]
>
> Hm. It works for me (except for 1 test that fails from time to time).
> I run that test script only as a quick check for major breakage.
>
>
>> I found an email <http://gcc.gnu.org/ml/gcc-help/2005-11/msg00074.html>
>> which says "gcov instrumentation is multi-process safe, but not
>> multi-thread safe.  The multi-processing safety relies on OS level file
>> locking, which is not available on some systems.".
>>
>>> lcov -d . -b . -c -o tests.lcov > lcov.log
>>> genhtml tests.lcov -o html > genhtml.log
>>> ]]]
>>
>> OK, that part works.
>>
>> Is there a command to reset the coverage statistics, that I can
>> do before a test run if I don't want to 'make clean'?
>
> Not sure 'make clean' would even help. This is what I do:

'make clean' does work because it deletes all the '.libs' directories, and the coverage data files were created in those dirs.

> find . -name "*.gc*" -print0 | xargs -0 rm -rf

Thanks.

- Julian
Received on 2012-11-28 22:56:31 CET

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.