X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fsocket_test.cc;h=64c15480841513ed6a90f7ed5410250e89926cb9;hb=723779c27ffdafe27b3f23840eea4777ae838a83;hp=562d106396bb193ff8beec53b6280938a4b9c973;hpb=3f2bec7b6ee2f27b2de056cdc0137744d2e9e253;p=dcpomatic.git diff --git a/test/socket_test.cc b/test/socket_test.cc index 562d10639..64c154808 100644 --- a/test/socket_test.cc +++ b/test/socket_test.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2020 Carl Hetherington + Copyright (C) 2020-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,17 +18,22 @@ */ -#include "lib/server.h" + #include "lib/dcpomatic_socket.h" -#include +#include "lib/server.h" +#include #include -#include +#include #include #include -using boost::shared_ptr; + +using std::make_shared; +using std::shared_ptr; +using std::string; using boost::bind; + #define TEST_SERVER_PORT 9142 #define TEST_SERVER_BUFFER_LENGTH 1024 @@ -48,8 +53,11 @@ public: ~TestServer () { + boost::this_thread::disable_interruption dis; stop (); - _thread.join (); + try { + _thread.join (); + } catch (...) {} delete[] _buffer; } @@ -76,7 +84,7 @@ public: } private: - void handle (boost::shared_ptr socket) + void handle (std::shared_ptr socket) { boost::mutex::scoped_lock lm (_mutex); BOOST_REQUIRE (_size); @@ -109,14 +117,22 @@ send (shared_ptr socket, char const* message) socket->write (reinterpret_cast(message), strlen(message) + 1); } + /** Basic test to see if Socket can send and receive data */ BOOST_AUTO_TEST_CASE (socket_basic_test) { + using boost::asio::ip::tcp; + TestServer server(false); server.expect (13); - shared_ptr socket (new Socket); - socket->connect (boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), TEST_SERVER_PORT)); + boost::asio::io_service io_service; + tcp::resolver resolver (io_service); + tcp::resolver::query query ("127.0.0.1", dcp::raw_convert(TEST_SERVER_PORT)); + tcp::resolver::iterator endpoint_iterator = resolver.resolve (query); + + auto socket = make_shared(); + socket->connect (*endpoint_iterator); send (socket, "Hello world!"); server.await (); @@ -127,11 +143,18 @@ BOOST_AUTO_TEST_CASE (socket_basic_test) /** Check that the socket "auto-digest" creation works */ BOOST_AUTO_TEST_CASE (socket_digest_test1) { + using boost::asio::ip::tcp; + TestServer server(false); server.expect (13 + 16); + boost::asio::io_service io_service; + tcp::resolver resolver (io_service); + tcp::resolver::query query ("127.0.0.1", dcp::raw_convert(TEST_SERVER_PORT)); + tcp::resolver::iterator endpoint_iterator = resolver.resolve (query); + shared_ptr socket(new Socket); - socket->connect (boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), TEST_SERVER_PORT)); + socket->connect (*endpoint_iterator); { Socket::WriteDigestScope ds(socket); send (socket, "Hello world!"); @@ -149,11 +172,18 @@ BOOST_AUTO_TEST_CASE (socket_digest_test1) /** Check that the socket "auto-digest" round-trip works */ BOOST_AUTO_TEST_CASE (socket_digest_test2) { + using boost::asio::ip::tcp; + TestServer server(true); server.expect (13); + boost::asio::io_service io_service; + tcp::resolver resolver (io_service); + tcp::resolver::query query ("127.0.0.1", dcp::raw_convert(TEST_SERVER_PORT)); + tcp::resolver::iterator endpoint_iterator = resolver.resolve (query); + shared_ptr socket(new Socket); - socket->connect (boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), TEST_SERVER_PORT)); + socket->connect (*endpoint_iterator); { Socket::WriteDigestScope ds(socket); send (socket, "Hello world!");