tests: unit-tests-{core,tools} no longer require a global io_service

BaseFixture is moved to tests/daemon and renamed to GlobalIoFixture

Refs: #4528
Change-Id: If9184e9f7f1d6072b0103d3ea3ca6c31a9e505c8
diff --git a/tests/core/algorithm.t.cpp b/tests/core/algorithm.t.cpp
index 75ebe83..fb23238 100644
--- a/tests/core/algorithm.t.cpp
+++ b/tests/core/algorithm.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2015,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -30,7 +30,7 @@
 namespace nfd {
 namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(TestAlgorithm, BaseFixture)
+BOOST_AUTO_TEST_SUITE(TestAlgorithm)
 
 BOOST_AUTO_TEST_CASE(FindLastIf)
 {
@@ -56,7 +56,7 @@
   BOOST_CHECK_LE(hit2, vec.size());
 }
 
-BOOST_AUTO_TEST_SUITE_END()
+BOOST_AUTO_TEST_SUITE_END() // TestAlgorithm
 
 } // namespace tests
 } // namespace nfd
diff --git a/tests/core/config-file.t.cpp b/tests/core/config-file.t.cpp
index 0be1cf1..c2ceb85 100644
--- a/tests/core/config-file.t.cpp
+++ b/tests/core/config-file.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -34,7 +34,7 @@
 namespace nfd {
 namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(TestConfigFile, BaseFixture)
+BOOST_AUTO_TEST_SUITE(TestConfigFile)
 
 static const std::string CONFIG = R"CONFIG(
   a
@@ -283,7 +283,7 @@
   BOOST_CHECK(sub2.allCallbacksFired());
 }
 
