Code

build system: Fix VPATH (out-of-tree) builds.
[sysdb.git] / t / integration / test_lib.sh
index 9f501f6c3f7ccbf587c6637f6560074102486d87..fe4efe3c1945ac9626017ff931a3ec6629d28d8c 100644 (file)
 #
 
 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'; test -z \$SYSDBD_PID || kill \$SYSDBD_PID" EXIT
 
 mkdir "$TESTDIR/backend"
-cp "$TOP_SRCDIR/t/integration/.libs/mock_timeseries.so" "$TESTDIR"
-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_SRCDIR/src/plugins/store/.libs/network.so" "$TESTDIR/store"
+cp "$TOP_BUILDDIR/src/plugins/store/.libs/network.so" "$TESTDIR/store"
 
-cp "$TOP_SRCDIR"/src/sysdb "$TESTDIR"
-cp "$TOP_SRCDIR"/src/sysdbd "$TESTDIR"
+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"
@@ -54,6 +64,13 @@ 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() {
@@ -101,4 +118,46 @@ function wait_for_sysdbd() {
        fi
 }
 
+function wait_for_sysdbd_tcp() {
+       local host="$1"
+       local port="$2"
+       local i
+       for (( i=0; i<10; i++ )); do
+               if echo | nc "$host" "$port"; 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 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 :