--- /dev/null
+#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_MAIN
+#define BOOST_TEST_MODULE unit
+
+#include <boost/test/unit_test.hpp>
+#include <boost/assign/list_of.hpp>
+#include <boost/foreach.hpp>
+#include <boost/tuple/tuple.hpp>
+#include "pdns/namespaces.hh"
+#include <pdns/dns.hh>
+#include <pdns/dnsbackend.hh>
+#include <pdns/dnspacket.hh>
+#include <pdns/ueberbackend.hh>
+#include <pdns/ahuexception.hh>
+#include <pdns/logger.hh>
+#include <pdns/arguments.hh>
+#include "pdns/dnsrecords.hh"
+#include <boost/lexical_cast.hpp>
+#include <rapidjson/rapidjson.h>
+#include <rapidjson/document.h>
+#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 );
+
#!/bin/bash
webrick_pid=""
+socat_pid=""
+socat=/usr/bin/socat
function start_web() {
if [ x"$REMOTEBACKEND_HTTP" == "xyes" ]; then
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
./test_remotebackend_pipe
rv=$?
;;
+ test_remotebackend_unix)
+ start_unix
+ ./test_remotebackend_unix
+ rv=$?
+ stop_unix
+ ;;
test_remotebackend_http)
start_web "http"
./test_remotebackend_http