blob: ed026f2bb4c3d9b963217378bfdb2a43249d093a [file] [log] [blame]
Junxiao Shi38f4ce92016-08-04 10:01:52 +00001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
Junxiao Shi1f481fa2017-01-26 15:14:43 +00003 * Copyright (c) 2014-2017, Regents of the University of California,
Junxiao Shi38f4ce92016-08-04 10:01:52 +00004 * Arizona Board of Regents,
5 * Colorado State University,
6 * University Pierre & Marie Curie, Sorbonne University,
7 * Washington University in St. Louis,
8 * Beijing Institute of Technology,
9 * The University of Memphis.
10 *
11 * This file is part of NFD (Named Data Networking Forwarding Daemon).
12 * See AUTHORS.md for complete list of NFD authors and contributors.
13 *
14 * NFD is free software: you can redistribute it and/or modify it under the terms
15 * of the GNU General Public License as published by the Free Software Foundation,
16 * either version 3 of the License, or (at your option) any later version.
17 *
18 * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
19 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
20 * PURPOSE. See the GNU General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License along with
23 * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
24 */
25
Junxiao Shi331ade72016-08-19 14:07:19 +000026#include "nfdc/forwarder-general-module.hpp"
Junxiao Shi38f4ce92016-08-04 10:01:52 +000027#include <ndn-cxx/security/signing-helpers.hpp>
28
Junxiao Shi1f481fa2017-01-26 15:14:43 +000029#include "status-fixture.hpp"
Junxiao Shi38f4ce92016-08-04 10:01:52 +000030
31namespace nfd {
32namespace tools {
Junxiao Shi331ade72016-08-19 14:07:19 +000033namespace nfdc {
Junxiao Shi38f4ce92016-08-04 10:01:52 +000034namespace tests {
35
Junxiao Shi331ade72016-08-19 14:07:19 +000036BOOST_AUTO_TEST_SUITE(Nfdc)
Junxiao Shi1f481fa2017-01-26 15:14:43 +000037BOOST_FIXTURE_TEST_SUITE(TestForwarderGeneralModule, StatusFixture<ForwarderGeneralModule>)
Junxiao Shi38f4ce92016-08-04 10:01:52 +000038
39class MakeNfdIdCollector
40{
41public:
42 unique_ptr<NfdIdCollector>
43 operator()(Face&, KeyChain&) const
44 {
45 return make_unique<NfdIdCollector>(make_unique<ValidatorNull>());
46 };
47};
48
Junxiao Shi1f481fa2017-01-26 15:14:43 +000049class ForwarderGeneralStatusFixture : public StatusFixture<ForwarderGeneralModule,
Junxiao Shi38f4ce92016-08-04 10:01:52 +000050 MakeNfdIdCollector>
51{
52protected:
53 ForwarderGeneralStatusFixture()
54 {
55 module.setNfdIdCollector(*validator);
56
57 this->systemClock->setNow(time::seconds(1468784936));
58 BOOST_REQUIRE(this->addIdentity("/nfd-status/test-nfdid"));
59 }
60
61private:
62 virtual void
63 signDatasetReply(Data& data) override
64 {
65 m_keyChain.sign(data, ndn::security::signingByIdentity("/nfd-status/test-nfdid"));
66 }
67};
68
69const std::string STATUS_XML = stripXmlSpaces(R"XML(
70 <generalStatus>
71 <nfdId>/nfd-status/test-nfdid/KEY/ksk-1468784936000/ID-CERT</nfdId>
72 <version>0.4.1-1-g704430c</version>
73 <startTime>2016-06-24T15:13:46.856000</startTime>
74 <currentTime>2016-07-17T17:55:54.109000</currentTime>
75 <uptime>PT1996927S</uptime>
76 <nNameTreeEntries>668</nNameTreeEntries>
77 <nFibEntries>70</nFibEntries>
78 <nPitEntries>7</nPitEntries>
79 <nMeasurementsEntries>1</nMeasurementsEntries>
80 <nCsEntries>65536</nCsEntries>
81 <packetCounters>
82 <incomingPackets>
83 <nInterests>20699052</nInterests>
84 <nDatas>5598070</nDatas>
85 <nNacks>7230</nNacks>
86 </incomingPackets>
87 <outgoingPackets>
88 <nInterests>36501092</nInterests>
89 <nDatas>5671942</nDatas>
90 <nNacks>26762</nNacks>
91 </outgoingPackets>
92 </packetCounters>
93 </generalStatus>
94)XML");
95
96const std::string STATUS_TEXT = std::string(R"TEXT(
97General NFD status:
98 nfdId=/nfd-status/test-nfdid/KEY/ksk-1468784936000/ID-CERT
99 version=0.4.1-1-g704430c
100 startTime=20160624T151346.856000
101 currentTime=20160717T175554.109000
102 uptime=1996927 seconds
103 nNameTreeEntries=668
104 nFibEntries=70
105 nPitEntries=7
106 nMeasurementsEntries=1
107 nCsEntries=65536
108 nInInterests=20699052
109 nOutInterests=36501092
110 nInDatas=5598070
111 nOutDatas=5671942
112 nInNacks=7230
113 nOutNacks=26762
114)TEXT").substr(1);
115
116BOOST_FIXTURE_TEST_CASE(Status, ForwarderGeneralStatusFixture)
117{
118 this->fetchStatus();
119 ForwarderStatus payload;
120 payload.setNfdVersion("0.4.1-1-g704430c")
121 .setStartTimestamp(time::fromUnixTimestamp(time::milliseconds(1466781226856)))
122 .setCurrentTimestamp(time::fromUnixTimestamp(time::milliseconds(1468778154109)))
123 .setNNameTreeEntries(668)
124 .setNFibEntries(70)
125 .setNPitEntries(7)
126 .setNMeasurementsEntries(1)
127 .setNCsEntries(65536)
128 .setNInInterests(20699052)
129 .setNInDatas(5598070)
130 .setNInNacks(7230)
131 .setNOutInterests(36501092)
132 .setNOutDatas(5671942)
133 .setNOutNacks(26762);
134 this->sendDataset("/localhost/nfd/status/general", payload);
135 this->prepareStatusOutput();
136
137 BOOST_CHECK(statusXml.is_equal(STATUS_XML));
138 BOOST_CHECK(statusText.is_equal(STATUS_TEXT));
139}
140
141BOOST_AUTO_TEST_CASE(StatusNoNfdId)
142{
143 this->fetchStatus();
144 ForwarderStatus payload;
145 payload.setNfdVersion("0.4.1-1-g704430c");
146 this->sendDataset("/localhost/nfd/status/general", payload);
147 BOOST_CHECK_NO_THROW(this->prepareStatusOutput());
148}
149
150BOOST_AUTO_TEST_SUITE_END() // TestForwarderGeneralModule
Junxiao Shi331ade72016-08-19 14:07:19 +0000151BOOST_AUTO_TEST_SUITE_END() // Nfdc
Junxiao Shi38f4ce92016-08-04 10:01:52 +0000152
153} // namespace tests
Junxiao Shi331ade72016-08-19 14:07:19 +0000154} // namespace nfdc
Junxiao Shi38f4ce92016-08-04 10:01:52 +0000155} // namespace tools
156} // namespace nfd