-class MissingCallbackFixture : public BaseFixture
+class MissingCallbackFixture
 {
 public:
   void
diff --git a/tests/core/counter.t.cpp b/tests/core/counter.t.cpp
index ce9a086..387b13f 100644
--- a/tests/core/counter.t.cpp
+++ b/tests/core/counter.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -30,7 +30,7 @@
 namespace nfd {
 namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(TestCounter, BaseFixture)
+BOOST_AUTO_TEST_SUITE(TestCounter)
 
 BOOST_AUTO_TEST_CASE(PacketCnt)
 {
diff --git a/tests/core/network-predicate.t.cpp b/tests/core/network-predicate.t.cpp
index a0a510e..378b6aa 100644
--- a/tests/core/network-predicate.t.cpp
+++ b/tests/core/network-predicate.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -30,6 +30,7 @@
 
 #include <ndn-cxx/net/ethernet.hpp>
 #include <ndn-cxx/net/network-monitor-stub.hpp>
+
 #include <boost/property_tree/info_parser.hpp>
 #include <sstream>
 
@@ -39,7 +40,7 @@
 BOOST_AUTO_TEST_SUITE(TestNetworkPredicate)
 
 template<class T>
-class NetworkPredicateBaseFixture : public BaseFixture
+class NetworkPredicateBaseFixture
 {
 public:
   void
diff --git a/tests/core/network.t.cpp b/tests/core/network.t.cpp
index 62eabde..4ab71b5 100644
--- a/tests/core/network.t.cpp
+++ b/tests/core/network.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -30,7 +30,7 @@
 namespace nfd {
 namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(TestNetwork, BaseFixture)
+BOOST_AUTO_TEST_SUITE(TestNetwork)
 
 using boost::asio::ip::address;
 
diff --git a/tests/core/privilege-helper.t.cpp b/tests/core/privilege-helper.t.cpp
index 594f42f..58f8947 100644
--- a/tests/core/privilege-helper.t.cpp
+++ b/tests/core/privilege-helper.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -30,7 +30,7 @@
 namespace nfd {
 namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(TestPrivilegeHelper, BaseFixture)
+BOOST_AUTO_TEST_SUITE(TestPrivilegeHelper)
 
 BOOST_AUTO_TEST_CASE(DropRaise)
 {
diff --git a/tests/core/rtt-estimator.t.cpp b/tests/core/rtt-estimator.t.cpp
index e5952e9..526b03d 100644
--- a/tests/core/rtt-estimator.t.cpp
+++ b/tests/core/rtt-estimator.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -30,9 +30,9 @@
 namespace nfd {
 namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(TestRttEstimator, BaseFixture)
+BOOST_AUTO_TEST_SUITE(TestRttEstimator)
 
-static inline double
+static double
 computeRtoAsFloatSeconds(RttEstimator& rtt)
 {
   typedef time::duration<double, time::seconds::period> FloatSeconds;
diff --git a/tests/daemon/face/channel-fixture.hpp b/tests/daemon/face/channel-fixture.hpp
index 8f94a09..3e13095 100644
--- a/tests/daemon/face/channel-fixture.hpp
+++ b/tests/daemon/face/channel-fixture.hpp
@@ -28,6 +28,7 @@
 
 #include "face/channel.hpp"
 
+#include "tests/test-common.hpp"
 #include "tests/daemon/limited-io.hpp"
 
 #include <type_traits>
@@ -39,7 +40,7 @@
 using namespace nfd::tests;
 
 template<class ChannelT, class EndpointT>
-class ChannelFixture : public BaseFixture
+class ChannelFixture : public GlobalIoFixture
 {
   static_assert(std::is_base_of<Channel, ChannelT>::value,
                 "ChannelFixture must be instantiated with a type derived from Channel");
diff --git a/tests/daemon/face/ethernet-channel.t.cpp b/tests/daemon/face/ethernet-channel.t.cpp
index 9e70441..d7a1cec 100644
--- a/tests/daemon/face/ethernet-channel.t.cpp
+++ b/tests/daemon/face/ethernet-channel.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -25,6 +25,7 @@
 
 #include "face/ethernet-channel.hpp"
 
+#include "tests/test-common.hpp"
 #include "ethernet-fixture.hpp"
 
 namespace nfd {
diff --git a/tests/daemon/face/ethernet-fixture.hpp b/tests/daemon/face/ethernet-fixture.hpp
index 0a75fcc..5a8160e 100644
--- a/tests/daemon/face/ethernet-fixture.hpp
+++ b/tests/daemon/face/ethernet-fixture.hpp
@@ -38,9 +38,9 @@
 
 using namespace nfd::tests;
 
-/** \brief a fixture providing a list of EthernetTransport-capable network interfaces
+/** \brief Fixture providing a list of EthernetTransport-capable network interfaces.
  */
-class EthernetFixture : public virtual BaseFixture
+class EthernetFixture : public virtual GlobalIoFixture
 {
 protected:
   EthernetFixture()
diff --git a/tests/daemon/face/face-system-fixture.hpp b/tests/daemon/face/face-system-fixture.hpp
index b7254fa..de3aca8 100644
--- a/tests/daemon/face/face-system-fixture.hpp
+++ b/tests/daemon/face/face-system-fixture.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -32,7 +32,9 @@
 #include "fw/face-table.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 #include "test-netif.hpp"
+
 #include <ndn-cxx/net/network-monitor-stub.hpp>
 
 namespace nfd {
@@ -41,7 +43,7 @@
 
 using namespace nfd::tests;
 
-class FaceSystemFixture : public virtual BaseFixture
+class FaceSystemFixture : public virtual GlobalIoFixture
 {
 public:
   FaceSystemFixture()
diff --git a/tests/daemon/face/face.t.cpp b/tests/daemon/face/face.t.cpp
index 2876a37..2dd3c95 100644
--- a/tests/daemon/face/face.t.cpp
+++ b/tests/daemon/face/face.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -24,11 +24,12 @@
  */
 
 #include "face/face.hpp"
+#include "face/generic-link-service.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 #include "dummy-face.hpp"
 #include "dummy-transport.hpp"
-#include "face/generic-link-service.hpp"
 
 namespace nfd {
 namespace face {
@@ -37,7 +38,7 @@
 using namespace nfd::tests;
 
 BOOST_AUTO_TEST_SUITE(Face)
-BOOST_FIXTURE_TEST_SUITE(TestFace, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestFace, GlobalIoFixture)
 
 using nfd::Face;
 
diff --git a/tests/daemon/face/generic-link-service.t.cpp b/tests/daemon/face/generic-link-service.t.cpp
index 00b6517..d10dba5 100644
--- a/tests/daemon/face/generic-link-service.t.cpp
+++ b/tests/daemon/face/generic-link-service.t.cpp
@@ -26,9 +26,10 @@
 #include "face/generic-link-service.hpp"
 #include "face/face.hpp"
 
-#include "dummy-transport.hpp"
-#include "tests/key-chain-fixture.hpp"
 #include "tests/test-common.hpp"
+#include "tests/key-chain-fixture.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
+#include "dummy-transport.hpp"
 
 #include <ndn-cxx/lp/empty-value.hpp>
 #include <ndn-cxx/lp/prefix-announcement-header.hpp>
@@ -45,7 +46,7 @@
 
 using nfd::Face;
 
-class GenericLinkServiceFixture : public UnitTestTimeFixture, public KeyChainFixture
+class GenericLinkServiceFixture : public GlobalIoTimeFixture, public KeyChainFixture
 {
 protected:
   GenericLinkServiceFixture()
diff --git a/tests/daemon/face/internal-face.t.cpp b/tests/daemon/face/internal-face.t.cpp
index dfb9888..4c1618b 100644
--- a/tests/daemon/face/internal-face.t.cpp
+++ b/tests/daemon/face/internal-face.t.cpp
@@ -27,6 +27,7 @@
 
 #include "transport-test-common.hpp"
 #include "tests/key-chain-fixture.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 namespace nfd {
 namespace face {
@@ -36,7 +37,7 @@
 
 BOOST_AUTO_TEST_SUITE(Face)
 
-class InternalFaceFixture : public UnitTestTimeFixture, public KeyChainFixture
+class InternalFaceFixture : public GlobalIoTimeFixture, public KeyChainFixture
 {
 public:
   InternalFaceFixture()
diff --git a/tests/daemon/face/lp-fragmenter.t.cpp b/tests/daemon/face/lp-fragmenter.t.cpp
index 4bc8607..9421619 100644
--- a/tests/daemon/face/lp-fragmenter.t.cpp
+++ b/tests/daemon/face/lp-fragmenter.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -27,6 +27,7 @@
 #include "face/transport.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 namespace nfd {
 namespace face {
@@ -34,7 +35,7 @@
 
 using namespace nfd::tests;
 
-class LpFragmenterFixture : public BaseFixture
+class LpFragmenterFixture : public GlobalIoFixture
 {
 protected:
   LpFragmenter fragmenter{{}};
diff --git a/tests/daemon/face/lp-reassembler.t.cpp b/tests/daemon/face/lp-reassembler.t.cpp
index 1d4ee6a..f24eb98 100644
--- a/tests/daemon/face/lp-reassembler.t.cpp
+++ b/tests/daemon/face/lp-reassembler.t.cpp
@@ -26,6 +26,7 @@
 #include "face/lp-reassembler.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 namespace nfd {
 namespace face {
@@ -33,7 +34,7 @@
 
 using namespace nfd::tests;
 
-class LpReassemblerFixture : public UnitTestTimeFixture
+class LpReassemblerFixture : public GlobalIoTimeFixture
 {
 protected:
   LpReassemblerFixture()
diff --git a/tests/daemon/face/lp-reliability.t.cpp b/tests/daemon/face/lp-reliability.t.cpp
index d2b9f22..8ec1dd0 100644
--- a/tests/daemon/face/lp-reliability.t.cpp
+++ b/tests/daemon/face/lp-reliability.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -28,6 +28,7 @@
 #include "face/generic-link-service.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 #include "dummy-face.hpp"
 #include "dummy-transport.hpp"
 
@@ -91,7 +92,7 @@
   }
 };
 
-class LpReliabilityFixture : public UnitTestTimeFixture
+class LpReliabilityFixture : public GlobalIoTimeFixture
 {
 public:
   LpReliabilityFixture()
diff --git a/tests/daemon/face/multicast-udp-transport-fixture.hpp b/tests/daemon/face/multicast-udp-transport-fixture.hpp
index 06455c7..775b12d 100644
--- a/tests/daemon/face/multicast-udp-transport-fixture.hpp
+++ b/tests/daemon/face/multicast-udp-transport-fixture.hpp
@@ -29,8 +29,9 @@
 #include "face/multicast-udp-transport.hpp"
 #include "face/face.hpp"
 
-#include "dummy-receive-link-service.hpp"
+#include "tests/test-common.hpp"
 #include "tests/daemon/limited-io.hpp"
+#include "dummy-receive-link-service.hpp"
 
 namespace nfd {
 namespace face {
@@ -40,7 +41,7 @@
 namespace ip = boost::asio::ip;
 using ip::udp;
 
-class MulticastUdpTransportFixture : public BaseFixture
+class MulticastUdpTransportFixture : public GlobalIoFixture
 {
 protected:
   MulticastUdpTransportFixture()
diff --git a/tests/daemon/face/null-face.t.cpp b/tests/daemon/face/null-face.t.cpp
index 4075245..6d34770 100644
--- a/tests/daemon/face/null-face.t.cpp
+++ b/tests/daemon/face/null-face.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2015,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -25,6 +25,7 @@
 
 #include "face/null-face.hpp"
 
+#include "tests/daemon/global-io-fixture.hpp"
 #include "transport-test-common.hpp"
 
 namespace nfd {
@@ -34,7 +35,7 @@
 using namespace nfd::tests;
 
 BOOST_AUTO_TEST_SUITE(Face)
-BOOST_FIXTURE_TEST_SUITE(TestNullFace, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestNullFace, GlobalIoFixture)
 
 using nfd::Face;
 
diff --git a/tests/daemon/face/tcp-transport-fixture.hpp b/tests/daemon/face/tcp-transport-fixture.hpp
index 65a4d24..631abe1 100644
--- a/tests/daemon/face/tcp-transport-fixture.hpp
+++ b/tests/daemon/face/tcp-transport-fixture.hpp
@@ -29,8 +29,9 @@
 #include "face/tcp-transport.hpp"
 #include "face/face.hpp"
 
-#include "dummy-receive-link-service.hpp"
+#include "tests/test-common.hpp"
 #include "tests/daemon/limited-io.hpp"
+#include "dummy-receive-link-service.hpp"
 
 namespace nfd {
 namespace face {
@@ -40,7 +41,7 @@
 namespace ip = boost::asio::ip;
 using ip::tcp;
 
-class TcpTransportFixture : public BaseFixture
+class TcpTransportFixture : public GlobalIoFixture
 {
 protected:
   TcpTransportFixture()
diff --git a/tests/daemon/face/transport.t.cpp b/tests/daemon/face/transport.t.cpp
index d06195e..d586c20 100644
--- a/tests/daemon/face/transport.t.cpp
+++ b/tests/daemon/face/transport.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -25,8 +25,10 @@
 
 #include "face/transport.hpp"
 #include "face/face.hpp"
-#include "dummy-transport.hpp"
+
+#include "tests/daemon/global-io-fixture.hpp"
 #include "dummy-receive-link-service.hpp"
+#include "dummy-transport.hpp"
 #include "transport-test-common.hpp"
 
 #include <boost/mpl/fold.hpp>
@@ -209,7 +211,7 @@
   BOOST_CHECK_EQUAL(transport->getExpirationTime(), time::steady_clock::TimePoint::max());
 }
 
-class DummyTransportFixture : public nfd::tests::BaseFixture
+class DummyTransportFixture : public nfd::tests::GlobalIoFixture
 {
 protected:
   DummyTransportFixture()
diff --git a/tests/daemon/face/unicast-udp-transport-fixture.hpp b/tests/daemon/face/unicast-udp-transport-fixture.hpp
index b269a71..08acd46 100644
--- a/tests/daemon/face/unicast-udp-transport-fixture.hpp
+++ b/tests/daemon/face/unicast-udp-transport-fixture.hpp
@@ -29,8 +29,9 @@
 #include "face/unicast-udp-transport.hpp"
 #include "face/face.hpp"
 
-#include "dummy-receive-link-service.hpp"
+#include "tests/test-common.hpp"
 #include "tests/daemon/limited-io.hpp"
+#include "dummy-receive-link-service.hpp"
 
 namespace nfd {
 namespace face {
@@ -40,7 +41,7 @@
 namespace ip = boost::asio::ip;
 using ip::udp;
 
-class UnicastUdpTransportFixture : public BaseFixture
+class UnicastUdpTransportFixture : public GlobalIoFixture
 {
 protected:
   UnicastUdpTransportFixture()
diff --git a/tests/daemon/face/unix-stream-transport-fixture.hpp b/tests/daemon/face/unix-stream-transport-fixture.hpp
index d131a00..582db48 100644
--- a/tests/daemon/face/unix-stream-transport-fixture.hpp
+++ b/tests/daemon/face/unix-stream-transport-fixture.hpp
@@ -29,8 +29,9 @@
 #include "face/unix-stream-transport.hpp"
 #include "face/face.hpp"
 
-#include "dummy-receive-link-service.hpp"
+#include "tests/test-common.hpp"
 #include "tests/daemon/limited-io.hpp"
+#include "dummy-receive-link-service.hpp"
 
 #include <boost/filesystem.hpp>
 
@@ -76,7 +77,7 @@
   }
 };
 
-class UnixStreamTransportFixture : public BaseFixture
+class UnixStreamTransportFixture : public GlobalIoFixture
 {
 protected:
   UnixStreamTransportFixture()
diff --git a/tests/daemon/face/websocket-transport-fixture.hpp b/tests/daemon/face/websocket-transport-fixture.hpp
index 38ab81c..8b8ee42 100644
--- a/tests/daemon/face/websocket-transport-fixture.hpp
+++ b/tests/daemon/face/websocket-transport-fixture.hpp
@@ -29,8 +29,9 @@
 #include "face/websocket-transport.hpp"
 #include "face/face.hpp"
 
-#include "dummy-receive-link-service.hpp"
+#include "tests/test-common.hpp"
 #include "tests/daemon/limited-io.hpp"
+#include "dummy-receive-link-service.hpp"
 
 namespace nfd {
 namespace face {
@@ -41,7 +42,7 @@
 
 /** \brief a fixture that accepts a single WebSocket connection from a client
  */
-class WebSocketTransportFixture : public BaseFixture
+class WebSocketTransportFixture : public GlobalIoFixture
 {
 protected:
   WebSocketTransportFixture()
diff --git a/tests/daemon/fw/access-strategy.t.cpp b/tests/daemon/fw/access-strategy.t.cpp
index 2f825be..d950fc2 100644
--- a/tests/daemon/fw/access-strategy.t.cpp
+++ b/tests/daemon/fw/access-strategy.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -25,7 +25,6 @@
 
 #include "fw/access-strategy.hpp"
 
-#include "tests/test-common.hpp"
 #include "strategy-tester.hpp"
 #include "topology-tester.hpp"
 
@@ -52,7 +51,7 @@
 // code style rule 3.25. This is necessary because some lines ends with '\' which
 // would cause "multi-line comment" compiler warning if '//' comments are used.
 
-class TwoLaptopsFixture : public UnitTestTimeFixture
+class TwoLaptopsFixture : public GlobalIoTimeFixture
 {
 protected:
   TwoLaptopsFixture()
diff --git a/tests/daemon/fw/ad-hoc-forwarding.t.cpp b/tests/daemon/fw/ad-hoc-forwarding.t.cpp
index 7e81893..5ef50cf 100644
--- a/tests/daemon/fw/ad-hoc-forwarding.t.cpp
+++ b/tests/daemon/fw/ad-hoc-forwarding.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -33,8 +33,9 @@
 #include "fw/best-route-strategy2.hpp"
 #include "fw/multicast-strategy.hpp"
 
-#include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 #include "topology-tester.hpp"
+
 #include <boost/mpl/vector.hpp>
 
 namespace nfd {
@@ -44,7 +45,7 @@
 using namespace nfd::tests;
 
 template<typename S>
-class AdHocForwardingFixture : public UnitTestTimeFixture
+class AdHocForwardingFixture : public GlobalIoTimeFixture
 {
 protected:
   AdHocForwardingFixture()
@@ -84,7 +85,7 @@
 };
 
 BOOST_AUTO_TEST_SUITE(Fw)
-BOOST_FIXTURE_TEST_SUITE(TestAdHocForwarding, BaseFixture)
+BOOST_AUTO_TEST_SUITE(TestAdHocForwarding)
 
 using Strategies = boost::mpl::vector<
   AsfStrategy,
diff --git a/tests/daemon/fw/algorithm.t.cpp b/tests/daemon/fw/algorithm.t.cpp
index 1e482c5..cb32efc 100644
--- a/tests/daemon/fw/algorithm.t.cpp
+++ b/tests/daemon/fw/algorithm.t.cpp
@@ -26,6 +26,7 @@
 #include "fw/algorithm.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 #include "tests/daemon/face/dummy-face.hpp"
 
 namespace nfd {
@@ -35,9 +36,9 @@
 using namespace nfd::tests;
 
 BOOST_AUTO_TEST_SUITE(Fw)
-BOOST_FIXTURE_TEST_SUITE(TestAlgorithm, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestAlgorithm, GlobalIoFixture)
 
-class ScopeControlFixture : public BaseFixture
+class ScopeControlFixture : public GlobalIoFixture
 {
 protected:
   ScopeControlFixture()
@@ -169,7 +170,7 @@
   BOOST_CHECK_EQUAL(findDuplicateNonce(entry5, 19004, *face2), DUPLICATE_NONCE_NONE);
 }
 
-BOOST_FIXTURE_TEST_CASE(HasPendingOutRecords, UnitTestTimeFixture)
+BOOST_FIXTURE_TEST_CASE(HasPendingOutRecords, GlobalIoTimeFixture)
 {
   auto face1 = make_shared<DummyFace>();
   auto face2 = make_shared<DummyFace>();
@@ -204,7 +205,7 @@
   BOOST_CHECK_EQUAL(hasPendingOutRecords(entry), false);
 }
 
-BOOST_FIXTURE_TEST_CASE(GetLastOutgoing, UnitTestTimeFixture)
+BOOST_FIXTURE_TEST_CASE(GetLastOutgoing, GlobalIoTimeFixture)
 {
   auto face1 = make_shared<DummyFace>();
   auto face2 = make_shared<DummyFace>();
diff --git a/tests/daemon/fw/asf-measurements.t.cpp b/tests/daemon/fw/asf-measurements.t.cpp
index 71491b7..a5fee3f 100644
--- a/tests/daemon/fw/asf-measurements.t.cpp
+++ b/tests/daemon/fw/asf-measurements.t.cpp
@@ -26,8 +26,9 @@
 #include "fw/asf-measurements.hpp"
 #include "daemon/global.hpp"
 
-#include "tests/daemon/face/dummy-face.hpp"
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
+#include "tests/daemon/face/dummy-face.hpp"
 
 namespace nfd {
 namespace fw {
@@ -41,7 +42,7 @@
 
 BOOST_AUTO_TEST_SUITE(TestRttStats)
 
-BOOST_FIXTURE_TEST_CASE(Basic, BaseFixture)
+BOOST_FIXTURE_TEST_CASE(Basic, GlobalIoFixture)
 {
   RttStats stats;
 
@@ -82,7 +83,7 @@
 
 BOOST_AUTO_TEST_SUITE(TestFaceInfo)
 
-BOOST_FIXTURE_TEST_CASE(Basic, UnitTestTimeFixture)
+BOOST_FIXTURE_TEST_CASE(Basic, GlobalIoTimeFixture)
 {
   FaceInfo info;
 
diff --git a/tests/daemon/fw/asf-strategy.t.cpp b/tests/daemon/fw/asf-strategy.t.cpp
index 7e3de91..d363880 100644
--- a/tests/daemon/fw/asf-strategy.t.cpp
+++ b/tests/daemon/fw/asf-strategy.t.cpp
@@ -25,7 +25,6 @@
 
 #include "fw/asf-strategy.hpp"
 
-#include "tests/test-common.hpp"
 #include "strategy-tester.hpp"
 #include "topology-tester.hpp"
 
@@ -41,9 +40,9 @@
 NFD_REGISTER_STRATEGY(AsfStrategyTester);
 
 BOOST_AUTO_TEST_SUITE(Fw)
-BOOST_FIXTURE_TEST_SUITE(TestAsfStrategy, UnitTestTimeFixture)
+BOOST_FIXTURE_TEST_SUITE(TestAsfStrategy, GlobalIoTimeFixture)
 
-class AsfGridFixture : public UnitTestTimeFixture
+class AsfGridFixture : public GlobalIoTimeFixture
 {
 protected:
   AsfGridFixture(Name parameters = AsfStrategy::getStrategyName())
diff --git a/tests/daemon/fw/best-route-strategy2.t.cpp b/tests/daemon/fw/best-route-strategy2.t.cpp
index 83f9903..4101464 100644
--- a/tests/daemon/fw/best-route-strategy2.t.cpp
+++ b/tests/daemon/fw/best-route-strategy2.t.cpp
@@ -41,7 +41,7 @@
 
 BOOST_AUTO_TEST_SUITE(Fw)
 
-class BestRouteStrategy2Fixture : public UnitTestTimeFixture
+class BestRouteStrategy2Fixture : public GlobalIoTimeFixture
 {
 protected:
   BestRouteStrategy2Fixture()
diff --git a/tests/daemon/fw/face-table.t.cpp b/tests/daemon/fw/face-table.t.cpp
index 839018a..fc2e7ee 100644
--- a/tests/daemon/fw/face-table.t.cpp
+++ b/tests/daemon/fw/face-table.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -26,13 +26,14 @@
 #include "fw/face-table.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 #include "tests/daemon/face/dummy-face.hpp"
 
 namespace nfd {
 namespace tests {
 
 BOOST_AUTO_TEST_SUITE(Fw)
-BOOST_FIXTURE_TEST_SUITE(TestFaceTable, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestFaceTable, GlobalIoFixture)
 
 BOOST_AUTO_TEST_CASE(AddRemove)
 {
diff --git a/tests/daemon/fw/forwarder.t.cpp b/tests/daemon/fw/forwarder.t.cpp
index 60c8ea4..8e3bae3 100644
--- a/tests/daemon/fw/forwarder.t.cpp
+++ b/tests/daemon/fw/forwarder.t.cpp
@@ -27,6 +27,7 @@
 #include "daemon/global.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 #include "tests/daemon/face/dummy-face.hpp"
 #include "choose-strategy.hpp"
 #include "dummy-strategy.hpp"
@@ -37,7 +38,7 @@
 namespace tests {
 
 BOOST_AUTO_TEST_SUITE(Fw)
-BOOST_FIXTURE_TEST_SUITE(TestForwarder, UnitTestTimeFixture)
+BOOST_FIXTURE_TEST_SUITE(TestForwarder, GlobalIoTimeFixture)
 
 BOOST_AUTO_TEST_CASE(SimpleExchange)
 {
@@ -534,7 +535,7 @@
   BOOST_CHECK(face3->sentNacks.empty());
 }
 
-BOOST_FIXTURE_TEST_CASE(InterestLoopWithShortLifetime, UnitTestTimeFixture) // Bug 1953
+BOOST_AUTO_TEST_CASE(InterestLoopWithShortLifetime) // Bug 1953
 {
   Forwarder forwarder;
   auto face1 = make_shared<DummyFace>();
@@ -592,8 +593,8 @@
   BOOST_CHECK_EQUAL(pit.size(), 0);
 }
 
-BOOST_AUTO_TEST_SUITE_END()
-BOOST_AUTO_TEST_SUITE_END()
+BOOST_AUTO_TEST_SUITE_END() // TestForwarder
+BOOST_AUTO_TEST_SUITE_END() // Fw
 
 } // namespace tests
 } // namespace nfd
diff --git a/tests/daemon/fw/forwarding-hint.t.cpp b/tests/daemon/fw/forwarding-hint.t.cpp
index 7d0d37d..e37c267 100644
--- a/tests/daemon/fw/forwarding-hint.t.cpp
+++ b/tests/daemon/fw/forwarding-hint.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2017,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -25,6 +25,7 @@
 
 #include "fw/best-route-strategy2.hpp"
 
+#include "tests/daemon/global-io-fixture.hpp"
 #include "topology-tester.hpp"
 
 namespace nfd {
@@ -52,7 +53,7 @@
  *                     /net/ndnsim
  *                      (serverQ)
  */
-class NdnsimTeliaUclaTopologyFixture : public UnitTestTimeFixture
+class NdnsimTeliaUclaTopologyFixture : public GlobalIoTimeFixture
 {
 public:
   NdnsimTeliaUclaTopologyFixture()
diff --git a/tests/daemon/fw/multicast-strategy.t.cpp b/tests/daemon/fw/multicast-strategy.t.cpp
index e3ed88b..a6d9be6 100644
--- a/tests/daemon/fw/multicast-strategy.t.cpp
+++ b/tests/daemon/fw/multicast-strategy.t.cpp
@@ -26,8 +26,8 @@
 #include "fw/multicast-strategy.hpp"
 #include "daemon/global.hpp"
 
-#include "tests/daemon/face/dummy-face.hpp"
 #include "tests/test-common.hpp"
+#include "tests/daemon/face/dummy-face.hpp"
 #include "strategy-tester.hpp"
 
 namespace nfd {
@@ -39,7 +39,7 @@
 typedef StrategyTester<MulticastStrategy> MulticastStrategyTester;
 NFD_REGISTER_STRATEGY(MulticastStrategyTester);
 
-class MulticastStrategyFixture : public UnitTestTimeFixture
+class MulticastStrategyFixture : public GlobalIoTimeFixture
 {
 protected:
   MulticastStrategyFixture()
diff --git a/tests/daemon/fw/ncc-strategy.t.cpp b/tests/daemon/fw/ncc-strategy.t.cpp
index 4044251..86238af 100644
--- a/tests/daemon/fw/ncc-strategy.t.cpp
+++ b/tests/daemon/fw/ncc-strategy.t.cpp
@@ -39,7 +39,7 @@
 NFD_REGISTER_STRATEGY(NccStrategyTester);
 
 BOOST_AUTO_TEST_SUITE(Fw)
-BOOST_FIXTURE_TEST_SUITE(TestNccStrategy, UnitTestTimeFixture)
+BOOST_FIXTURE_TEST_SUITE(TestNccStrategy, GlobalIoTimeFixture)
 
 BOOST_AUTO_TEST_CASE(FavorRespondingUpstream)
 {
diff --git a/tests/daemon/fw/pit-expiry.t.cpp b/tests/daemon/fw/pit-expiry.t.cpp
index 1e0b599..5467c4a 100644
--- a/tests/daemon/fw/pit-expiry.t.cpp
+++ b/tests/daemon/fw/pit-expiry.t.cpp
@@ -23,11 +23,11 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "dummy-strategy.hpp"
-#include "choose-strategy.hpp"
-#include "tests/daemon/face/dummy-face.hpp"
-
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
+#include "tests/daemon/face/dummy-face.hpp"
+#include "choose-strategy.hpp"
+#include "dummy-strategy.hpp"
 
 #include <ndn-cxx/lp/tags.hpp>
 
@@ -38,7 +38,7 @@
 using namespace nfd::tests;
 
 BOOST_AUTO_TEST_SUITE(Fw)
-BOOST_FIXTURE_TEST_SUITE(TestPitExpiry, UnitTestTimeFixture)
+BOOST_FIXTURE_TEST_SUITE(TestPitExpiry, GlobalIoTimeFixture)
 
 class PitExpiryTestStrategy : public DummyStrategy
 {
diff --git a/tests/daemon/fw/retx-suppression.t.cpp b/tests/daemon/fw/retx-suppression.t.cpp
index c96ac67..a0aab02 100644
--- a/tests/daemon/fw/retx-suppression.t.cpp
+++ b/tests/daemon/fw/retx-suppression.t.cpp
@@ -28,6 +28,7 @@
 #include "fw/retx-suppression-exponential.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 #include "tests/daemon/face/dummy-face.hpp"
 
 namespace nfd {
@@ -37,7 +38,7 @@
 using namespace nfd::tests;
 
 BOOST_AUTO_TEST_SUITE(Fw)
-BOOST_FIXTURE_TEST_SUITE(TestRetxSuppression, UnitTestTimeFixture)
+BOOST_FIXTURE_TEST_SUITE(TestRetxSuppression, GlobalIoTimeFixture)
 
 BOOST_AUTO_TEST_CASE(Fixed)
 {
diff --git a/tests/daemon/fw/strategy-nack-return.t.cpp b/tests/daemon/fw/strategy-nack-return.t.cpp
index 3d61452..2708710 100644
--- a/tests/daemon/fw/strategy-nack-return.t.cpp
+++ b/tests/daemon/fw/strategy-nack-return.t.cpp
@@ -47,7 +47,7 @@
 BOOST_AUTO_TEST_SUITE(Fw)
 
 template<typename S>
-class StrategyNackReturnFixture : public UnitTestTimeFixture
+class StrategyNackReturnFixture : public GlobalIoTimeFixture
 {
 public:
   StrategyNackReturnFixture()
@@ -189,7 +189,7 @@
 
 // #3033 note-7
 BOOST_FIXTURE_TEST_CASE_TEMPLATE(LiveDeadlock,
-                                 S, Strategies, UnitTestTimeFixture)
+                                 S, Strategies, GlobalIoTimeFixture)
 {
   /*
    *           /----------\
diff --git a/tests/daemon/fw/strategy-no-route.t.cpp b/tests/daemon/fw/strategy-no-route.t.cpp
index 6e8aa8a..daf3f2a 100644
--- a/tests/daemon/fw/strategy-no-route.t.cpp
+++ b/tests/daemon/fw/strategy-no-route.t.cpp
@@ -34,9 +34,10 @@
 #include "fw/best-route-strategy2.hpp"
 #include "fw/multicast-strategy.hpp"
 
+#include "tests/test-common.hpp"
+#include "tests/daemon/face/dummy-face.hpp"
 #include "choose-strategy.hpp"
 #include "strategy-tester.hpp"
-#include "tests/daemon/face/dummy-face.hpp"
 
 #include <boost/mpl/copy_if.hpp>
 #include <boost/mpl/vector.hpp>
@@ -48,7 +49,7 @@
 using namespace nfd::tests;
 
 template<typename S>
-class StrategyNoRouteFixture : public UnitTestTimeFixture
+class StrategyNoRouteFixture : public GlobalIoTimeFixture
 {
 public:
   StrategyNoRouteFixture()
@@ -76,7 +77,7 @@
 };
 
 BOOST_AUTO_TEST_SUITE(Fw)
-BOOST_FIXTURE_TEST_SUITE(TestStrategyNoRoute, BaseFixture)
+BOOST_AUTO_TEST_SUITE(TestStrategyNoRoute)
 
 template<typename S, typename C>
 class Test
diff --git a/tests/daemon/fw/strategy-scope-control.t.cpp b/tests/daemon/fw/strategy-scope-control.t.cpp
index c97e8ab..2980834 100644
--- a/tests/daemon/fw/strategy-scope-control.t.cpp
+++ b/tests/daemon/fw/strategy-scope-control.t.cpp
@@ -35,9 +35,10 @@
 #include "fw/multicast-strategy.hpp"
 #include "fw/ncc-strategy.hpp"
 
+#include "tests/test-common.hpp"
+#include "tests/daemon/face/dummy-face.hpp"
 #include "choose-strategy.hpp"
 #include "strategy-tester.hpp"
-#include "tests/daemon/face/dummy-face.hpp"
 
 #include <boost/mpl/copy_if.hpp>
 #include <boost/mpl/vector.hpp>
@@ -49,7 +50,7 @@
 using namespace nfd::tests;
 
 template<typename S>
-class StrategyScopeControlFixture : public UnitTestTimeFixture
+class StrategyScopeControlFixture : public GlobalIoTimeFixture
 {
 public:
   StrategyScopeControlFixture()
diff --git a/tests/daemon/fw/strategy.t.cpp b/tests/daemon/fw/strategy.t.cpp
index 11f3f38..41b0f8d 100644
--- a/tests/daemon/fw/strategy.t.cpp
+++ b/tests/daemon/fw/strategy.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -24,14 +24,16 @@
  */
 
 #include "fw/strategy.hpp"
-#include "dummy-strategy.hpp"
+
+#include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 #include "tests/daemon/face/dummy-face.hpp"
+#include "dummy-strategy.hpp"
+
 #include <boost/range/adaptor/filtered.hpp>
 #include <boost/range/adaptor/transformed.hpp>
 #include <boost/range/algorithm/copy.hpp>
 
-#include "tests/test-common.hpp"
-
 namespace nfd {
 namespace fw {
 namespace tests {
@@ -39,7 +41,7 @@
 using namespace nfd::tests;
 
 BOOST_AUTO_TEST_SUITE(Fw)
-BOOST_FIXTURE_TEST_SUITE(TestStrategy, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestStrategy, GlobalIoFixture)
 
 // Strategy registry is tested in table/strategy-choice.t.cpp and strategy-instantiation.t.cpp
 
diff --git a/tests/daemon/fw/unsolicited-data-policy.t.cpp b/tests/daemon/fw/unsolicited-data-policy.t.cpp
index e6b73ad..11eafe1 100644
--- a/tests/daemon/fw/unsolicited-data-policy.t.cpp
+++ b/tests/daemon/fw/unsolicited-data-policy.t.cpp
@@ -25,9 +25,11 @@
 
 #include "fw/unsolicited-data-policy.hpp"
 #include "fw/forwarder.hpp"
-#include "tests/daemon/face/dummy-face.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
+#include "tests/daemon/face/dummy-face.hpp"
+
 #include <boost/logic/tribool.hpp>
 #include <boost/mpl/vector.hpp>
 
@@ -37,7 +39,7 @@
 
 using namespace nfd::tests;
 
-class UnsolicitedDataPolicyFixture : public UnitTestTimeFixture
+class UnsolicitedDataPolicyFixture : public GlobalIoTimeFixture
 {
 protected:
   UnsolicitedDataPolicyFixture()
diff --git a/tests/daemon/global-io-fixture.cpp b/tests/daemon/global-io-fixture.cpp
new file mode 100644
index 0000000..4888e80
--- /dev/null
+++ b/tests/daemon/global-io-fixture.cpp
@@ -0,0 +1,48 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
+ *                           Arizona Board of Regents,
+ *                           Colorado State University,
+ *                           University Pierre & Marie Curie, Sorbonne University,
+ *                           Washington University in St. Louis,
+ *                           Beijing Institute of Technology,
+ *                           The University of Memphis.
+ *
+ * This file is part of NFD (Named Data Networking Forwarding Daemon).
+ * See AUTHORS.md for complete list of NFD authors and contributors.
+ *
+ * NFD is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
+ *
+ * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.  See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "tests/daemon/global-io-fixture.hpp"
+#include "daemon/global.hpp"
+
+namespace nfd {
+namespace tests {
+
+GlobalIoFixture::GlobalIoFixture()
+  : g_io(getGlobalIoService())
+{
+}
+
+GlobalIoFixture::~GlobalIoFixture()
+{
+  resetGlobalIoService();
+}
+
+GlobalIoTimeFixture::GlobalIoTimeFixture()
+  : ClockFixture(g_io)
+{
+}
+
+} // namespace tests
+} // namespace nfd
diff --git a/tests/daemon/global-io-fixture.hpp b/tests/daemon/global-io-fixture.hpp
new file mode 100644
index 0000000..6dbc891
--- /dev/null
+++ b/tests/daemon/global-io-fixture.hpp
@@ -0,0 +1,63 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
+ *                           Arizona Board of Regents,
+ *                           Colorado State University,
+ *                           University Pierre & Marie Curie, Sorbonne University,
+ *                           Washington University in St. Louis,
+ *                           Beijing Institute of Technology,
+ *                           The University of Memphis.
+ *
+ * This file is part of NFD (Named Data Networking Forwarding Daemon).
+ * See AUTHORS.md for complete list of NFD authors and contributors.
+ *
+ * NFD is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
+ *
+ * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.  See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef NFD_TESTS_DAEMON_GLOBAL_IO_FIXTURE_HPP
+#define NFD_TESTS_DAEMON_GLOBAL_IO_FIXTURE_HPP
+
+#include "tests/clock-fixture.hpp"
+
+namespace nfd {
+namespace tests {
+
+/** \brief A fixture providing proper setup and teardown of the global io_service.
+ *
+ *  Every daemon fixture or test case should inherit from this fixture,
+ *  to have per test case io_service initialization and cleanup.
+ */
+class GlobalIoFixture
+{
+protected:
+  GlobalIoFixture();
+
+  ~GlobalIoFixture();
+
+protected:
+  /** \brief Reference to the global io_service instance.
+   */
+  boost::asio::io_service& g_io;
+};
+
+/** \brief GlobalIoFixture that also overrides steady clock and system clock.
+ */
+class GlobalIoTimeFixture : public GlobalIoFixture, public ClockFixture
+{
+protected:
+  GlobalIoTimeFixture();
+};
+
+} // namespace tests
+} // namespace nfd
+
+#endif // NFD_TESTS_DAEMON_GLOBAL_IO_FIXTURE_HPP
diff --git a/tests/daemon/global.t.cpp b/tests/daemon/global.t.cpp
index bdde1ba..bb24218 100644
--- a/tests/daemon/global.t.cpp
+++ b/tests/daemon/global.t.cpp
@@ -26,6 +26,7 @@
 #include "daemon/global.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 #include "tests/daemon/rib-io-fixture.hpp"
 
 #include <thread>
@@ -33,7 +34,7 @@
 namespace nfd {
 namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(TestGlobal, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestGlobal, GlobalIoFixture)
 
 BOOST_AUTO_TEST_CASE(ThreadLocalIoService)
 {
diff --git a/tests/daemon/limited-io.cpp b/tests/daemon/limited-io.cpp
index 2779b24..c54a290 100644
--- a/tests/daemon/limited-io.cpp
+++ b/tests/daemon/limited-io.cpp
@@ -23,8 +23,8 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "limited-io.hpp"
-#include "core/logger.hpp"
+#include "tests/daemon/limited-io.hpp"
+#include "tests/test-common.hpp"
 #include "daemon/global.hpp"
 
 #include <boost/exception/diagnostic_information.hpp>
@@ -32,18 +32,16 @@
 namespace nfd {
 namespace tests {
 
-NFD_LOG_INIT(tests.LimitedIo);
-
 const int LimitedIo::UNLIMITED_OPS = std::numeric_limits<int>::max();
 const time::nanoseconds LimitedIo::UNLIMITED_TIME = time::nanoseconds::min();
 
-LimitedIo::LimitedIo(UnitTestTimeFixture* uttf)
-  : m_uttf(uttf)
+LimitedIo::LimitedIo(GlobalIoTimeFixture* fixture)
+  : m_fixture(fixture)
 {
 }
 
 LimitedIo::StopReason
-LimitedIo::run(int nOpsLimit, const time::nanoseconds& timeLimit, const time::nanoseconds& tick)
+LimitedIo::run(int nOpsLimit, time::nanoseconds timeLimit, time::nanoseconds tick)
 {
   BOOST_ASSERT(!m_isRunning);
 
@@ -60,18 +58,18 @@
   }
 
   try {
-    if (m_uttf == nullptr) {
+    if (m_fixture == nullptr) {
       getGlobalIoService().run();
     }
     else {
       // timeLimit is enforced by afterTimeout
-      m_uttf->advanceClocks(tick, time::nanoseconds::max());
+      m_fixture->advanceClocks(tick, time::nanoseconds::max());
     }
   }
   catch (const StopException&) {
   }
-  catch (const std::exception& ex) {
-    NFD_LOG_ERROR("LimitedIo::run: " << boost::diagnostic_information(ex));
+  catch (...) {
+    BOOST_WARN_MESSAGE(false, boost::current_exception_diagnostic_information());
     m_reason = EXCEPTION;
     m_lastException = std::current_exception();
   }
@@ -96,7 +94,7 @@
   if (m_nOpsRemaining <= 0) {
     m_reason = EXCEED_OPS;
     getGlobalIoService().stop();
-    if (m_uttf != nullptr) {
+    if (m_fixture != nullptr) {
       NDN_THROW(StopException());
     }
   }
@@ -107,7 +105,7 @@
 {
   m_reason = EXCEED_TIME;
   getGlobalIoService().stop();
-  if (m_uttf != nullptr) {
+  if (m_fixture != nullptr) {
     NDN_THROW(StopException());
   }
 }
diff --git a/tests/daemon/limited-io.hpp b/tests/daemon/limited-io.hpp
index 7e7ecc4..a34d20e 100644
--- a/tests/daemon/limited-io.hpp
+++ b/tests/daemon/limited-io.hpp
@@ -26,14 +26,14 @@
 #ifndef NFD_TESTS_DAEMON_LIMITED_IO_HPP
 #define NFD_TESTS_DAEMON_LIMITED_IO_HPP
 
-#include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 #include <exception>
 
 namespace nfd {
 namespace tests {
 
-/** \brief provides IO operations limit and/or time limit for unit testing
+/** \brief Provides IO operations limit and/or time limit for unit testing.
  *
  *  \warning LimitedIo is incompatible with RibIoFixture
  */
@@ -41,7 +41,7 @@
 {
 public:
   explicit
-  LimitedIo(UnitTestTimeFixture* uttf = nullptr);
+  LimitedIo(GlobalIoTimeFixture* fixture = nullptr);
 
   /// indicates why run() returns
   enum StopReason {
@@ -58,12 +58,11 @@
   /** \brief g_io.run() with operation count and/or time limit
    *  \param nOpsLimit operation count limit, pass UNLIMITED_OPS for no limit
    *  \param timeLimit time limit, pass UNLIMITED_TIME for no limit
-   *  \param tick if this LimitedIo is constructed with UnitTestTimeFixture,
+   *  \param tick if this LimitedIo is constructed with GlobalIoTimeFixture,
    *              this is passed to .advanceClocks(), otherwise ignored
    */
   StopReason
-  run(int nOpsLimit, const time::nanoseconds& timeLimit,
-      const time::nanoseconds& tick = time::milliseconds(1));
+  run(int nOpsLimit, time::nanoseconds timeLimit, time::nanoseconds tick = 1_ms);
 
   /// count an operation
   void
@@ -74,7 +73,7 @@
    *  equivalent to .run(UNLIMITED_OPS, d)
    */
   void
-  defer(const time::nanoseconds& d)
+  defer(time::nanoseconds d)
   {
     this->run(UNLIMITED_OPS, d);
   }
@@ -100,7 +99,7 @@
   static const time::nanoseconds UNLIMITED_TIME;
 
 private:
-  UnitTestTimeFixture* m_uttf;
+  GlobalIoTimeFixture* m_fixture;
   StopReason m_reason;
   int m_nOpsRemaining = 0;
   scheduler::EventId m_timeout;
diff --git a/tests/daemon/mgmt/face-manager-create-face.t.cpp b/tests/daemon/mgmt/face-manager-create-face.t.cpp
index ac42dc9..7c0fe6f 100644
--- a/tests/daemon/mgmt/face-manager-create-face.t.cpp
+++ b/tests/daemon/mgmt/face-manager-create-face.t.cpp
@@ -36,7 +36,7 @@
 BOOST_AUTO_TEST_SUITE(Mgmt)
 BOOST_AUTO_TEST_SUITE(TestFaceManager)
 
-BOOST_FIXTURE_TEST_SUITE(CreateFace, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(CreateFace, GlobalIoFixture)
 
 class TcpFaceOnDemand
 {
diff --git a/tests/daemon/mgmt/general-config-section.t.cpp b/tests/daemon/mgmt/general-config-section.t.cpp
index 98b9458..1f7188a 100644
--- a/tests/daemon/mgmt/general-config-section.t.cpp
+++ b/tests/daemon/mgmt/general-config-section.t.cpp
@@ -28,6 +28,7 @@
 #include "core/privilege-helper.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 #include <cstring>
 
@@ -37,7 +38,7 @@
 
 using namespace nfd::tests;
 
-class GeneralConfigSectionFixture : public BaseFixture
+class GeneralConfigSectionFixture : public GlobalIoFixture
 {
 public:
   GeneralConfigSectionFixture()
diff --git a/tests/daemon/mgmt/manager-common-fixture.hpp b/tests/daemon/mgmt/manager-common-fixture.hpp
index a12d671..b5bae0d 100644
--- a/tests/daemon/mgmt/manager-common-fixture.hpp
+++ b/tests/daemon/mgmt/manager-common-fixture.hpp
@@ -29,7 +29,9 @@
 #include "mgmt/manager-base.hpp"
 #include "fw/forwarder.hpp"
 
+#include "tests/test-common.hpp"
 #include "tests/key-chain-fixture.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 #include <ndn-cxx/security/command-interest-signer.hpp>
 #include <ndn-cxx/util/dummy-client-face.hpp>
@@ -39,7 +41,7 @@
 
 /** \brief A fixture that provides a CommandInterestSigner.
  */
-class CommandInterestSignerFixture : public UnitTestTimeFixture, public KeyChainFixture
+class CommandInterestSignerFixture : public GlobalIoTimeFixture, public KeyChainFixture
 {
 protected:
   CommandInterestSignerFixture();
diff --git a/tests/daemon/mgmt/rib-manager-sl-announce.t.cpp b/tests/daemon/mgmt/rib-manager-sl-announce.t.cpp
index 6310ced..2afa8fd 100644
--- a/tests/daemon/mgmt/rib-manager-sl-announce.t.cpp
+++ b/tests/daemon/mgmt/rib-manager-sl-announce.t.cpp
@@ -26,7 +26,9 @@
 #include "mgmt/rib-manager.hpp"
 #include "rib/fib-updater.hpp"
 
+#include "tests/test-common.hpp"
 #include "tests/key-chain-fixture.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 #include <ndn-cxx/util/dummy-client-face.hpp>
 
@@ -35,7 +37,7 @@
 
 using rib::Route;
 
-class RibManagerSlAnnounceFixture : public UnitTestTimeFixture, public KeyChainFixture
+class RibManagerSlAnnounceFixture : public GlobalIoTimeFixture, public KeyChainFixture
 {
 public:
   using SlAnnounceResult = RibManager::SlAnnounceResult;
diff --git a/tests/daemon/mgmt/tables-config-section.t.cpp b/tests/daemon/mgmt/tables-config-section.t.cpp
index a52b688..cfcc3ba 100644
--- a/tests/daemon/mgmt/tables-config-section.t.cpp
+++ b/tests/daemon/mgmt/tables-config-section.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -30,12 +30,13 @@
 
 #include "tests/test-common.hpp"
 #include "tests/check-typeid.hpp"
-#include "../fw/dummy-strategy.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
+#include "tests/daemon/fw/dummy-strategy.hpp"
 
 namespace nfd {
 namespace tests {
 
-class TablesConfigSectionFixture : protected BaseFixture
+class TablesConfigSectionFixture : public GlobalIoFixture
 {
 protected:
   TablesConfigSectionFixture()
diff --git a/tests/daemon/rib-io-fixture.cpp b/tests/daemon/rib-io-fixture.cpp
index 98563a9..768c5cc 100644
--- a/tests/daemon/rib-io-fixture.cpp
+++ b/tests/daemon/rib-io-fixture.cpp
@@ -24,6 +24,7 @@
  */
 
 #include "tests/daemon/rib-io-fixture.hpp"
+#include "tests/test-common.hpp"
 #include "daemon/global.hpp"
 
 #include <boost/exception/diagnostic_information.hpp>
@@ -121,6 +122,11 @@
   } while (nHandlersRun > 0);
 }
 
+RibIoTimeFixture::RibIoTimeFixture()
+  : ClockFixture(g_io)
+{
+}
+
 void
 RibIoTimeFixture::pollAfterClockTick()
 {
diff --git a/tests/daemon/rib-io-fixture.hpp b/tests/daemon/rib-io-fixture.hpp
index 67b803c..5fcefb6 100644
--- a/tests/daemon/rib-io-fixture.hpp
+++ b/tests/daemon/rib-io-fixture.hpp
@@ -26,7 +26,7 @@
 #ifndef NFD_TESTS_DAEMON_RIB_IO_FIXTURE_HPP
 #define NFD_TESTS_DAEMON_RIB_IO_FIXTURE_HPP
 
-#include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 #include <condition_variable>
 #include <mutex>
@@ -37,7 +37,7 @@
 
 /** \brief A base test fixture that provides both main and RIB io_service.
  */
-class RibIoFixture : public virtual BaseFixture
+class RibIoFixture : public GlobalIoFixture
 {
 protected:
   RibIoFixture();
@@ -79,8 +79,11 @@
 
 /** \brief RibIoFixture that also overrides steady clock and system clock.
  */
-class RibIoTimeFixture : public RibIoFixture, public UnitTestTimeFixture
+class RibIoTimeFixture : public RibIoFixture, public ClockFixture
 {
+protected:
+  RibIoTimeFixture();
+
 private:
   void
   pollAfterClockTick() override;
diff --git a/tests/daemon/rib/fib-updates-common.hpp b/tests/daemon/rib/fib-updates-common.hpp
index 7a123d3..77348be 100644
--- a/tests/daemon/rib/fib-updates-common.hpp
+++ b/tests/daemon/rib/fib-updates-common.hpp
@@ -29,6 +29,7 @@
 #include "rib/fib-updater.hpp"
 
 #include "tests/key-chain-fixture.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 #include "tests/daemon/rib/create-route.hpp"
 
 #include <ndn-cxx/util/dummy-client-face.hpp>
@@ -60,7 +61,7 @@
   return false;
 }
 
-class FibUpdatesFixture : public nfd::tests::BaseFixture, public nfd::tests::KeyChainFixture
+class FibUpdatesFixture : public nfd::tests::GlobalIoFixture, public nfd::tests::KeyChainFixture
 {
 public:
   FibUpdatesFixture()
diff --git a/tests/daemon/rib/readvertise/client-to-nlsr-readvertise-policy.t.cpp b/tests/daemon/rib/readvertise/client-to-nlsr-readvertise-policy.t.cpp
index 6925de1..6b67702 100644
--- a/tests/daemon/rib/readvertise/client-to-nlsr-readvertise-policy.t.cpp
+++ b/tests/daemon/rib/readvertise/client-to-nlsr-readvertise-policy.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -26,6 +26,7 @@
 #include "rib/readvertise/client-to-nlsr-readvertise-policy.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 namespace nfd {
 namespace rib {
@@ -34,7 +35,7 @@
 using namespace nfd::tests;
 
 BOOST_AUTO_TEST_SUITE(Readvertise)
-BOOST_FIXTURE_TEST_SUITE(TestClientToNlsrReadvertisePolicy, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestClientToNlsrReadvertisePolicy, GlobalIoFixture)
 
 BOOST_AUTO_TEST_CASE(ReadvertiseClientRoute)
 {
diff --git a/tests/daemon/rib/readvertise/host-to-gateway-readvertise-policy.t.cpp b/tests/daemon/rib/readvertise/host-to-gateway-readvertise-policy.t.cpp
index aaff73e..94120c0 100644
--- a/tests/daemon/rib/readvertise/host-to-gateway-readvertise-policy.t.cpp
+++ b/tests/daemon/rib/readvertise/host-to-gateway-readvertise-policy.t.cpp
@@ -25,7 +25,9 @@
 
 #include "rib/readvertise/host-to-gateway-readvertise-policy.hpp"
 
+#include "tests/test-common.hpp"
 #include "tests/key-chain-fixture.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 #include <ndn-cxx/security/signing-helpers.hpp>
 
@@ -35,7 +37,7 @@
 
 using namespace nfd::tests;
 
-class HostToGatewayReadvertisePolicyFixture : public BaseFixture, public KeyChainFixture
+class HostToGatewayReadvertisePolicyFixture : public GlobalIoFixture, public KeyChainFixture
 {
 public:
   static RibRouteRef
diff --git a/tests/daemon/rib/readvertise/nfd-rib-readvertise-destination.t.cpp b/tests/daemon/rib/readvertise/nfd-rib-readvertise-destination.t.cpp
index 6787769..690a53b 100644
--- a/tests/daemon/rib/readvertise/nfd-rib-readvertise-destination.t.cpp
+++ b/tests/daemon/rib/readvertise/nfd-rib-readvertise-destination.t.cpp
@@ -25,8 +25,9 @@
 
 #include "rib/readvertise/nfd-rib-readvertise-destination.hpp"
 
-#include "tests/key-chain-fixture.hpp"
 #include "tests/test-common.hpp"
+#include "tests/key-chain-fixture.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 #include <ndn-cxx/security/signing-info.hpp>
 #include <ndn-cxx/util/dummy-client-face.hpp>
@@ -37,7 +38,7 @@
 
 using namespace nfd::tests;
 
-class NfdRibReadvertiseDestinationFixture : public UnitTestTimeFixture, public KeyChainFixture
+class NfdRibReadvertiseDestinationFixture : public GlobalIoTimeFixture, public KeyChainFixture
 {
 public:
   NfdRibReadvertiseDestinationFixture()
diff --git a/tests/daemon/rib/readvertise/readvertise.t.cpp b/tests/daemon/rib/readvertise/readvertise.t.cpp
index 15cc105..090bd5a 100644
--- a/tests/daemon/rib/readvertise/readvertise.t.cpp
+++ b/tests/daemon/rib/readvertise/readvertise.t.cpp
@@ -25,7 +25,9 @@
 
 #include "rib/readvertise/readvertise.hpp"
 
+#include "tests/test-common.hpp"
 #include "tests/key-chain-fixture.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 #include <ndn-cxx/util/dummy-client-face.hpp>
 
@@ -111,7 +113,7 @@
   std::vector<HistoryEntry> withdrawHistory;
 };
 
-class ReadvertiseFixture : public UnitTestTimeFixture, public KeyChainFixture
+class ReadvertiseFixture : public GlobalIoTimeFixture, public KeyChainFixture
 {
 public:
   ReadvertiseFixture()
diff --git a/tests/daemon/rib/rib-entry.t.cpp b/tests/daemon/rib/rib-entry.t.cpp
index a5c9f3c..70b053a 100644
--- a/tests/daemon/rib/rib-entry.t.cpp
+++ b/tests/daemon/rib/rib-entry.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -24,7 +24,9 @@
  */
 
 #include "rib/rib-entry.hpp"
+
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 namespace nfd {
 namespace rib {
@@ -32,7 +34,7 @@
 
 using namespace nfd::tests;
 
-BOOST_FIXTURE_TEST_SUITE(TestRibEntry, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestRibEntry, GlobalIoFixture)
 
 BOOST_AUTO_TEST_CASE(Basic)
 {
@@ -74,7 +76,7 @@
   BOOST_CHECK(entry.findRoute(route2) != entry.getRoutes().end());
 }
 
-BOOST_FIXTURE_TEST_SUITE(GetAnnouncement, UnitTestTimeFixture)
+BOOST_FIXTURE_TEST_SUITE(GetAnnouncement, GlobalIoTimeFixture)
 
 static Route
 makeSimpleRoute(uint64_t faceId)
diff --git a/tests/daemon/rib/rib-update.t.cpp b/tests/daemon/rib/rib-update.t.cpp
index 22577f0..a4feca1 100644
--- a/tests/daemon/rib/rib-update.t.cpp
+++ b/tests/daemon/rib/rib-update.t.cpp
@@ -27,13 +27,14 @@
 #include "rib/rib-update-batch.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 #include "tests/daemon/rib/create-route.hpp"
 
 namespace nfd {
 namespace rib {
 namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(TestRibUpdate, nfd::tests::BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestRibUpdate, nfd::tests::GlobalIoFixture)
 
 BOOST_AUTO_TEST_CASE(BatchBasic)
 {
diff --git a/tests/daemon/rib/rib.t.cpp b/tests/daemon/rib/rib.t.cpp
index 26a47b3..a1b8363 100644
--- a/tests/daemon/rib/rib.t.cpp
+++ b/tests/daemon/rib/rib.t.cpp
@@ -26,13 +26,14 @@
 #include "rib/rib.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 #include "tests/daemon/rib/create-route.hpp"
 
 namespace nfd {
 namespace rib {
 namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(TestRib, nfd::tests::BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestRib, nfd::tests::GlobalIoFixture)
 
 BOOST_AUTO_TEST_CASE(Parent)
 {
diff --git a/tests/daemon/rib/route.t.cpp b/tests/daemon/rib/route.t.cpp
index b1390b8..b6e0ddb 100644
--- a/tests/daemon/rib/route.t.cpp
+++ b/tests/daemon/rib/route.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -26,6 +26,7 @@
 #include "rib/route.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 namespace nfd {
 namespace rib {
@@ -33,9 +34,9 @@
 
 using namespace nfd::tests;
 
-BOOST_FIXTURE_TEST_SUITE(TestRoute, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestRoute, GlobalIoTimeFixture)
 
-BOOST_FIXTURE_TEST_SUITE(CreateFromAnnouncement, UnitTestTimeFixture)
+BOOST_AUTO_TEST_SUITE(CreateFromAnnouncement)
 
 BOOST_AUTO_TEST_CASE(NoValidity)
 {
@@ -124,7 +125,7 @@
   BOOST_CHECK_EQUAL(a, b);
 }
 
-BOOST_FIXTURE_TEST_CASE(EqualityAnn, UnitTestTimeFixture)
+BOOST_AUTO_TEST_CASE(EqualityAnn)
 {
   auto ann1 = makePrefixAnn("/ann", 1_h);
   auto ann2 = makePrefixAnn("/ann", 2_h);
@@ -133,7 +134,7 @@
   BOOST_CHECK_NE(Route(ann1, 7001), Route(ann2, 7001));
 }
 
-BOOST_FIXTURE_TEST_CASE(Output, UnitTestTimeFixture)
+BOOST_AUTO_TEST_CASE(Output)
 {
   Route r;
   BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(r),
diff --git a/tests/daemon/table/cleanup.t.cpp b/tests/daemon/table/cleanup.t.cpp
index c6bd772..25405a6 100644
--- a/tests/daemon/table/cleanup.t.cpp
+++ b/tests/daemon/table/cleanup.t.cpp
@@ -27,15 +27,14 @@
 #include "fw/forwarder.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 #include "tests/daemon/face/dummy-face.hpp"
 
 namespace nfd {
 namespace tests {
 
-using namespace nfd::tests;
-
 BOOST_AUTO_TEST_SUITE(Table)
-BOOST_FIXTURE_TEST_SUITE(TestCleanup, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestCleanup, GlobalIoFixture)
 
 BOOST_AUTO_TEST_SUITE(FaceRemoval)
 
diff --git a/tests/daemon/table/cs-policy-lru.t.cpp b/tests/daemon/table/cs-policy-lru.t.cpp
index 7466510..bc28639 100644
--- a/tests/daemon/table/cs-policy-lru.t.cpp
+++ b/tests/daemon/table/cs-policy-lru.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2017,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -27,6 +27,7 @@
 #include "table/cs.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 namespace nfd {
 namespace cs {
@@ -43,7 +44,7 @@
   BOOST_CHECK_EQUAL(policyNames.count("lru"), 1);
 }
 
-BOOST_FIXTURE_TEST_CASE(EvictOne, UnitTestTimeFixture)
+BOOST_FIXTURE_TEST_CASE(EvictOne, GlobalIoTimeFixture)
 {
   Cs cs(3);
   cs.setPolicy(make_unique<LruPolicy>());
diff --git a/tests/daemon/table/cs-policy-priority-fifo.t.cpp b/tests/daemon/table/cs-policy-priority-fifo.t.cpp
index b68729a..cd71b5b 100644
--- a/tests/daemon/table/cs-policy-priority-fifo.t.cpp
+++ b/tests/daemon/table/cs-policy-priority-fifo.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2017,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -27,6 +27,7 @@
 #include "table/cs.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 namespace nfd {
 namespace cs {
@@ -43,7 +44,7 @@
   BOOST_CHECK_EQUAL(policyNames.count("priority_fifo"), 1);
 }
 
-BOOST_FIXTURE_TEST_CASE(EvictOne, UnitTestTimeFixture)
+BOOST_FIXTURE_TEST_CASE(EvictOne, GlobalIoTimeFixture)
 {
   Cs cs(3);
   cs.setPolicy(make_unique<PriorityFifoPolicy>());
@@ -96,7 +97,7 @@
           bind([] { BOOST_CHECK(true); }));
 }
 
-BOOST_FIXTURE_TEST_CASE(Refresh, UnitTestTimeFixture)
+BOOST_FIXTURE_TEST_CASE(Refresh, GlobalIoTimeFixture)
 {
   Cs cs(3);
   cs.setPolicy(make_unique<PriorityFifoPolicy>());
diff --git a/tests/daemon/table/cs.t.cpp b/tests/daemon/table/cs.t.cpp
index a8363de..bcfd3a5 100644
--- a/tests/daemon/table/cs.t.cpp
+++ b/tests/daemon/table/cs.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -26,6 +26,7 @@
 #include "table/cs.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 #include <cstring>
 
@@ -33,18 +34,18 @@
 #include <ndn-cxx/lp/tags.hpp>
 #include <ndn-cxx/util/sha256.hpp>
 
-#define CHECK_CS_FIND(expected) find([&] (uint32_t found) { BOOST_CHECK_EQUAL(expected, found); });
-
 namespace nfd {
 namespace cs {
 namespace tests {
 
 using namespace nfd::tests;
 
-BOOST_AUTO_TEST_SUITE(Table)
-BOOST_FIXTURE_TEST_SUITE(TestCs, BaseFixture)
+#define CHECK_CS_FIND(expected) find([&] (uint32_t found) { BOOST_CHECK_EQUAL(expected, found); });
 
-class FindFixture : public UnitTestTimeFixture
+BOOST_AUTO_TEST_SUITE(Table)
+BOOST_FIXTURE_TEST_SUITE(TestCs, GlobalIoFixture)
+
+class FindFixture : public GlobalIoTimeFixture
 {
 protected:
   Name
diff --git a/tests/daemon/table/dead-nonce-list.t.cpp b/tests/daemon/table/dead-nonce-list.t.cpp
index 1df1070..ea7866c 100644
--- a/tests/daemon/table/dead-nonce-list.t.cpp
+++ b/tests/daemon/table/dead-nonce-list.t.cpp
@@ -27,12 +27,13 @@
 #include "daemon/global.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 namespace nfd {
 namespace tests {
 
 BOOST_AUTO_TEST_SUITE(Table)
-BOOST_FIXTURE_TEST_SUITE(TestDeadNonceList, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestDeadNonceList, GlobalIoFixture)
 
 BOOST_AUTO_TEST_CASE(Basic)
 {
@@ -58,7 +59,7 @@
 }
 
 /// A Fixture that periodically inserts Nonces
-class PeriodicalInsertionFixture : public UnitTestTimeFixture
+class PeriodicalInsertionFixture : public GlobalIoTimeFixture
 {
 protected:
   PeriodicalInsertionFixture()
@@ -108,6 +109,7 @@
   time::nanoseconds timeUnit;
   scheduler::ScopedEventId addNonceEvent;
 };
+
 const time::nanoseconds PeriodicalInsertionFixture::LIFETIME = time::milliseconds(200);
 
 BOOST_FIXTURE_TEST_CASE(Lifetime, PeriodicalInsertionFixture)
diff --git a/tests/daemon/table/fib.t.cpp b/tests/daemon/table/fib.t.cpp
index 0a6ccff..6e83a95 100644
--- a/tests/daemon/table/fib.t.cpp
+++ b/tests/daemon/table/fib.t.cpp
@@ -26,9 +26,10 @@
 #include "table/fib.hpp"
 #include "table/pit.hpp"
 #include "table/measurements.hpp"
-#include "tests/daemon/face/dummy-face.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
+#include "tests/daemon/face/dummy-face.hpp"
 
 namespace nfd {
 namespace fib {
@@ -37,7 +38,7 @@
 using namespace nfd::tests;
 
 BOOST_AUTO_TEST_SUITE(Table)
-BOOST_FIXTURE_TEST_SUITE(TestFib, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestFib, GlobalIoFixture)
 
 BOOST_AUTO_TEST_CASE(FibEntry)
 {
diff --git a/tests/daemon/table/measurements-accessor.t.cpp b/tests/daemon/table/measurements-accessor.t.cpp
index 86a005a..aeed38f 100644
--- a/tests/daemon/table/measurements-accessor.t.cpp
+++ b/tests/daemon/table/measurements-accessor.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -27,8 +27,9 @@
 #include "fw/strategy.hpp"
 
 #include "tests/test-common.hpp"
-#include "../fw/dummy-strategy.hpp"
-#include "../fw/choose-strategy.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
+#include "tests/daemon/fw/dummy-strategy.hpp"
+#include "tests/daemon/fw/choose-strategy.hpp"
 
 namespace nfd {
 namespace measurements {
@@ -57,7 +58,7 @@
   }
 };
 
-class MeasurementsAccessorFixture : public BaseFixture
+class MeasurementsAccessorFixture : public GlobalIoFixture
 {
 protected:
   MeasurementsAccessorFixture()
diff --git a/tests/daemon/table/measurements.t.cpp b/tests/daemon/table/measurements.t.cpp
index a7e315d..915a049 100644
--- a/tests/daemon/table/measurements.t.cpp
+++ b/tests/daemon/table/measurements.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2017,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -28,6 +28,7 @@
 #include "table/pit.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 namespace nfd {
 namespace measurements {
@@ -37,7 +38,7 @@
 
 BOOST_AUTO_TEST_SUITE(Table)
 
-class MeasurementsFixture : public UnitTestTimeFixture
+class MeasurementsFixture : public GlobalIoTimeFixture
 {
 public:
   MeasurementsFixture()
diff --git a/tests/daemon/table/name-tree.t.cpp b/tests/daemon/table/name-tree.t.cpp
index 458d7e3..4e325bc 100644
--- a/tests/daemon/table/name-tree.t.cpp
+++ b/tests/daemon/table/name-tree.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -26,6 +26,7 @@
 #include "table/name-tree.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 namespace nfd {
 namespace name_tree {
@@ -34,7 +35,7 @@
 using namespace nfd::tests;
 
 BOOST_AUTO_TEST_SUITE(Table)
-BOOST_FIXTURE_TEST_SUITE(TestNameTree, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestNameTree, GlobalIoFixture)
 
 BOOST_AUTO_TEST_CASE(ComputeHash)
 {
@@ -458,7 +459,7 @@
   std::unordered_set<Name> m_names;
 };
 
-class EnumerationFixture : public BaseFixture
+class EnumerationFixture : public GlobalIoFixture
 {
 protected:
   EnumerationFixture()
diff --git a/tests/daemon/table/network-region-table.t.cpp b/tests/daemon/table/network-region-table.t.cpp
index 68f1a03..11948bc 100644
--- a/tests/daemon/table/network-region-table.t.cpp
+++ b/tests/daemon/table/network-region-table.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2017,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -26,12 +26,13 @@
 #include "table/network-region-table.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 namespace nfd {
 namespace tests {
 
 BOOST_AUTO_TEST_SUITE(Table)
-BOOST_FIXTURE_TEST_SUITE(TestNetworkRegionTable, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestNetworkRegionTable, GlobalIoFixture)
 
 BOOST_AUTO_TEST_CASE(InProducerRegion)
 {
diff --git a/tests/daemon/table/pit-entry.t.cpp b/tests/daemon/table/pit-entry.t.cpp
index d4234ad..a155be2 100644
--- a/tests/daemon/table/pit-entry.t.cpp
+++ b/tests/daemon/table/pit-entry.t.cpp
@@ -24,9 +24,10 @@
  */
 
 #include "table/pit-entry.hpp"
-#include "tests/daemon/face/dummy-face.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
+#include "tests/daemon/face/dummy-face.hpp"
 
 namespace nfd {
 namespace pit {
@@ -35,7 +36,7 @@
 using namespace nfd::tests;
 
 BOOST_AUTO_TEST_SUITE(Table)
-BOOST_FIXTURE_TEST_SUITE(TestPitEntry, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestPitEntry, GlobalIoFixture)
 
 BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES(CanMatch, 1)
 BOOST_AUTO_TEST_CASE(CanMatch)
diff --git a/tests/daemon/table/pit.t.cpp b/tests/daemon/table/pit.t.cpp
index 511f2aa..7c6d791 100644
--- a/tests/daemon/table/pit.t.cpp
+++ b/tests/daemon/table/pit.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -25,8 +25,9 @@
 
 #include "table/pit.hpp"
 
-#include "tests/daemon/face/dummy-face.hpp"
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
+#include "tests/daemon/face/dummy-face.hpp"
 
 #include <ndn-cxx/exclude.hpp>
 
@@ -37,7 +38,7 @@
 using namespace nfd::tests;
 
 BOOST_AUTO_TEST_SUITE(Table)
-BOOST_FIXTURE_TEST_SUITE(TestPit, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestPit, GlobalIoFixture)
 
 BOOST_AUTO_TEST_CASE(Find)
 {
diff --git a/tests/daemon/table/strategy-choice.t.cpp b/tests/daemon/table/strategy-choice.t.cpp
index 0173af4..339903e 100644
--- a/tests/daemon/table/strategy-choice.t.cpp
+++ b/tests/daemon/table/strategy-choice.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2017,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -26,14 +26,13 @@
 #include "table/strategy-choice.hpp"
 
 #include "tests/test-common.hpp"
-#include "../fw/dummy-strategy.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
+#include "tests/daemon/fw/dummy-strategy.hpp"
 
 namespace nfd {
 namespace tests {
 
-using fw::Strategy;
-
-class StrategyChoiceFixture : public BaseFixture
+class StrategyChoiceFixture : public GlobalIoFixture
 {
 protected:
   StrategyChoiceFixture()
@@ -66,7 +65,7 @@
   bool
   isStrategyType(const Name& prefix)
   {
-    Strategy& effectiveStrategy = sc.findEffectiveStrategy(prefix);
+    auto& effectiveStrategy = sc.findEffectiveStrategy(prefix);
     return dynamic_cast<S*>(&effectiveStrategy) != nullptr;
   }
 
diff --git a/tests/daemon/table/strategy-info-host.t.cpp b/tests/daemon/table/strategy-info-host.t.cpp
index 0a3dc2a..2a3a33e 100644
--- a/tests/daemon/table/strategy-info-host.t.cpp
+++ b/tests/daemon/table/strategy-info-host.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -26,6 +26,7 @@
 #include "table/strategy-info-host.hpp"
 
 #include "tests/test-common.hpp"
+#include "tests/daemon/global-io-fixture.hpp"
 
 namespace nfd {
 namespace tests {
@@ -78,7 +79,7 @@
 };
 
 BOOST_AUTO_TEST_SUITE(Table)
-BOOST_FIXTURE_TEST_SUITE(TestStrategyInfoHost, BaseFixture)
+BOOST_FIXTURE_TEST_SUITE(TestStrategyInfoHost, GlobalIoFixture)
 
 BOOST_AUTO_TEST_CASE(Basic)
 {
diff --git a/tests/key-chain-fixture.hpp b/tests/key-chain-fixture.hpp
index 810dab8..18ba4fc 100644
--- a/tests/key-chain-fixture.hpp
+++ b/tests/key-chain-fixture.hpp
@@ -26,7 +26,7 @@
 #ifndef NFD_TESTS_KEY_CHAIN_FIXTURE_HPP
 #define NFD_TESTS_KEY_CHAIN_FIXTURE_HPP
 
-#include "tests/test-common.hpp"
+#include "core/common.hpp"
 
 #include <ndn-cxx/security/key-chain.hpp>
 
diff --git a/tests/other/wscript b/tests/other/wscript
index da57688..3393a15 100644
--- a/tests/other/wscript
+++ b/tests/other/wscript
@@ -37,7 +37,7 @@
         bld.program(name=module,
                     target='../../%s' % module,
                     source=bld.path.ant_glob('%s*.cpp' % module),
-                    use='daemon-objects unit-tests-base other-tests-%s-main' % module,
+                    use='daemon-objects tests-common other-tests-%s-main' % module,
                     defines=['UNIT_TEST_CONFIG_PATH="%s"' % bld.bldnode.make_node('tmp-files')],
                     install_path=None)
 
diff --git a/tests/test-case.t.cpp.sample b/tests/test-case.t.cpp.sample
deleted file mode 100644
index bfc8219..0000000
--- a/tests/test-case.t.cpp.sample
+++ /dev/null
@@ -1,66 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2018,  Regents of the University of California,
- *                           Arizona Board of Regents,
- *                           Colorado State University,
- *                           University Pierre & Marie Curie, Sorbonne University,
- *                           Washington University in St. Louis,
- *                           Beijing Institute of Technology,
- *                           The University of Memphis.
- *
- * This file is part of NFD (Named Data Networking Forwarding Daemon).
- * See AUTHORS.md for complete list of NFD authors and contributors.
- *
- * NFD is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-// #include "unit-under-test.hpp"
-// The unit being tested MUST be included first, to ensure the header compiles on its own.
-// For further information about test naming conventions, see
-// https://redmine.named-data.net/projects/nfd/wiki/UnitTesting
-
-#include "tests/test-common.hpp"
-
-// Unit tests SHOULD go inside nfd::tests namespace.
-namespace nfd {
-namespace tests {
-
-// Test suite SHOULD use BaseFixture or a subclass of it.
-BOOST_FIXTURE_TEST_SUITE(TestSkeleton, BaseFixture)
-
-BOOST_AUTO_TEST_CASE(Test1)
-{
-  int i = 0;
-
-  // For reference of available Boost.Test macros, see
-  // https://www.boost.org/doc/libs/1_58_0/libs/test/doc/html/utf/testing-tools/reference.html
-
-  BOOST_CHECK_EQUAL(i, 0);
-  BOOST_CHECK_GT(++i, 0);
-}
-
-// Custom fixture SHOULD derive from BaseFixture.
-class Test2Fixture : protected BaseFixture
-{
-};
-
-BOOST_FIXTURE_TEST_CASE(Test2, Test2Fixture)
-{
-  // g_io is a shorthand of getGlobalIoService().
-  // resetGlobalIoService() is automatically called after each test case.
-  g_io.run();
-}
-
-BOOST_AUTO_TEST_SUITE_END()
-
-} // namespace tests
-} // namespace nfd
diff --git a/tests/test-common.cpp b/tests/test-common.cpp
index 236007e..534d961 100644
--- a/tests/test-common.cpp
+++ b/tests/test-common.cpp
@@ -24,23 +24,12 @@
  */
 
 #include "tests/test-common.hpp"
-#include "daemon/global.hpp"
 
 #include <ndn-cxx/security/signature-sha256-with-rsa.hpp>
 
 namespace nfd {
 namespace tests {
 
-BaseFixture::BaseFixture()
-  : g_io(getGlobalIoService())
-{
-}
-
-BaseFixture::~BaseFixture()
-{
-  resetGlobalIoService();
-}
-
 shared_ptr<Interest>
 makeInterest(const Name& name, uint32_t nonce)
 {
diff --git a/tests/test-common.hpp b/tests/test-common.hpp
index 775c032..63b1a99 100644
--- a/tests/test-common.hpp
+++ b/tests/test-common.hpp
@@ -26,9 +26,8 @@
 #ifndef NFD_TESTS_TEST_COMMON_HPP
 #define NFD_TESTS_TEST_COMMON_HPP
 
-#include "boost-test.hpp"
-
-#include "tests/clock-fixture.hpp"
+#include "core/common.hpp"
+#include "tests/boost-test.hpp"
 
 #include <ndn-cxx/prefix-announcement.hpp>
 
@@ -48,36 +47,6 @@
 namespace nfd {
 namespace tests {
 
-/** \brief base test fixture
- *
- *  Every test case should be based on this fixture,
- *  to have per test case io_service initialization.
- */
-class BaseFixture
-{
-protected:
-  BaseFixture();
-
-  virtual
-  ~BaseFixture();
-
-protected:
-  /** \brief reference to global io_service
-   */
-  boost::asio::io_service& g_io;
-};
-
-/** \brief a base test fixture that overrides steady clock and system clock
- */
-class UnitTestTimeFixture : public virtual BaseFixture, public ClockFixture
-{
-protected:
-  UnitTestTimeFixture()
-    : ClockFixture(g_io)
-  {
-  }
-};
-
 /** \brief create an Interest
  *  \param name Interest name
  *  \param nonce if non-zero, set Nonce to this value
diff --git a/tests/tools/ndn-autoconfig-server/program.t.cpp b/tests/tools/ndn-autoconfig-server/program.t.cpp
index b8209b0..4e78bef 100644
--- a/tests/tools/ndn-autoconfig-server/program.t.cpp
+++ b/tests/tools/ndn-autoconfig-server/program.t.cpp
@@ -25,6 +25,7 @@
 
 #include "ndn-autoconfig-server/program.hpp"
 
+#include "tests/test-common.hpp"
 #include "tests/key-chain-fixture.hpp"
 
 #include <ndn-cxx/encoding/buffer.hpp>
diff --git a/tests/tools/ndn-autoconfig/multicast-discovery.t.cpp b/tests/tools/ndn-autoconfig/multicast-discovery.t.cpp
index 8905d58..0e08a36 100644
--- a/tests/tools/ndn-autoconfig/multicast-discovery.t.cpp
+++ b/tests/tools/ndn-autoconfig/multicast-discovery.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2017,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -25,7 +25,8 @@
 
 #include "ndn-autoconfig/multicast-discovery.hpp"
 
-#include "../mock-nfd-mgmt-fixture.hpp"
+#include "tests/tools/mock-nfd-mgmt-fixture.hpp"
+
 #include <ndn-cxx/encoding/block-helpers.hpp>
 #include <ndn-cxx/encoding/tlv-nfd.hpp>
 
diff --git a/tests/tools/ndn-autoconfig/procedure.t.cpp b/tests/tools/ndn-autoconfig/procedure.t.cpp
index ec7cf31..760f8b0 100644
--- a/tests/tools/ndn-autoconfig/procedure.t.cpp
+++ b/tests/tools/ndn-autoconfig/procedure.t.cpp
@@ -25,7 +25,7 @@
 
 #include "ndn-autoconfig/procedure.hpp"
 
-#include "../mock-nfd-mgmt-fixture.hpp"
+#include "tests/tools/mock-nfd-mgmt-fixture.hpp"
 
 #include <boost/logic/tribool.hpp>
 
diff --git a/tests/tools/nfdc/command-definition.t.cpp b/tests/tools/nfdc/command-definition.t.cpp
index 374e36d..777a554 100644
--- a/tests/tools/nfdc/command-definition.t.cpp
+++ b/tests/tools/nfdc/command-definition.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -32,10 +32,8 @@
 namespace nfdc {
 namespace tests {
 
-using namespace nfd::tests;
-
 BOOST_AUTO_TEST_SUITE(Nfdc)
-BOOST_FIXTURE_TEST_SUITE(TestCommandDefinition, BaseFixture)
+BOOST_AUTO_TEST_SUITE(TestCommandDefinition)
 
 BOOST_AUTO_TEST_SUITE(Arguments)
 
diff --git a/tests/tools/nfdc/command-parser.t.cpp b/tests/tools/nfdc/command-parser.t.cpp
index 3eef29d..26c97fb 100644
--- a/tests/tools/nfdc/command-parser.t.cpp
+++ b/tests/tools/nfdc/command-parser.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -32,10 +32,8 @@
 namespace nfdc {
 namespace tests {
 
-using namespace nfd::tests;
-
 BOOST_AUTO_TEST_SUITE(Nfdc)
-BOOST_FIXTURE_TEST_SUITE(TestCommandParser, BaseFixture)
+BOOST_AUTO_TEST_SUITE(TestCommandParser)
 
 BOOST_AUTO_TEST_CASE(PrintAvailableIn)
 {
diff --git a/tests/tools/nfdc/help.t.cpp b/tests/tools/nfdc/help.t.cpp
index ab53004..8d4a65d 100644
--- a/tests/tools/nfdc/help.t.cpp
+++ b/tests/tools/nfdc/help.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -32,10 +32,8 @@
 namespace nfdc {
 namespace tests {
 
-using namespace nfd::tests;
-
 BOOST_AUTO_TEST_SUITE(Nfdc)
-BOOST_FIXTURE_TEST_SUITE(TestHelp, BaseFixture)
+BOOST_AUTO_TEST_SUITE(TestHelp)
 
 BOOST_AUTO_TEST_CASE(Basic)
 {
diff --git a/tests/tools/nfdc/mock-nfd-mgmt-fixture.hpp b/tests/tools/nfdc/mock-nfd-mgmt-fixture.hpp
index 9841de8..5242c9b 100644
--- a/tests/tools/nfdc/mock-nfd-mgmt-fixture.hpp
+++ b/tests/tools/nfdc/mock-nfd-mgmt-fixture.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2017,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -26,7 +26,7 @@
 #ifndef NFD_TESTS_TOOLS_NFDC_MOCK_NFD_MGMT_FIXTURE_HPP
 #define NFD_TESTS_TOOLS_NFDC_MOCK_NFD_MGMT_FIXTURE_HPP
 
-#include "../mock-nfd-mgmt-fixture.hpp"
+#include "tests/tools/mock-nfd-mgmt-fixture.hpp"
 
 namespace nfd {
 namespace tools {
diff --git a/tests/wscript b/tests/wscript
index 9c17ad3..ef00870 100644
--- a/tests/wscript
+++ b/tests/wscript
@@ -32,7 +32,7 @@
 
         # common test objects
         bld.objects(
-            target='unit-tests-base',
+            target='tests-common',
             features='pch',
             source=bld.path.ant_glob('*.cpp', excl='main.cpp'),
             use='core-objects',
@@ -62,17 +62,17 @@
                 src += node.ant_glob('face/unix*.cpp')
             if bld.env.HAVE_WEBSOCKET:
                 src += node.ant_glob('face/websocket*.cpp')
-            if module == 'core' or module == 'tools':
-                src += ['../daemon/global.cpp']
             if module == 'rib':
-                src += ['daemon/limited-io.cpp', 'daemon/rib-io-fixture.cpp']
+                src += ['daemon/global-io-fixture.cpp',
+                        'daemon/limited-io.cpp',
+                        'daemon/rib-io-fixture.cpp']
 
             objmod = 'daemon' if module == 'rib' else module
             # unit-tests binary for the module
             bld.program(name='unit-tests-%s' % module,
                         target='../unit-tests-%s' % module,
                         source=src,
-                        use='%s-objects unit-tests-base unit-tests-%s-main' % (objmod, module),
+                        use='%s-objects tests-common unit-tests-%s-main' % (objmod, module),
                         defines=[config_path],
                         install_path=None)