From: Aki Tuomi Date: Tue, 9 Jul 2013 07:29:09 +0000 (+0300) Subject: Test suite for unix connector X-Git-Tag: rec-3.6.0-rc1~579^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=663fedf90107a5d2b0c394a637a8703496b49b87;p=thirdparty%2Fpdns.git Test suite for unix connector --- diff --git a/modules/remotebackend/.gitignore b/modules/remotebackend/.gitignore index c14f877c6a..572d122258 100644 --- a/modules/remotebackend/.gitignore +++ b/modules/remotebackend/.gitignore @@ -1,5 +1,6 @@ remotebackend-access.log test_remotebackend_http test_remotebackend_pipe +test_remotebackend_unix test_remotebackend_json test_remotebackend_post diff --git a/modules/remotebackend/test-remotebackend-unix.cc b/modules/remotebackend/test-remotebackend-unix.cc new file mode 100644 index 0000000000..823da3be39 --- /dev/null +++ b/modules/remotebackend/test-remotebackend-unix.cc @@ -0,0 +1,65 @@ +#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_MAIN +#define BOOST_TEST_MODULE unit + +#include +#include +#include +#include +#include "pdns/namespaces.hh" +#include +#include +#include +#include +#include +#include +#include +#include "pdns/dnsrecords.hh" +#include +#include +#include +#include "pdns/json.hh" +#include "pdns/statbag.hh" +#include "pdns/packetcache.hh" + +StatBag S; +PacketCache PC; +ArgvMap &arg() +{ + static ArgvMap arg; + return arg; +}; + +class RemoteLoader +{ + public: + RemoteLoader(); +}; + +DNSBackend *be; + +struct RemotebackendSetup { + RemotebackendSetup() { + be = 0; + try { + // setup minimum arguments + ::arg().set("module-dir")=""; + new RemoteLoader(); + BackendMakers().launch("remote"); + // then get us a instance of it + ::arg().set("remote-connection-string")="unix:path=/tmp/remotebackend.sock"; + ::arg().set("remote-dnssec")="yes"; + be = BackendMakers().all()[0]; + // load few record types to help out + SOARecordContent::report(); + NSRecordContent::report(); + ARecordContent::report(); + } catch (AhuException &ex) { + BOOST_TEST_MESSAGE("Cannot start remotebackend: " << ex.reason ); + }; + } + ~RemotebackendSetup() { } +}; + +BOOST_GLOBAL_FIXTURE( RemotebackendSetup ); + diff --git a/modules/remotebackend/testrunner.sh b/modules/remotebackend/testrunner.sh index 3238e7fb99..aefee74dd4 100755 --- a/modules/remotebackend/testrunner.sh +++ b/modules/remotebackend/testrunner.sh @@ -1,6 +1,8 @@ #!/bin/bash webrick_pid="" +socat_pid="" +socat=/usr/bin/socat function start_web() { if [ x"$REMOTEBACKEND_HTTP" == "xyes" ]; then @@ -30,6 +32,34 @@ function stop_web() { fi } +function start_unix() { + if [ ! -x $socat ]; then + echo "Cannot find socat - cannot test (non-fatal)" + exit 0 + fi + + $socat unix-listen:/tmp/remotebackend.sock exec:./unittest_pipe.rb & + socat_pid=$! +} + +function stop_unix() { + if [ ! -z "$socat_pid" ]; then + kill -TERM $socat_pid 2>/dev/null + if [ $? -ne 0 ]; then + # already dead + return + fi + # wait a moment for it to die + i=0 + while [ $i -lt 5 ]; do + sleep 1 + kill -0 $socat_pid 2>/dev/null + if [ $? -ne 0 ]; then break; fi + let i=i+1 + done + fi +} + mode=`basename "$1"` case "$mode" in @@ -37,6 +67,12 @@ case "$mode" in ./test_remotebackend_pipe rv=$? ;; + test_remotebackend_unix) + start_unix + ./test_remotebackend_unix + rv=$? + stop_unix + ;; test_remotebackend_http) start_web "http" ./test_remotebackend_http