blob: cbfba58b206b9949198d5049570ca2160e62d858 [file] [log] [blame]
spirosmastorakis0df15ba2015-11-14 08:46:24 -08001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
3 * Copyright (c) 2011-2015 Regents of the University of California.
4 *
5 * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
6 * contributors.
7 *
8 * ndnSIM is free software: you can redistribute it and/or modify it under the terms
9 * of the GNU General Public License as published by the Free Software Foundation,
10 * either version 3 of the License, or (at your option) any later version.
11 *
12 * ndnSIM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
13 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 * PURPOSE. See the GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along with
17 * ndnSIM, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
18 **/
19
20#include "helper/ndn-scenario-helper.hpp"
21#include "helper/ndn-app-helper.hpp"
22
23#include <ndn-cxx/face.hpp>
24
25#include "../tests-common.hpp"
26
27namespace ns3 {
28namespace ndn {
29
30BOOST_FIXTURE_TEST_SUITE(ModelNdnL3Protocol, ScenarioHelperWithCleanupFixture)
31
32class TesterApp
33{
34public:
35 TesterApp(const std::function<void(::ndn::Face& face)>& func)
36 {
37 func(m_face);
38 }
39
40protected:
41 ::ndn::Face m_face;
42};
43
44class ManagerCheckFixture : public ScenarioHelperWithCleanupFixture
45{
46public:
47 void
48 setupAndRun()
49 {
50 createTopology({
51 {"1"},
52 });
53
54 requestedDatasets = {
55 "/localhost/nfd/rib/list",
56 "/localhost/nfd/faces/list",
57 "/localhost/nfd/strategy-choice/list",
Alexander Afanasyeva91aab42016-09-08 15:47:38 -070058 "/localhost/nfd/status/general"
spirosmastorakis0df15ba2015-11-14 08:46:24 -080059 };
60
61 FactoryCallbackApp::Install(getNode("1"), [this] () -> shared_ptr<void> {
62 return make_shared<TesterApp>([this] (::ndn::Face& face) {
63 for (const Name& dataset : requestedDatasets) {
Spyridon Mastorakisf6d32852017-09-27 20:28:52 -070064 Interest i(dataset);
Alexander Afanasyevdc3c3a32019-02-17 20:17:32 -050065 i.setCanBePrefix(true);
Spyridon Mastorakisf6d32852017-09-27 20:28:52 -070066 face.expressInterest(i, [&] (const Interest& i, const Data& data) {
spirosmastorakis0df15ba2015-11-14 08:46:24 -080067 BOOST_TEST_MESSAGE(data.getName());
68 receivedDatasets.insert(data.getName().getPrefix(-2));
69 },
Spyridon Mastorakisf6d32852017-09-27 20:28:52 -070070 std::bind([]{}),
spirosmastorakis0df15ba2015-11-14 08:46:24 -080071 std::bind([]{}));
72 }
73 });
74 })
75 .Start(Seconds(0.01));
76
77 Simulator::Stop(Seconds(1.0));
78 Simulator::Run();
79 }
80
81public:
82 std::set<Name> requestedDatasets;
83 std::set<Name> receivedDatasets;
84};
85
86BOOST_FIXTURE_TEST_SUITE(ManagerCheck, ManagerCheckFixture)
87
88BOOST_AUTO_TEST_CASE(AllEnabled)
89{
90 setupAndRun();
91
92 BOOST_CHECK_EQUAL(requestedDatasets.size(), receivedDatasets.size());
93 BOOST_CHECK_EQUAL_COLLECTIONS(requestedDatasets.begin(), requestedDatasets.end(),
94 receivedDatasets.begin(), receivedDatasets.end());
95}
96
spirosmastorakis0df15ba2015-11-14 08:46:24 -080097BOOST_AUTO_TEST_CASE(DisabledStrategyChoiceManager)
98{
99 // Disable Strategy Choice Manager manager
100 disableStrategyChoiceManager();
101
102 setupAndRun();
103
104 BOOST_CHECK_EQUAL(requestedDatasets.size(), receivedDatasets.size() + 1);
105
106 requestedDatasets.erase("/localhost/nfd/strategy-choice/list");
107 BOOST_CHECK_EQUAL_COLLECTIONS(requestedDatasets.begin(), requestedDatasets.end(),
108 receivedDatasets.begin(), receivedDatasets.end());
109}
110
Alexander Afanasyevf326f942016-09-08 17:17:05 -0700111BOOST_AUTO_TEST_CASE(DisabledForwarderStatusManager)
spirosmastorakis0df15ba2015-11-14 08:46:24 -0800112{
Alexander Afanasyevf326f942016-09-08 17:17:05 -0700113 // Disable Forwarder Status Manager
114 disableForwarderStatusManager();
spirosmastorakis0df15ba2015-11-14 08:46:24 -0800115
116 setupAndRun();
117
118 BOOST_CHECK_EQUAL(requestedDatasets.size(), receivedDatasets.size() + 1);
119
Alexander Afanasyeva91aab42016-09-08 15:47:38 -0700120 requestedDatasets.erase("/localhost/nfd/status/general");
spirosmastorakis0df15ba2015-11-14 08:46:24 -0800121 BOOST_CHECK_EQUAL_COLLECTIONS(requestedDatasets.begin(), requestedDatasets.end(),
122 receivedDatasets.begin(), receivedDatasets.end());
123}
124
125BOOST_AUTO_TEST_SUITE_END() // ManagerCheck
126
127BOOST_AUTO_TEST_SUITE_END() // ModelNdnL3Protocol
128
129} // namespace ndn
130} // namespace ns3