// $Id$
//
-// Copyright (C) 2008
+// Copyright (C) 2008
// Fraunhofer Institute for Open Communication Systems (FOKUS)
// Competence Center NETwork research (NET), St. Augustin, GERMANY
// Stefan Bund <g0dil@berlios.de>
#include <boost/bind.hpp>
-#include "../Utils/auto_unit_test.hh"
+#include <senf/Utils/auto_unit_test.hh>
#include <boost/test/test_tools.hpp>
#define prefix_
}
-BOOST_AUTO_UNIT_TEST(fdDispatcher)
+SENF_AUTO_UNIT_TEST(fdDispatcher)
{
senf::scheduler::detail::FdManager::instance().timeout(1000);
error("connect");
BOOST_FAIL("connect");
}
-
+
{
senf::scheduler::FdEvent sockread ("testHandler", boost::bind(&callback, sock, _1),
sock, senf::scheduler::FdEvent::EV_READ);
BOOST_CHECK_EQUAL( calls, 3 );
SENF_CHECK_NO_THROW( senf::scheduler::detail::FIFORunner::instance().run() );
BOOST_CHECK_EQUAL( calls, 3 );
-
+
// Ensure, removing an already closed file-descriptor doesn't wreak havoc
close(sock);
}
bool is_close(senf::ClockService::clock_type a, senf::ClockService::clock_type b)
{
- return (a<b ? b-a : a-b) < senf::ClockService::milliseconds(100);
+ return (a<b ? b-a : a-b) < senf::ClockService::milliseconds(50);
}
bool called (false);
}
}
-BOOST_AUTO_UNIT_TEST(fileDispatcher)
+SENF_AUTO_UNIT_TEST(fileDispatcher)
{
+ char const * enabled (getenv("SENF_TIMING_CRITICAL_TESTS"));
+ BOOST_WARN_MESSAGE(enabled, "Set SENF_TIMING_CRITICAL_TESTS to not skip timing critical tests");
+
senf::scheduler::detail::FileDispatcher::instance().timeout(500);
int fd (open("test.empty.file", O_RDWR|O_CREAT|O_TRUNC, 0600));
-
+
senf::ClockService::clock_type t (senf::ClockService::now());
try {
- senf::scheduler::FdEvent fde ("testHandler", &handler,
+ senf::scheduler::FdEvent fde ("testHandler", &handler,
fd, senf::scheduler::FdEvent::EV_READ);
SENF_CHECK_NO_THROW( senf::scheduler::detail::FdManager::instance().processOnce() );
SENF_CHECK_NO_THROW( senf::scheduler::detail::FileDispatcher::instance().prepareRun() );
SENF_CHECK_NO_THROW( senf::scheduler::detail::FIFORunner::instance().run() );
-
+
BOOST_CHECK( called );
- BOOST_CHECK_PREDICATE( is_close, (t)(senf::ClockService::now()) );
+ if (enabled)
+ BOOST_CHECK_PREDICATE( is_close, (t)(senf::ClockService::now()) );
}
catch (std::exception const & ex) {
std::cerr << "Exception:\n" << ex.what() << "\n";
SENF_CHECK_NO_THROW( senf::scheduler::detail::FIFORunner::instance().run() );
BOOST_CHECK( ! called );
- BOOST_CHECK_PREDICATE(
- is_close, (t+senf::ClockService::milliseconds(500))(senf::ClockService::now()) );
+ if (enabled)
+ BOOST_CHECK_PREDICATE(
+ is_close, (t+senf::ClockService::milliseconds(500))(senf::ClockService::now()) );
unlink("test.empty.file");
senf::scheduler::detail::FileDispatcher::instance().timeout(-1);