diff options
| author | Randy MacLeod <Randy.MacLeod@windriver.com> | 2019-09-10 17:41:35 -0400 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-09-16 23:02:44 +0100 |
| commit | 997d91f608ca5f866f9800c52a4d2ebbbce70cd2 (patch) | |
| tree | aa79f3946d31e5d50955093b73712f7b00733cc1 | |
| parent | 3b83ad583066795fa3419495b320d5596c55597b (diff) | |
| download | poky-997d91f608ca5f866f9800c52a4d2ebbbce70cd2.tar.gz | |
valgrind: ptest improvements to run-ptest and more
Make some changes to the run-ptest script:
- after main tests run integrity check like the pkg Makefile.
- aesthetic and ordering changes
Add the .in_place directory and its contents which allows valgrind
to be run in-place thereby enabling the gdbserver_tests to
complete rather than hang. Unfortunately directory paths embedded
in binaries still cause many of these test to fail.
Add the exp-sgcheck tests.
With core-image-minimal on qemux86-64/kvm:
Recipe | Passed | Failed | Skipped | Time(s)
before | 648 | 12 | 60 | 1541
after | 662 | 20 | 38 | 1429
ppc-no-gdbserv | 415 | 196 | 34 | 10689
Since fewer tests timeout, the overall time has decreased.
With core-image-sato on qemux86-64/kvm the results are now
the same as core-image-minimal.
qemuppc/arm64 runs result in the oom-killer eventually running since
some processes do not terminate properly and accumulate as defunct
processes in memory. Without the gdbserver_tests, the tests
complete without defunct process or the oom-killer running for
ppc but not for arm64.
(From OE-Core rev: 6dbaaeec17eae8329031188b688b33306a871870)
Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rwxr-xr-x | meta/recipes-devtools/valgrind/valgrind/run-ptest | 27 | ||||
| -rw-r--r-- | meta/recipes-devtools/valgrind/valgrind_3.15.0.bb | 38 |
2 files changed, 47 insertions, 18 deletions
diff --git a/meta/recipes-devtools/valgrind/valgrind/run-ptest b/meta/recipes-devtools/valgrind/valgrind/run-ptest index 447d33c8cb..5b3ad2a2ed 100755 --- a/meta/recipes-devtools/valgrind/valgrind/run-ptest +++ b/meta/recipes-devtools/valgrind/valgrind/run-ptest | |||
| @@ -4,13 +4,30 @@ | |||
| 4 | # wraps the valgrind regression script vg_regtest. | 4 | # wraps the valgrind regression script vg_regtest. |
| 5 | # | 5 | # |
| 6 | # Dave Lerner <dave.lerner@windriver.com> | 6 | # Dave Lerner <dave.lerner@windriver.com> |
| 7 | # Randy MacLeod <Randy.MacLeod@windriver.com> | ||
| 7 | ############################################################### | 8 | ############################################################### |
| 8 | VALGRINDLIB=@libdir@/valgrind | 9 | VALGRIND_LIB=@libdir@/valgrind |
| 9 | LOG="${VALGRINDLIB}/ptest/valgrind_ptest_$(date +%Y%m%d-%H%M%S).log" | 10 | VALGRIND_BIN=@bindir@/valgrind |
| 10 | 11 | ||
| 11 | cd ${VALGRINDLIB}/ptest && ./tests/vg_regtest --all \ | 12 | LOG="${VALGRIND_LIB}/ptest/valgrind_ptest_$(date +%Y%m%d-%H%M%S).log" |
| 12 | --valgrind=/usr/bin/valgrind --valgrind-lib=$VALGRINDLIB \ | 13 | |
| 13 | --yocto-ptest 2>&1|tee ${LOG} | 14 | TOOLS="memcheck cachegrind callgrind helgrind drd massif dhat lackey none" |
| 15 | EXP_TOOLS="exp-bbv exp-dhat exp-sgcheck" | ||
| 16 | |||
| 17 | GDB_BIN=@bindir@/gdb | ||
| 18 | cd ${VALGRIND_LIB}/ptest && ./gdbserver_tests/make_local_links ${GDB_BIN} | ||
| 19 | |||
| 20 | cd ${VALGRIND_LIB}/ptest && ./tests/vg_regtest \ | ||
| 21 | --valgrind=${VALGRIND_BIN} \ | ||
| 22 | --valgrind-lib=${VALGRIND_LIB} \ | ||
| 23 | --yocto-ptest \ | ||
| 24 | gdbserver_tests ${TOOLS} ${EXP_TOOLS} \ | ||
| 25 | 2>&1|tee ${LOG} | ||
| 26 | |||
| 27 | cd ${VALGRIND_LIB}/ptest && \ | ||
| 28 | ./tests/post_regtest_checks $(pwd) \ | ||
| 29 | gdbserver_tests ${TOOLS} ${EXP_TOOLS} \ | ||
| 30 | 2>&1|tee -a ${LOG} | ||
| 14 | 31 | ||
| 15 | passed=`grep PASS: ${LOG}|wc -l` | 32 | passed=`grep PASS: ${LOG}|wc -l` |
| 16 | failed=`grep FAIL: ${LOG}|wc -l` | 33 | failed=`grep FAIL: ${LOG}|wc -l` |
diff --git a/meta/recipes-devtools/valgrind/valgrind_3.15.0.bb b/meta/recipes-devtools/valgrind/valgrind_3.15.0.bb index bf0ca57c93..6d47b6d01d 100644 --- a/meta/recipes-devtools/valgrind/valgrind_3.15.0.bb +++ b/meta/recipes-devtools/valgrind/valgrind_3.15.0.bb | |||
| @@ -110,7 +110,11 @@ RDEPENDS_${PN} += "perl" | |||
| 110 | # redirect functions like strlen. | 110 | # redirect functions like strlen. |
| 111 | RRECOMMENDS_${PN} += "${TCLIBC}-dbg" | 111 | RRECOMMENDS_${PN} += "${TCLIBC}-dbg" |
| 112 | 112 | ||
| 113 | RDEPENDS_${PN}-ptest += " bash file libgomp perl perl-module-file-glob procps sed ${PN}-dbg" | 113 | RDEPENDS_${PN}-ptest += " bash coreutils file \ |
| 114 | gdb libgomp \ | ||
| 115 | perl \ | ||
| 116 | perl-module-getopt-long perl-module-file-basename perl-module-file-glob \ | ||
| 117 | procps sed ${PN}-dbg" | ||
| 114 | RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils" | 118 | RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils" |
| 115 | 119 | ||
| 116 | # One of the tests contains a bogus interpreter path on purpose. | 120 | # One of the tests contains a bogus interpreter path on purpose. |
| @@ -136,12 +140,11 @@ do_install_ptest() { | |||
| 136 | cd $parent_dir | 140 | cd $parent_dir |
| 137 | 141 | ||
| 138 | subdirs=" \ | 142 | subdirs=" \ |
| 143 | .in_place \ | ||
| 139 | cachegrind/tests \ | 144 | cachegrind/tests \ |
| 140 | callgrind/tests \ | 145 | callgrind/tests \ |
| 141 | dhat/tests \ | 146 | dhat/tests \ |
| 142 | drd/tests \ | 147 | drd/tests \ |
| 143 | exp-bbv/tests \ | ||
| 144 | exp-dhat/tests \ | ||
| 145 | gdbserver_tests \ | 148 | gdbserver_tests \ |
| 146 | helgrind/tests \ | 149 | helgrind/tests \ |
| 147 | lackey/tests \ | 150 | lackey/tests \ |
| @@ -149,6 +152,9 @@ do_install_ptest() { | |||
| 149 | memcheck/tests \ | 152 | memcheck/tests \ |
| 150 | none/tests \ | 153 | none/tests \ |
| 151 | tests \ | 154 | tests \ |
| 155 | exp-bbv/tests \ | ||
| 156 | exp-dhat/tests \ | ||
| 157 | exp-sgcheck/tests \ | ||
| 152 | " | 158 | " |
| 153 | # Get the vg test scripts, filters, and expected files | 159 | # Get the vg test scripts, filters, and expected files |
| 154 | for dir in $subdirs ; do | 160 | for dir in $subdirs ; do |
| @@ -156,16 +162,24 @@ do_install_ptest() { | |||
| 156 | done | 162 | done |
| 157 | cd $saved_dir | 163 | cd $saved_dir |
| 158 | done | 164 | done |
| 165 | |||
| 166 | # The scripts reference config.h so add it to the top ptest dir. | ||
| 159 | cp ${B}/config.h ${D}${PTEST_PATH} | 167 | cp ${B}/config.h ${D}${PTEST_PATH} |
| 168 | |||
| 169 | # Add an executable need by none/tests/bigcode | ||
| 160 | mkdir ${D}${PTEST_PATH}/perf | 170 | mkdir ${D}${PTEST_PATH}/perf |
| 161 | cp ${B}/perf/bigcode ${D}${PTEST_PATH}/perf | 171 | cp ${B}/perf/bigcode ${D}${PTEST_PATH}/perf |
| 162 | # needed by memcheck/tests/vcpu_bz2 | 172 | |
| 173 | # Add an executable needed by memcheck/tests/vcpu_bz2 | ||
| 163 | cp ${B}/perf/bz2 ${D}${PTEST_PATH}/perf | 174 | cp ${B}/perf/bz2 ${D}${PTEST_PATH}/perf |
| 164 | 175 | ||
| 165 | # Hide then restore a.c that is used by ann[12].vgtest in call/cachegrind | 176 | # Make the ptest dir look like the top level valgrind src dir |
| 166 | mv ${D}${PTEST_PATH}/cachegrind/tests/a.c ${D}${PTEST_PATH}/cachegrind/tests/a_c | 177 | # This is checked by the gdbserver_tests/make_local_links script |
| 167 | # clean out build artifacts before building the package. Keep config.h for ptests. | 178 | mkdir ${D}${PTEST_PATH}/coregrind |
| 168 | mv ${D}${PTEST_PATH}/config.h ${D}${PTEST_PATH}/config_h | 179 | cp ${B}/coregrind/vgdb ${D}${PTEST_PATH}/coregrind |
| 180 | |||
| 181 | # Add an executable needed by massif tests | ||
| 182 | cp ${B}/massif/ms_print ${D}${PTEST_PATH}/massif/ms_print | ||
| 169 | 183 | ||
| 170 | find ${D}${PTEST_PATH} \ | 184 | find ${D}${PTEST_PATH} \ |
| 171 | \( \ | 185 | \( \ |
| @@ -173,9 +187,9 @@ do_install_ptest() { | |||
| 173 | -o -name "*.o" \ | 187 | -o -name "*.o" \ |
| 174 | \) \ | 188 | \) \ |
| 175 | -exec rm {} \; | 189 | -exec rm {} \; |
| 176 | mv ${D}${PTEST_PATH}/cachegrind/tests/a_c ${D}${PTEST_PATH}/cachegrind/tests/a.c | 190 | |
| 191 | # These files need to be newer so touch them. | ||
| 177 | touch ${D}${PTEST_PATH}/cachegrind/tests/a.c -r ${D}${PTEST_PATH}/cachegrind/tests/cgout-test | 192 | touch ${D}${PTEST_PATH}/cachegrind/tests/a.c -r ${D}${PTEST_PATH}/cachegrind/tests/cgout-test |
| 178 | mv ${D}${PTEST_PATH}/config_h ${D}${PTEST_PATH}/config.h | ||
| 179 | 193 | ||
| 180 | # find *_annotate in ${bindir} for yocto build | 194 | # find *_annotate in ${bindir} for yocto build |
| 181 | sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann1.vgtest | 195 | sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann1.vgtest |
| @@ -184,9 +198,7 @@ do_install_ptest() { | |||
| 184 | sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann1.vgtest | 198 | sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann1.vgtest |
| 185 | sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann2.vgtest | 199 | sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann2.vgtest |
| 186 | 200 | ||
| 187 | # needed by massif tests | ||
| 188 | cp ${B}/massif/ms_print ${D}${PTEST_PATH}/massif/ms_print | ||
| 189 | |||
| 190 | # handle multilib | 201 | # handle multilib |
| 191 | sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest | 202 | sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest |
| 203 | sed -i s:@bindir@:${bindir}:g ${D}${PTEST_PATH}/run-ptest | ||
| 192 | } | 204 | } |
