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 | } |