Code

Merged branch 'master' of git://git.tokkee.org/sysdb.
authorSebastian Harl <sh@tokkee.org>
Wed, 30 Apr 2014 20:58:52 +0000 (22:58 +0200)
committerSebastian Harl <sh@tokkee.org>
Wed, 30 Apr 2014 20:58:52 +0000 (22:58 +0200)
.travis.yml
src/client/sock.c
src/tools/sysdbd/main.c
t/integration/simple_config.sh
t/integration/simple_query.sh
t/integration/test_lib.sh

index 87badb67b5e6da759f1a72b8eb031f8740e321f5..f91c75f5387db8e0308d497b3696693a76a0312e 100644 (file)
@@ -11,6 +11,7 @@ before_install:
 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
index 6337ee6bf8cd8bf71611a42469b55527b7b84ff8..805dc1d1ce5350da8d1aaced43d9bce53df1d9cd 100644 (file)
@@ -179,8 +179,10 @@ sdb_client_connect(sdb_client_t *client, const char *username)
        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)
@@ -292,6 +292,10 @@ main_loop(void)
                }
        }
 
+       /* 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)
@@ -33,21 +33,23 @@ set -e
 
 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)
@@ -33,7 +33,7 @@ set -e
 
 source "$( dirname "$0" )/test_lib.sh"
 
-cat <<EOF > "$TESTDIR/sysdbd.conf"
+cat <<EOF > "$SYSDBD_CONF"
 Listen "$SOCKET_FILE"
 PluginDir "$PLUGIN_DIR"
 Interval 2
@@ -43,16 +43,19 @@ LoadBackend mock_plugin
 </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)
@@ -35,9 +35,25 @@ trap "rm -rf '$TESTDIR'" EXIT
 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