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)
 {
