From: Sebastian Harl Date: Wed, 30 Apr 2014 20:58:52 +0000 (+0200) Subject: Merged branch 'master' of git://git.tokkee.org/sysdb. X-Git-Tag: sysdb-0.1.0~59 X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=commitdiff_plain;h=2e614bb5b95f81f5cc2f1f561ba070505c23f461;hp=92d47ccc3490cb245496853f8f6b89e68a9886a3 Merged branch 'master' of git://git.tokkee.org/sysdb. --- diff --git a/.travis.yml b/.travis.yml index 87badb6..f91c75f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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 diff --git a/src/client/sock.c b/src/client/sock.c index 6337ee6..805dc1d 100644 --- a/src/client/sock.c +++ b/src/client/sock.c @@ -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]; diff --git a/src/tools/sysdbd/main.c b/src/tools/sysdbd/main.c index 4af2de1..7dc9f26 100644 --- a/src/tools/sysdbd/main.c +++ b/src/tools/sysdbd/main.c @@ -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 */ diff --git a/t/integration/simple_config.sh b/t/integration/simple_config.sh index 3484351..e6daddc 100755 --- a/t/integration/simple_config.sh +++ b/t/integration/simple_config.sh @@ -33,21 +33,23 @@ set -e source "$( dirname "$0" )/test_lib.sh" -cat < "$TESTDIR/sysdbd.conf" +cat < "$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 < "$TESTDIR/sysdbd.conf" +cat < "$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 + diff --git a/t/integration/simple_query.sh b/t/integration/simple_query.sh index 37c57a1..76b54d6 100755 --- a/t/integration/simple_query.sh +++ b/t/integration/simple_query.sh @@ -33,7 +33,7 @@ set -e source "$( dirname "$0" )/test_lib.sh" -cat < "$TESTDIR/sysdbd.conf" +cat < "$SYSDBD_CONF" Listen "$SOCKET_FILE" PluginDir "$PLUGIN_DIR" Interval 2 @@ -43,16 +43,19 @@ LoadBackend mock_plugin 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 + diff --git a/t/integration/test_lib.sh b/t/integration/test_lib.sh index 85bffb9..a5dece6 100644 --- a/t/integration/test_lib.sh +++ b/t/integration/test_lib.sh @@ -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