author | Sebastian Harl <sh@tokkee.org> | |
Wed, 30 Apr 2014 20:58:52 +0000 (22:58 +0200) | ||
committer | Sebastian Harl <sh@tokkee.org> | |
Wed, 30 Apr 2014 20:58:52 +0000 (22:58 +0200) |
diff --git a/.travis.yml b/.travis.yml
index 87badb67b5e6da759f1a72b8eb031f8740e321f5..f91c75f5387db8e0308d497b3696693a76a0312e 100644 (file)
--- a/.travis.yml
+++ b/.travis.yml
install:
- sudo apt-get install -qq check flex bison libtool libltdl-dev
- sudo apt-get install -qq libdbi-dev libedit-dev libreadline-dev
+ - sudo apt-get install -qq valgrind chrpath
- sudo pip install cpp-coveralls
- pip show cpp-coveralls
script: ./t/cibuild.sh
diff --git a/src/client/sock.c b/src/client/sock.c
index 6337ee6bf8cd8bf71611a42469b55527b7b84ff8..805dc1d1ce5350da8d1aaced43d9bce53df1d9cd 100644 (file)
--- a/src/client/sock.c
+++ b/src/client/sock.c
buf = sdb_strbuf_create(64);
rstatus = 0;
status = sdb_client_recv(client, &rstatus, buf);
- if ((status > 0) && (rstatus == CONNECTION_OK))
+ if ((status > 0) && (rstatus == CONNECTION_OK)) {
+ sdb_strbuf_destroy(buf);
return 0;
+ }
if (status < 0) {
char errbuf[1024];
index 4af2de13715ff1f59189ef0e9e4cab90e408b253..7dc9f26ba4b33bff7ab41a67996bedb34aa1a824 100644 (file)
--- a/src/tools/sysdbd/main.c
+++ b/src/tools/sysdbd/main.c
}
}
+ /* clean up in case we exited the loop on error */
+ pthread_kill(backend_thread, SIGINT);
+ pthread_join(backend_thread, NULL);
+
sdb_fe_sock_destroy(sock);
return status;
} /* main_loop */
index 3484351420e48dce24d491717b467b0bc679b57e..e6daddcf218ead9688be7aab56d1c95e28b5941b 100755 (executable)
source "$( dirname "$0" )/test_lib.sh"
-cat <<EOF > "$TESTDIR/sysdbd.conf"
+cat <<EOF > "$SYSDBD_CONF"
Listen "invalid://address"
EOF
-if "$TOP_SRCDIR/src/sysdbd" -D -C "$TESTDIR/sysdbd.conf"; then
+if $SYSDBD -D -C "$SYSDBD_CONF"; then
echo 'SysDBd accepted invalid listen address; expected: failure' >&2
exit 1
fi
-cat <<EOF > "$TESTDIR/sysdbd.conf"
+cat <<EOF > "$SYSDBD_CONF"
Listen "$SOCKET_FILE"
EOF
-"$TOP_SRCDIR/src/sysdbd" -D -C "$TESTDIR/sysdbd.conf" &
+$SYSDBD -D -C "$SYSDBD_CONF" &
sysdbd_pid=$!
wait_for_sysdbd
-kill $!
+kill $sysdbd_pid
+wait $sysdbd_pid
+
index 37c57a1b4221387404ce2ddb9002cfc1a70e8adf..76b54d66e840f8333b51bebaff7ec2eb64fc7cbf 100755 (executable)
source "$( dirname "$0" )/test_lib.sh"
-cat <<EOF > "$TESTDIR/sysdbd.conf"
+cat <<EOF > "$SYSDBD_CONF"
Listen "$SOCKET_FILE"
PluginDir "$PLUGIN_DIR"
Interval 2
</Backend>
EOF
-"$TOP_SRCDIR/src/sysdbd" -D -C "$TESTDIR/sysdbd.conf" &
+$SYSDBD -D -C "$SYSDBD_CONF" &
sysdbd_pid=$!
wait_for_sysdbd
sleep 3
-"$TOP_SRCDIR/src/sysdb" -H "$SOCKET_FILE" -c LIST \
+output="$( $SYSDB -H "$SOCKET_FILE" -c LIST )"
+echo "$output" \
| grep -F '"host1.example.com"' \
| grep -F "host2.example.com" \
| grep -F "localhost" \
| grep -F "other.host.name" \
| grep -F "some.host.name"
-kill $!
+kill $sysdbd_pid
+wait $sysdbd_pid
+
index 85bffb9401cd2844605f83e757163459846721fe..a5dece69f64986c16493e98ffd2721314ae68558 100644 (file)
mkdir "$TESTDIR/backend"
cp "$TOP_SRCDIR/t/integration/.libs/mock_plugin.so" "$TESTDIR/backend"
+cp "$TOP_SRCDIR"/src/.libs/sysdb "$TESTDIR"
+cp "$TOP_SRCDIR"/src/.libs/sysdbd "$TESTDIR"
+cp "$TOP_SRCDIR"/src/.libs/libsysdb*.so* "$TESTDIR"
+chrpath -r "$TESTDIR" "$TESTDIR/sysdb" > /dev/null
+chrpath -r "$TESTDIR" "$TESTDIR/sysdbd" > /dev/null
+
+MEMCHECK="valgrind --quiet --tool=memcheck --error-exitcode=1"
+MEMCHECK="$MEMCHECK --trace-children=yes"
+MEMCHECK="$MEMCHECK --track-fds=yes"
+MEMCHECK="$MEMCHECK --leak-check=full"
+
+SYSDBD_CONF="$TESTDIR/sysdbd.conf"
+
SOCKET_FILE="$TESTDIR/sock"
PLUGIN_DIR="$TESTDIR"
+SYSDB="$MEMCHECK $TESTDIR/sysdb"
+SYSDBD="$MEMCHECK $TESTDIR/sysdbd"
+
function wait_for_sysdbd() {
local i
for (( i=0; i<10; i++ )); do