blob: 817b77e4765e4b55289eaac674938b8c61245e00 [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>
Laqin Fana4cf4022017-01-03 18:57:35 +000032#include <ndn-cxx/security/key-chain.hpp>
Vince Lehman02e32992015-03-11 12:31:20 -050033#include <ndn-cxx/util/time-unit-test-clock.hpp>
Vince Lehman7c603292014-09-11 17:48:16 -050034
35namespace nlsr {
36namespace test {
37
38class BaseFixture
39{
40public:
41 BaseFixture()
42 : g_scheduler(g_ioService)
43 {
44 }
45
46protected:
47 boost::asio::io_service g_ioService;
48 ndn::Scheduler g_scheduler;
Laqin Fana4cf4022017-01-03 18:57:35 +000049 ndn::KeyChain g_keyChain;
Vince Lehman7c603292014-09-11 17:48:16 -050050};
51
Vince Lehman02e32992015-03-11 12:31:20 -050052class UnitTestTimeFixture : public BaseFixture
53{
54protected:
55 UnitTestTimeFixture()
dmcoomes9f936662017-03-02 10:33:09 -060056 : steadyClock(std::make_shared<ndn::time::UnitTestSteadyClock>())
57 , systemClock(std::make_shared<ndn::time::UnitTestSystemClock>())
Vince Lehman02e32992015-03-11 12:31:20 -050058 {
59 ndn::time::setCustomClocks(steadyClock, systemClock);
60 }
61
62 ~UnitTestTimeFixture()
63 {
64 ndn::time::setCustomClocks(nullptr, nullptr);
65 }
66
67 void
68 advanceClocks(const ndn::time::nanoseconds& tick, size_t nTicks = 1)
69 {
70 for (size_t i = 0; i < nTicks; ++i) {
71 steadyClock->advance(tick);
72 systemClock->advance(tick);
73
74 if (g_ioService.stopped()) {
75 g_ioService.reset();
76 }
77
78 g_ioService.poll();
79 }
80 }
81
82protected:
dmcoomes9f936662017-03-02 10:33:09 -060083 std::shared_ptr<ndn::time::UnitTestSteadyClock> steadyClock;
84 std::shared_ptr<ndn::time::UnitTestSystemClock> systemClock;
Vince Lehman02e32992015-03-11 12:31:20 -050085};
86
Vince Lehman7c603292014-09-11 17:48:16 -050087} // namespace test
88} // namespace nlsr
89
Vince Lehman942eb7b2014-10-02 10:09:27 -050090#endif // NLSR_TEST_COMMON_HPP