From: Mark Wielaard <mark@klomp.org>
To: elfutils-devel@sourceware.org
Subject: Re: [COMMITTED] tests: Cleanup error handling and don't share cache between servers/client
Date: Thu, 9 Sep 2021 23:12:29 +0200 [thread overview]
Message-ID: <YTp4vdnnkTmEkweb@wildebeest.org> (raw)
In-Reply-To: <20210909165810.26719-1-mark@klomp.org>
[-- Attachment #1: Type: text/plain, Size: 972 bytes --]
Hi,
On Thu, Sep 09, 2021 at 06:58:10PM +0200, Mark Wielaard wrote:
> Also the error handler for debuginfod tests wasn't called when a
> command inside a function failed. Since testrun is a function, there
> would be no metrics or error log files listed if the testrun command
> failed. Making it hard to see what went wrong. Fix this by using
> set -o errtrace
So that showed run-debuginfod-fd-prefetch-caches.sh "failed". I
"fixed" that with the attached patch which I just committed. And also
make the cleanup and error handling slightly better (by only doing it
once).
But it doesn't really "fix" run-debuginfod-fd-prefetch-caches.sh. It
now just does nothing. The debuginfod server gets to scan a
non-existing directory and then nothing even tries to query anything
from the server. So nothing ever gets prefetched. And testing for zero
happily succeeds.
Noah, could you take a peek at this testcase and see if you can make
it do something "real"?
Thanks,
Mark
[-- Attachment #2: 0001-tests-Don-t-fail-run-debuginfod-fd-prefetch-caches.s.patch --]
[-- Type: text/x-diff, Size: 3802 bytes --]
From bbf0dc0162e82770f296b2ecda77a2b5bd6f7405 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Thu, 9 Sep 2021 21:51:51 +0200
Subject: [PATCH] tests: Don't fail run-debuginfod-fd-prefetch-caches.sh if
grep -c fails
The set -o errtrace made run-debuginfod-fd-prefetch-caches.sh
fail. On some systems. Add set -o functrace to make it fail consistently.
The failure is because the grep -c for in the log file fails (it
returns zero). Fix this by using || true. But this is only a
workaround. It makes the test pass, but only because all values are
always zero. The test doesn't currently test anything.
Also make sure that err and cleanup are only executed once.
Signed-off-by: Mark Wielaard <mark@klomp.org>
---
tests/ChangeLog | 7 +++++++
tests/debuginfod-subr.sh | 7 +++++++
tests/run-debuginfod-fd-prefetch-caches.sh | 12 ++++++++----
3 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 05b31fd8..caee93d3 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,10 @@
+2021-09-09 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod-subr.sh: set -o functrace.
+ (cleanup): Disable trap 0.
+ (err): Disable trap ERR.
+ * run-debuginfod-fd-prefetch-caches.sh: Use || true when grep -c fails.
+
2021-09-09 Mark Wielaard <mark@klomp.org>
* debuginfod-subr.sh: set -o errtrace.
diff --git a/tests/debuginfod-subr.sh b/tests/debuginfod-subr.sh
index c21b7b8a..59033f35 100755
--- a/tests/debuginfod-subr.sh
+++ b/tests/debuginfod-subr.sh
@@ -17,6 +17,7 @@
# sourced from run-debuginfod-*.sh tests (must be bash scripts)
# We trap ERR and like commands that fail in function to also trap
+set -o functrace
set -o errtrace
. $srcdir/test-subr.sh # includes set -e
@@ -30,6 +31,9 @@ echo "zstd=$zstd bsdtar=`bsdtar --version`"
cleanup()
{
+ # No more cleanups after this cleanup
+ trap - 0
+
if [ $PID1 -ne 0 ]; then kill $PID1 || : ; wait $PID1 || :; fi
if [ $PID2 -ne 0 ]; then kill $PID2 || : ; wait $PID2 || :; fi
rm -rf F R D L Z ${PWD}/foobar ${PWD}/mocktree ${PWD}/.client_cache* ${PWD}/tmp*
@@ -41,6 +45,9 @@ trap cleanup 0
errfiles_list=
err() {
+ # Don't trap any new errors from now on
+ trap - ERR
+
echo ERROR REPORTS
for port in $PORT1 $PORT2
do
diff --git a/tests/run-debuginfod-fd-prefetch-caches.sh b/tests/run-debuginfod-fd-prefetch-caches.sh
index 61fee9e9..7fbf7b20 100755
--- a/tests/run-debuginfod-fd-prefetch-caches.sh
+++ b/tests/run-debuginfod-fd-prefetch-caches.sh
@@ -51,10 +51,14 @@ grep 'prefetch fds ' vlog$PORT1 #$PREFETCH_FDS
grep 'prefetch mbs ' vlog$PORT1 #$PREFETCH_MBS
# search the vlog to find what metric counts should be and check the correct metrics
# were incrimented
-wait_ready $PORT1 'fdcache_op_count{op="enqueue"}' $( grep -c 'interned.*front=1' vlog$PORT1 )
-wait_ready $PORT1 'fdcache_op_count{op="evict"}' $( grep -c 'evicted a=.*' vlog$PORT1 )
-wait_ready $PORT1 'fdcache_op_count{op="prefetch_enqueue"}' $( grep -c 'interned.*front=0' vlog$PORT1 )
-wait_ready $PORT1 'fdcache_op_count{op="prefetch_evict"}' $( grep -c 'evicted from prefetch a=.*front=0' vlog$PORT1 || true )
+enqueue_nr=$(grep -c 'interned.*front=1' vlog$PORT1 || true)
+wait_ready $PORT1 'fdcache_op_count{op="enqueue"}' $enqueue_nr
+evict_nr=$(grep -c 'evicted a=.*' vlog$PORT1 || true)
+wait_ready $PORT1 'fdcache_op_count{op="evict"}' $evict_nr
+prefetch_enqueue_nr=$(grep -c 'interned.*front=0' vlog$PORT1 || true)
+wait_ready $PORT1 'fdcache_op_count{op="prefetch_enqueue"}' $prefetch_enqueue_nr
+prefetch_evict_nr=$(grep -c 'evicted from prefetch a=.*front=0' vlog$PORT1 || true)
+wait_ready $PORT1 'fdcache_op_count{op="prefetch_evict"}' $prefetch_evict_nr
kill $PID1
wait $PID1
--
2.32.0
prev parent reply other threads:[~2021-09-09 21:12 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-09 16:58 Mark Wielaard
2021-09-09 21:12 ` Mark Wielaard [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YTp4vdnnkTmEkweb@wildebeest.org \
--to=mark@klomp.org \
--cc=elfutils-devel@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).