Try to prevent encode server test crashing in valgrind.
authorCarl Hetherington <cth@carlh.net>
Thu, 6 Sep 2018 10:09:16 +0000 (11:09 +0100)
committerCarl Hetherington <cth@carlh.net>
Thu, 6 Sep 2018 10:09:16 +0000 (11:09 +0100)
src/lib/encode_server.cc
src/lib/server.cc
src/lib/server.h
test/client_server_test.cc
wscript

index 26ef45d60786115e51c166b615c10a116c74e0d7..2603732c890041ff45fb6a0b356d640427e74aca 100644 (file)
@@ -41,6 +41,9 @@
 #include <boost/algorithm/string.hpp>
 #include <boost/scoped_array.hpp>
 #include <boost/foreach.hpp>
 #include <boost/algorithm/string.hpp>
 #include <boost/scoped_array.hpp>
 #include <boost/foreach.hpp>
+#ifdef HAVE_VALGRIND_H
+#include <valgrind/memcheck.h>
+#endif
 #include <string>
 #include <vector>
 #include <iostream>
 #include <string>
 #include <vector>
 #include <iostream>
@@ -68,7 +71,11 @@ using dcp::Data;
 using dcp::raw_convert;
 
 EncodeServer::EncodeServer (shared_ptr<Log> log, bool verbose, int num_threads)
 using dcp::raw_convert;
 
 EncodeServer::EncodeServer (shared_ptr<Log> log, bool verbose, int num_threads)
+#if !defined(RUNNING_ON_VALGRIND) || RUNNING_ON_VALGRIND == 0
        : Server (ENCODE_FRAME_PORT)
        : Server (ENCODE_FRAME_PORT)
+#else
+       : Server (ENCODE_FRAME_PORT, 2400)
+#endif
        , _log (log)
        , _verbose (verbose)
        , _num_threads (num_threads)
        , _log (log)
        , _verbose (verbose)
        , _num_threads (num_threads)
index 722b1c81130bde8a81856526c3ad01c357153f3e..9a633c861064d776de263743058d7c6c481084e7 100644 (file)
 
 using boost::shared_ptr;
 
 
 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))
        : _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> socket (new Socket);
+       shared_ptr<Socket> socket (new Socket(_timeout));
        _acceptor.async_accept (socket->socket (), boost::bind (&Server::handle_accept, this, socket, boost::asio::placeholders::error));
 }
 
        _acceptor.async_accept (socket->socket (), boost::bind (&Server::handle_accept, this, socket, boost::asio::placeholders::error));
 }
 
index 7952275232705e8b9d4c943fc855eeadf1aba4a2..59722274ee17b186d50a34f35df91182d7fbd411 100644 (file)
@@ -31,7 +31,7 @@ class Socket;
 class Server : public boost::noncopyable
 {
 public:
 class Server : public boost::noncopyable
 {
 public:
-       explicit Server (int port);
+       explicit Server (int port, int timeout = 30);
        virtual ~Server ();
 
        virtual void run ();
        virtual ~Server ();
 
        virtual void run ();
@@ -49,6 +49,7 @@ private:
 
        boost::asio::io_service _io_service;
        boost::asio::ip::tcp::acceptor _acceptor;
 
        boost::asio::io_service _io_service;
        boost::asio::ip::tcp::acceptor _acceptor;
+       int _timeout;
 };
 
 #endif
 };
 
 #endif
index 592a7e294fe2c55caa10804515d17a6de46f81b8..3ab1c36e177bdfde558264202e9405dcbf8d3285 100644 (file)
@@ -50,7 +50,7 @@ void
 do_remote_encode (shared_ptr<DCPVideo> frame, EncodeServerDescription description, Data locally_encoded)
 {
        Data remotely_encoded;
 do_remote_encode (shared_ptr<DCPVideo> 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);
 
        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 936e325e7e5221dbb3f298c70f1fa35de741ce2f..d6637f3f8cbe3b32e13b4361c3dcdec5926c7bab 100644 (file)
--- a/wscript
+++ b/wscript
@@ -564,6 +564,7 @@ def configure(conf):
     # Other stuff
 
     conf.find_program('msgfmt', var='MSGFMT')
     # Other stuff
 
     conf.find_program('msgfmt', var='MSGFMT')
+    conf.check(header_name='valgrind/memcheck.h', mandatory=False)
 
     datadir = conf.env.DATADIR
     if not datadir:
 
     datadir = conf.env.DATADIR
     if not datadir: