diff --git a/configure.ac b/configure.ac index b1d774f756..2718788f2e 100644 --- a/configure.ac +++ b/configure.ac @@ -473,6 +473,7 @@ AC_OUTPUT([src/bin/cfgmgr/b10-cfgmgr.py src/lib/python/bind10_config.py src/lib/dns/tests/testdata/gen-wiredata.py src/lib/cc/session_config.h.pre + src/lib/cc/session_unittests_config.h ], [ chmod +x src/bin/cmdctl/run_b10-cmdctl.sh chmod +x src/bin/xfrin/run_b10-xfrin.sh diff --git a/src/bin/auth/tests/auth_srv_unittest.cc b/src/bin/auth/tests/auth_srv_unittest.cc index 25b9f2ff7c..5a02e1b9e5 100644 --- a/src/bin/auth/tests/auth_srv_unittest.cc +++ b/src/bin/auth/tests/auth_srv_unittest.cc @@ -94,6 +94,8 @@ private: virtual void startRead(boost::function read_callback); virtual int reply(ElementPtr& envelope, ElementPtr& newmsg); virtual bool hasQueuedMsgs(); + virtual void setTimeout(size_t timeout UNUSED_PARAM) {}; + virtual size_t getTimeout() { return 0; }; void setMessage(ElementPtr msg) { msg_ = msg; } void disableSend() { send_ok_ = false; } diff --git a/src/lib/cc/session_unittests.cc b/src/lib/cc/session_unittests.cc index 1e0fbb8d20..4a7dd36028 100644 --- a/src/lib/cc/session_unittests.cc +++ b/src/lib/cc/session_unittests.cc @@ -30,6 +30,8 @@ #include #include +#include "session_unittests_config.h" + using namespace isc::cc; TEST(AsioSession, establish) { @@ -109,6 +111,10 @@ private: }; */ +// This class sets up a domain socket for the session to connect to +// it will impersonate the msgq a tiny bit (if setSendLname() has +// been called, it will send an 'answer' to the lname query that is +// sent in the initialization of Session objects) class TestDomainSocket { public: @@ -124,6 +130,7 @@ public: ~TestDomainSocket() { socket_.close(); + ::unlink(BIND10_TEST_SOCKET_FILE); } void @@ -169,40 +176,39 @@ private: TEST(Session, timeout_on_connect) { asio::io_service my_io_service; - ::unlink("/tmp/mysock.sock"); - TestDomainSocket tds(my_io_service, "/tmp/mysock.sock"); + ::unlink(BIND10_TEST_SOCKET_FILE); + TestDomainSocket tds(my_io_service, BIND10_TEST_SOCKET_FILE); Session sess(my_io_service); // set to a short timeout so the test doesn't take too long EXPECT_EQ(4000, sess.getTimeout()); sess.setTimeout(100); EXPECT_EQ(100, sess.getTimeout()); // no answer, should timeout - EXPECT_THROW(sess.establish("/tmp/mysock.sock"), isc::cc::SessionTimeout); + EXPECT_THROW(sess.establish(BIND10_TEST_SOCKET_FILE), isc::cc::SessionTimeout); } TEST(Session, connect_ok) { asio::io_service my_io_service; - ::unlink("/tmp/mysock.sock"); - TestDomainSocket tds(my_io_service, "/tmp/mysock.sock"); + ::unlink(BIND10_TEST_SOCKET_FILE); + TestDomainSocket tds(my_io_service, BIND10_TEST_SOCKET_FILE); tds.setSendLname(); Session sess(my_io_service); - sess.establish("/tmp/mysock.sock"); + sess.establish(BIND10_TEST_SOCKET_FILE); } -TEST(Session, connect_ok2) { +TEST(Session, connect_ok_connection_reset) { asio::io_service my_io_service; - ::unlink("/tmp/mysock.sock"); + ::unlink(BIND10_TEST_SOCKET_FILE); Session sess(my_io_service); - // Create a fake socket in a smaller scope, so we can + // Create a fake msgq in a smaller scope, so we can // connect the session to it, but later calls on the // underlying socket will fail { - TestDomainSocket tds(my_io_service, "/tmp/mysock.sock"); + TestDomainSocket tds(my_io_service, BIND10_TEST_SOCKET_FILE); tds.setSendLname(); - - sess.establish("/tmp/mysock.sock"); + sess.establish(BIND10_TEST_SOCKET_FILE); } isc::data::ElementPtr env, msg; diff --git a/src/lib/cc/session_unittests_config.h.in b/src/lib/cc/session_unittests_config.h.in new file mode 100644 index 0000000000..e4b7dd7365 --- /dev/null +++ b/src/lib/cc/session_unittests_config.h.in @@ -0,0 +1,2 @@ +#define BIND10_TEST_SOCKET_FILE "@builddir@/test_socket.sock" + diff --git a/src/lib/config/tests/fake_session.h b/src/lib/config/tests/fake_session.h index 4a06a585af..108917ddad 100644 --- a/src/lib/config/tests/fake_session.h +++ b/src/lib/config/tests/fake_session.h @@ -72,6 +72,8 @@ public: virtual int reply(isc::data::ElementPtr& envelope, isc::data::ElementPtr& newmsg); virtual bool hasQueuedMsgs(); + virtual void setTimeout(size_t milliseconds) {}; + virtual size_t getTimeout() { return 0; }; isc::data::ElementPtr getFirstMessage(std::string& group, std::string& to); void addMessage(isc::data::ElementPtr, const std::string& group, const std::string& to);