X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=t%2Fintegration%2Ftest_lib.sh;h=78aa3be2fb81e7d72c3d794dc3fb52c41385d84d;hb=dc7d88e992d19870cbec25244e0f1d4ddc0541b7;hp=85bffb9401cd2844605f83e757163459846721fe;hpb=bb40de500bfe57d044ed45ed66e5d5c38f0818ba;p=sysdb.git diff --git a/t/integration/test_lib.sh b/t/integration/test_lib.sh index 85bffb9..78aa3be 100644 --- a/t/integration/test_lib.sh +++ b/t/integration/test_lib.sh @@ -29,19 +29,102 @@ # TOP_SRCDIR="$( readlink -f "$( dirname "$0" )/../.." )" +TOP_BUILDDIR="$TOP_SRCDIR" +if test -n "$VPATH"; then + # We'll have to guess. + if test -d ../t; then + TOP_BUILDDIR="$( readlink -f .. )" + else if test -d t; then + TOP_BUILDDIR="$( readlink -f . )" + fi; fi +fi + TESTDIR="$( mktemp -d )" -trap "rm -rf '$TESTDIR'" EXIT +trap "rm -rf '$TESTDIR'; test -z \$SYSDBD_PID || kill \$SYSDBD_PID" EXIT mkdir "$TESTDIR/backend" -cp "$TOP_SRCDIR/t/integration/.libs/mock_plugin.so" "$TESTDIR/backend" +cp "$TOP_BUILDDIR/t/integration/.libs/mock_timeseries.so" "$TESTDIR" +cp "$TOP_BUILDDIR/t/integration/.libs/mock_plugin.so" "$TESTDIR/backend" + +mkdir "$TESTDIR/store" +cp "$TOP_BUILDDIR/src/plugins/store/.libs/memory.so" "$TESTDIR/store" +cp "$TOP_BUILDDIR/src/plugins/store/.libs/network.so" "$TESTDIR/store" + +cp "$TOP_BUILDDIR"/src/sysdb "$TESTDIR" +cp "$TOP_BUILDDIR"/src/sysdbd "$TESTDIR" + +MEMCHECK="valgrind --quiet --tool=memcheck --error-exitcode=1" +MEMCHECK="$MEMCHECK --trace-children=yes" +MEMCHECK="$MEMCHECK --track-fds=yes" +MEMCHECK="$MEMCHECK --leak-check=full" +MEMCHECK="$MEMCHECK --suppressions=$TOP_SRCDIR/t/valgrind.suppress" +MEMCHECK="$MEMCHECK --gen-suppressions=all" + +SYSDBD_CONF="$TESTDIR/sysdbd.conf" SOCKET_FILE="$TESTDIR/sock" PLUGIN_DIR="$TESTDIR" +CA_KEY="" +CA_CERT="" +SERVER_KEY="" +SERVER_CERT="" +CLIENT_KEY="" +CLIENT_CERT="" + +SYSDB_USER="$( id -un )" + +function run_sysdb() { + $MEMCHECK "$TESTDIR/sysdb" -U $SYSDB_USER "$@" +} + +function run_sysdb_nouser() { + $MEMCHECK "$TESTDIR/sysdb" "$@" +} + +function run_sysdbd() { + $MEMCHECK "$TESTDIR/sysdbd" "$@" & + SYSDBD_PID=$! +} + +function run_sysdbd_foreground() { + $MEMCHECK "$TESTDIR/sysdbd" "$@" +} + +function stop_sysdbd() { + if test -z "$SYSDBD_PID"; then + echo "Cannot stop sysdbd; PID unknown" >&2 + exit 1 + fi + kill $SYSDBD_PID + wait $SYSDBD_PID + SYSDBD_PID='' +} + function wait_for_sysdbd() { + local socket="$SOCKET_FILE" + if test -n "$1"; then + socket="$1" + fi + local i + for (( i=0; i<10; i++ )); do + if test -e "$socket"; then + break + fi + sleep 1 + done + if test $i -eq 10; then + echo 'SysDBd did not start within 10 seconds' >&2 + exit 1 + fi +} + +function wait_for_sysdbd_tcp() { + local host="$1" + local port="$2" local i for (( i=0; i<10; i++ )); do - if test -e "$SOCKET_FILE"; then + if echo | nc "$host" "$port"; then break fi sleep 1 @@ -52,3 +135,30 @@ function wait_for_sysdbd() { fi } +function setup_ssl() { + CA_KEY="$TESTDIR/cacert.key" + CA_CERT="$TESTDIR/cacert.cert" + openssl genrsa -out "$CA_KEY" 2048 + openssl req -batch -subj '/CN=Some CA' \ + -x509 -new -key "$CA_KEY" -out "$CA_CERT" -days 1 + + SERVER_KEY="$TESTDIR/server.key" + SERVER_CERT="$TESTDIR/server.cert" + openssl genrsa -out "$SERVER_KEY" 2048 + openssl req -batch -subj '/CN=localhost' \ + -new -out "${SERVER_CERT}.csr" -key "$SERVER_KEY" + openssl x509 -req -in "${SERVER_CERT}.csr" -out "$SERVER_CERT" -days 1 \ + -CAkey "$CA_KEY" -CA "$CA_CERT" -CAcreateserial \ + -CAserial ${TESTDIR}/serial + + CLIENT_KEY="$TESTDIR/client.key" + CLIENT_CERT="$TESTDIR/client.cert" + openssl genrsa -out "$CLIENT_KEY" 2048 + openssl req -batch -subj "/CN=$SYSDB_USER" \ + -new -out "${CLIENT_CERT}.csr" -key "$CLIENT_KEY" + openssl x509 -req -in "${CLIENT_CERT}.csr" -out "$CLIENT_CERT" -days 1 \ + -CAkey "$CA_KEY" -CA "$CA_CERT" -CAcreateserial \ + -CAserial ${TESTDIR}/serial +} + +# vim: set tw=78 sw=4 ts=4 noexpandtab :