blob: d7ace9609d5a80e3ae916aaca9d3894cb3c965f0 [file] [log] [blame]
Vince Lehman7c603292014-09-11 17:48:16 -05001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
Nick Gordonc6a85222017-01-03 16:54:34 -06003 * Copyright (c) 2014-2017, The University of Memphis,
Nick Gordonf8b5bcd2016-08-11 15:06:50 -05004 * Regents of the University of California
Vince Lehman7c603292014-09-11 17:48:16 -05005 *
6 * This file is part of NLSR (Named-data Link State Routing).
7 * See AUTHORS.md for complete list of NLSR authors and contributors.
8 *
9 * NLSR is free software: you can redistribute it and/or modify it under the terms
10 * of the GNU General Public License as published by the Free Software Foundation,
11 * either version 3 of the License, or (at your option) any later version.
12 *
13 * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
14 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along with
18 * NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
19 *
20 *
21 **/
22
23#ifndef NLSR_TEST_COMMON_HPP
24#define NLSR_TEST_COMMON_HPP
25
Vince Lehman0a7da612014-10-29 14:39:29 -050026#include "common.hpp"
27
Vince Lehman7c603292014-09-11 17:48:16 -050028#include <boost/asio.hpp>
Vince Lehman904c2412014-09-23 19:36:11 -050029#include <boost/test/unit_test.hpp>
Vince Lehman942eb7b2014-10-02 10:09:27 -050030
Vince Lehman7c603292014-09-11 17:48:16 -050031#include <ndn-cxx/util/scheduler.hpp>
Vince Lehman02e32992015-03-11 12:31:20 -050032#include <ndn-cxx/util/time-unit-test-clock.hpp>
Vince Lehman7c603292014-09-11 17:48:16 -050033
34namespace nlsr {
35namespace test {
36
37class BaseFixture
38{
39public:
40 BaseFixture()
41 : g_scheduler(g_ioService)
42 {
43 }
44
45protected:
46 boost::asio::io_service g_ioService;
47 ndn::Scheduler g_scheduler;
48};
49
Vince Lehman02e32992015-03-11 12:31:20 -050050class UnitTestTimeFixture : public BaseFixture
51{
52protected:
53 UnitTestTimeFixture()
54 : steadyClock(make_shared<ndn::time::UnitTestSteadyClock>())
55 , systemClock(make_shared<ndn::time::UnitTestSystemClock>())
56 {
57 ndn::time::setCustomClocks(steadyClock, systemClock);
58 }
59
60 ~UnitTestTimeFixture()
61 {
62 ndn::time::setCustomClocks(nullptr, nullptr);
63 }
64
65 void
66 advanceClocks(const ndn::time::nanoseconds& tick, size_t nTicks = 1)
67 {
68 for (size_t i = 0; i < nTicks; ++i) {
69 steadyClock->advance(tick);
70 systemClock->advance(tick);
71
72 if (g_ioService.stopped()) {
73 g_ioService.reset();
74 }
75
76 g_ioService.poll();
77 }
78 }
79
80protected:
81 shared_ptr<ndn::time::UnitTestSteadyClock> steadyClock;
82 shared_ptr<ndn::time::UnitTestSystemClock> systemClock;
83};
84
Vince Lehman7c603292014-09-11 17:48:16 -050085} // namespace test
86} // namespace nlsr
87
Vince Lehman942eb7b2014-10-02 10:09:27 -050088#endif // NLSR_TEST_COMMON_HPP