From ebc29bddd5cbc5cad23cc9b1095d842f55ece5e0 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 6 Sep 2018 11:09:16 +0100 Subject: [PATCH] Try to prevent encode server test crashing in valgrind. --- src/lib/encode_server.cc | 7 +++++++ src/lib/server.cc | 5 +++-- src/lib/server.h | 3 ++- test/client_server_test.cc | 2 +- wscript | 1 + 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/lib/encode_server.cc b/src/lib/encode_server.cc index 26ef45d60..2603732c8 100644 --- a/src/lib/encode_server.cc +++ b/src/lib/encode_server.cc @@ -41,6 +41,9 @@ #include #include #include +#ifdef HAVE_VALGRIND_H +#include +#endif #include #include #include @@ -68,7 +71,11 @@ using dcp::Data; using dcp::raw_convert; EncodeServer::EncodeServer (shared_ptr log, bool verbose, int num_threads) +#if !defined(RUNNING_ON_VALGRIND) || RUNNING_ON_VALGRIND == 0 : Server (ENCODE_FRAME_PORT) +#else + : Server (ENCODE_FRAME_PORT, 2400) +#endif , _log (log) , _verbose (verbose) , _num_threads (num_threads) diff --git a/src/lib/server.cc b/src/lib/server.cc index 722b1c811..9a633c861 100644 --- a/src/lib/server.cc +++ b/src/lib/server.cc @@ -25,9 +25,10 @@ using boost::shared_ptr; -Server::Server (int port) +Server::Server (int port, int timeout) : _terminate (false) , _acceptor (_io_service, boost::asio::ip::tcp::endpoint (boost::asio::ip::tcp::v4(), port)) + , _timeout (timeout) { } @@ -60,7 +61,7 @@ Server::start_accept () } } - shared_ptr socket (new Socket); + shared_ptr socket (new Socket(_timeout)); _acceptor.async_accept (socket->socket (), boost::bind (&Server::handle_accept, this, socket, boost::asio::placeholders::error)); } diff --git a/src/lib/server.h b/src/lib/server.h index 795227523..59722274e 100644 --- a/src/lib/server.h +++ b/src/lib/server.h @@ -31,7 +31,7 @@ class Socket; class Server : public boost::noncopyable { public: - explicit Server (int port); + explicit Server (int port, int timeout = 30); virtual ~Server (); virtual void run (); @@ -49,6 +49,7 @@ private: boost::asio::io_service _io_service; boost::asio::ip::tcp::acceptor _acceptor; + int _timeout; }; #endif diff --git a/test/client_server_test.cc b/test/client_server_test.cc index 592a7e294..3ab1c36e1 100644 --- a/test/client_server_test.cc +++ b/test/client_server_test.cc @@ -50,7 +50,7 @@ void do_remote_encode (shared_ptr frame, EncodeServerDescription description, Data locally_encoded) { Data remotely_encoded; - BOOST_REQUIRE_NO_THROW (remotely_encoded = frame->encode_remotely (description, 60)); + BOOST_REQUIRE_NO_THROW (remotely_encoded = frame->encode_remotely (description, 1200)); BOOST_REQUIRE_EQUAL (locally_encoded.size(), remotely_encoded.size()); BOOST_CHECK_EQUAL (memcmp (locally_encoded.data().get(), remotely_encoded.data().get(), locally_encoded.size()), 0); diff --git a/wscript b/wscript index 936e325e7..d6637f3f8 100644 --- a/wscript +++ b/wscript @@ -564,6 +564,7 @@ def configure(conf): # Other stuff conf.find_program('msgfmt', var='MSGFMT') + conf.check(header_name='valgrind/memcheck.h', mandatory=False) datadir = conf.env.DATADIR if not datadir: -- 2.30.2