diff options
author | Frank Ch. Eigler <fche@redhat.com> | 2021-11-05 22:26:35 -0400 |
---|---|---|
committer | Mark Wielaard <mark@klomp.org> | 2021-11-10 15:47:02 +0100 |
commit | cc913c824f4031c8f499d6b80c91b8ed66dd7c5d (patch) | |
tree | b96e167b65c75d79536fccf219aa11800f261a1f /tests | |
parent | dbd44e96f101a81f387ca6ff46910ab74ed7b1dc (diff) | |
download | elfutils-cc913c824f4031c8f499d6b80c91b8ed66dd7c5d.tar.gz |
PR28430: debuginfod: support --passive mode
Add support for a limited mode for debuginfod that uses a pure
read-only sqlite index. This mode is useful for load spreading based
on naively shared or replicated databases.
Signed-off-by: Frank Ch. Eigler <fche@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ChangeLog | 6 | ||||
-rw-r--r-- | tests/Makefile.am | 4 | ||||
-rwxr-xr-x | tests/run-debuginfod-extraction-passive.sh | 77 |
3 files changed, 86 insertions, 1 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog index db8b13bd..a59cdd51 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,9 @@ +2021-11-05 Frank Ch. Eigler <fche@redhat.com> + + PR28430 + * run-debuginfod-extraction-passive.sh: New test. + * Makefile.am (TESTS, EXTRA_DIST): Add it. + 2021-10-20 John M Mellor-Crummey <johnmc@rice.edu> * nvidia_extended_linemap_libdw.c: New file. diff --git a/tests/Makefile.am b/tests/Makefile.am index 6d3e75af..bfb8b13a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -235,7 +235,8 @@ TESTS += run-debuginfod-dlopen.sh \ run-debuginfod-federation-metrics.sh \ run-debuginfod-percent-escape.sh \ run-debuginfod-x-forwarded-for.sh \ - run-debuginfod-response-headers.sh + run-debuginfod-response-headers.sh \ + run-debuginfod-extraction-passive.sh endif endif @@ -531,6 +532,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ run-debuginfod-archive-test.sh \ run-debuginfod-percent-escape.sh \ run-debuginfod-response-headers.sh \ + run-debuginfod-extraction-passive.sh \ debuginfod-rpms/fedora30/hello2-1.0-2.src.rpm \ debuginfod-rpms/fedora30/hello2-1.0-2.x86_64.rpm \ debuginfod-rpms/fedora30/hello2-debuginfo-1.0-2.x86_64.rpm \ diff --git a/tests/run-debuginfod-extraction-passive.sh b/tests/run-debuginfod-extraction-passive.sh new file mode 100755 index 00000000..c2724b58 --- /dev/null +++ b/tests/run-debuginfod-extraction-passive.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2019-2021 Red Hat, Inc. +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. $srcdir/debuginfod-subr.sh + +# for test case debugging, uncomment: +set -x + +mkdir Z +# This variable is essential and ensures no time-race for claiming ports occurs +# set base to a unique multiple of 100 not used in any other 'run-debuginfod-*' test +base=11000 +get_ports + +DB=${PWD}/.debuginfod.sqlite +tempfiles $DB +export DEBUGINFOD_CACHE_PATH=${PWD}/.client_cache + +cp -rvp ${abs_srcdir}/debuginfod-tars Z +tempfiles Z + +env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -d $DB -Z .tar.xz -Z .tar.bz2=bzcat -p $PORT1 -t0 -g0 -v Z > vlog$PORT1 2>&1 & +PID1=$! +tempfiles vlog$PORT1 +errfiles vlog$PORT1 + +wait_ready $PORT1 'ready' 1 + +# Start second passive server with same database +env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../debuginfod/debuginfod $VERBOSE --passive -d $DB -Z .tar.xz -Z .tar.bz2=bzcat -p $PORT2 -v > vlog$PORT2 2>&1 & +PID2=$! + +tempfiles vlog$PORT2 +errfiles vlog$PORT2 + +wait_ready $PORT2 'ready' 1 + +# Wait for first server to finish indexing +wait_ready $PORT1 'thread_work_total{role="traverse"}' 1 +wait_ready $PORT1 'thread_work_pending{role="scan"}' 0 +wait_ready $PORT1 'thread_busy{role="scan"}' 0 + +# No similar metrics for the passive server +! (curl http://localhost:$PORT2/metrics | egrep 'role="scan"|role="groom"|role="traverse"') + +# Confirm no active threads +! (ps -q $PID2 -e -L -o '%p %c %a' | egrep 'scan|groom|traverse') + +# Do a random lookup via passive server +env LD_LIBRARY_PATH=$ldpath DEBUGINFOD_URLS=http://localhost:$PORT2 ${abs_builddir}/../debuginfod/debuginfod-find debuginfo cee13b2ea505a7f37bd20d271c6bc7e5f8d2dfcb + +tempfiles $DB* + +kill $PID1 +wait $PID1 +PID1=0 + +kill $PID2 +wait $PID2 +PID2=0 + +exit 0 |