fw: pull FaceTable construction out of Forwarder class

Refs: #4922, #4973
Change-Id: Ibbd4a8840cb0d01ebbd4cabf9c34fa78a1d23db1
This commit is contained in:
Davide Pesavento committed 2019-10-06 16:08:01 -04:00
1 parent 380668b6e2
commit a4abfb010f
32 files changed
+313 -332

No files matched your search

+15 -13
View File
@@ -34,15 +34,17 @@ namespace face {
NFD_LOG_INIT(FaceSystem);
static const std::string SECTION_GENERAL = "general";
static const std::string SECTION_NETDEVBOUND = "netdev_bound";
const std::string CFGSEC_FACESYSTEM = "face_system";
const std::string CFGSEC_GENERAL = "general";
const std::string CFGSEC_GENERAL_FQ = CFGSEC_FACESYSTEM + ".general";
const std::string CFGSEC_NETDEVBOUND = "netdev_bound";
FaceSystem::FaceSystem(FaceTable& faceTable, shared_ptr<ndn::net::NetworkMonitor> netmon)
: m_faceTable(faceTable)
, m_netmon(std::move(netmon))
{
auto pfCtorParams = this->makePFCtorParams();
for (const std::string& id : ProtocolFactory::listRegistered()) {
for (const auto& id : ProtocolFactory::listRegistered()) {
NFD_LOG_TRACE("creating factory " << id);
m_factories[id] = ProtocolFactory::create(id, pfCtorParams);
}
@@ -53,7 +55,7 @@ FaceSystem::FaceSystem(FaceTable& faceTable, shared_ptr<ndn::net::NetworkMonitor
ProtocolFactoryCtorParams
FaceSystem::makePFCtorParams()
{
auto addFace = [&ft = m_faceTable] (auto face) { ft.add(std::move(face)); };
auto addFace = [this] (auto face) { m_faceTable.add(std::move(face)); };
return {addFace, m_netmon};
}
@@ -92,25 +94,25 @@ FaceSystem::hasFactoryForScheme(const std::string& scheme) const
void
FaceSystem::setConfigFile(ConfigFile& configFile)
{
configFile.addSectionHandler("face_system", bind(&FaceSystem::processConfig, this, _1, _2, _3));
configFile.addSectionHandler(CFGSEC_FACESYSTEM, bind(&FaceSystem::processConfig, this, _1, _2, _3));
}
void
FaceSystem::processConfig(const ConfigSection& configSection, bool isDryRun, const std::string& filename)
FaceSystem::processConfig(const ConfigSection& configSection, bool isDryRun, const std::string&)
{
ConfigContext context;
context.isDryRun = isDryRun;
// process general protocol factory config section
auto generalSection = configSection.get_child_optional(SECTION_GENERAL);
auto generalSection = configSection.get_child_optional(CFGSEC_GENERAL);
if (generalSection) {
for (const auto& pair : *generalSection) {
const std::string& key = pair.first;
if (key == "enable_congestion_marking") {
context.generalConfig.wantCongestionMarking = ConfigFile::parseYesNo(pair, "face_system.general");
context.generalConfig.wantCongestionMarking = ConfigFile::parseYesNo(pair, CFGSEC_GENERAL_FQ);
}
else {
NDN_THROW(ConfigFile::Error("Unrecognized option face_system.general." + key));
NDN_THROW(ConfigFile::Error("Unrecognized option " + CFGSEC_GENERAL_FQ + "." + key));
}
}
}
@@ -140,7 +142,7 @@ FaceSystem::processConfig(const ConfigSection& configSection, bool isDryRun, con
}
// process netdev_bound section, after factories start providing *+dev schemes
auto netdevBoundSection = configSection.get_child_optional(SECTION_NETDEVBOUND);
auto netdevBoundSection = configSection.get_child_optional(CFGSEC_NETDEVBOUND);
m_netdevBound->processConfig(netdevBoundSection, context);
// process other sections
@@ -150,15 +152,15 @@ FaceSystem::processConfig(const ConfigSection& configSection, bool isDryRun, con
// const ConfigSection& subSection = pair.second;
if (!seenSections.insert(sectionName).second) {
NDN_THROW(ConfigFile::Error("Duplicate section face_system." + sectionName));
NDN_THROW(ConfigFile::Error("Duplicate section " + CFGSEC_FACESYSTEM + "." + sectionName));
}
if (sectionName == SECTION_GENERAL || sectionName == SECTION_NETDEVBOUND ||
if (sectionName == CFGSEC_GENERAL || sectionName == CFGSEC_NETDEVBOUND ||
m_factories.count(sectionName) > 0) {
continue;
}
NDN_THROW(ConfigFile::Error("Unrecognized option face_system." + sectionName));
NDN_THROW(ConfigFile::Error("Unrecognized option " + CFGSEC_FACESYSTEM + "." + sectionName));
}
}
+8 -7
View File
@@ -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 @@
#define NFD_DAEMON_FW_FACE_TABLE_HPP
#include "face/face.hpp"
#include <boost/range/adaptor/indirected.hpp>
#include <boost/range/adaptor/map.hpp>
@@ -79,15 +80,15 @@ public: // enumeration
end() const;
public: // signals
/** \brief fires after a face is added
/** \brief Fires immediately after a face is added.
*/
signal::Signal<FaceTable, Face&> afterAdd;
signal::Signal<FaceTable, Face> afterAdd;
/** \brief fires before a face is removed
/** \brief Fires immediately before a face is removed.
*
* When this signal is emitted, face is still in FaceTable and has valid FaceId.
* When this signal is emitted, the face is still in FaceTable and has a valid FaceId.
*/
signal::Signal<FaceTable, Face&> beforeRemove;
signal::Signal<FaceTable, Face> beforeRemove;
private:
void
+5 -4
View File
@@ -44,14 +44,15 @@ getDefaultStrategyName()
return fw::BestRouteStrategy2::getStrategyName();
}
Forwarder::Forwarder()
: m_unsolicitedDataPolicy(make_unique<fw::DefaultUnsolicitedDataPolicy>())
Forwarder::Forwarder(FaceTable& faceTable)
: m_faceTable(faceTable)
, m_unsolicitedDataPolicy(make_unique<fw::DefaultUnsolicitedDataPolicy>())
, m_fib(m_nameTree)
, m_pit(m_nameTree)
, m_measurements(m_nameTree)
, m_strategyChoice(*this)
{
m_faceTable.afterAdd.connect([this] (Face& face) {
m_faceTable.afterAdd.connect([this] (const Face& face) {
face.afterReceiveInterest.connect(
[this, &face] (const Interest& interest, const EndpointId& endpointId) {
this->startProcessInterest(FaceEndpoint(face, endpointId), interest);
@@ -70,7 +71,7 @@ Forwarder::Forwarder()
});
});
m_faceTable.beforeRemove.connect([this] (Face& face) {
m_faceTable.beforeRemove.connect([this] (const Face& face) {
cleanupOnFaceRemoval(m_nameTree, m_fib, m_pit, face);
});
+5 -31
View File
@@ -44,14 +44,15 @@ namespace fw {
class Strategy;
} // namespace fw
/** \brief Main class of NFD forwarding engine.
/** \brief Main class of NFD's forwarding engine.
*
* Forwarder owns all faces and tables, and implements the forwarding pipelines.
* Forwarder owns all tables and implements the forwarding pipelines.
*/
class Forwarder
{
public:
Forwarder();
explicit
Forwarder(FaceTable& faceTable);
VIRTUAL_WITH_TESTS
~Forwarder();
@@ -62,33 +63,6 @@ public:
return m_counters;
}
public: // faces and policies
FaceTable&
getFaceTable()
{
return m_faceTable;
}
/** \brief get existing Face
*
* shortcut to .getFaceTable().get(face)
*/
Face*
getFace(FaceId id) const
{
return m_faceTable.get(id);
}
/** \brief add new Face
*
* shortcut to .getFaceTable().add(face)
*/
void
addFace(shared_ptr<Face> face)
{
m_faceTable.add(face);
}
fw::UnsolicitedDataPolicy&
getUnsolicitedDataPolicy() const
{
@@ -274,7 +248,7 @@ PROTECTED_WITH_TESTS_ELSE_PRIVATE:
private:
ForwarderCounters m_counters;
FaceTable m_faceTable;
FaceTable& m_faceTable;
unique_ptr<fw::UnsolicitedDataPolicy> m_unsolicitedDataPolicy;
NameTree m_nameTree;
+2 -2
View File
@@ -141,8 +141,8 @@ Strategy::makeInstanceName(const Name& input, const Name& strategyName)
}
Strategy::Strategy(Forwarder& forwarder)
: afterAddFace(forwarder.getFaceTable().afterAdd)
, beforeRemoveFace(forwarder.getFaceTable().beforeRemove)
: afterAddFace(forwarder.m_faceTable.afterAdd)
, beforeRemoveFace(forwarder.m_faceTable.beforeRemove)
, m_forwarder(forwarder)
, m_measurements(m_forwarder.getMeasurements(), m_forwarder.getStrategyChoice(), *this)
{
+4 -4
View File
@@ -322,13 +322,13 @@ protected: // accessors
Face*
getFace(FaceId id) const
{
return m_forwarder.getFace(id);
return getFaceTable().get(id);
}
const FaceTable&
getFaceTable() const
{
return m_forwarder.getFaceTable();
return m_forwarder.m_faceTable;
}
protected: // instance name
@@ -379,8 +379,8 @@ private: // registry
find(const Name& instanceName);
protected: // accessors
signal::Signal<FaceTable, Face&>& afterAddFace;
signal::Signal<FaceTable, Face&>& beforeRemoveFace;
signal::Signal<FaceTable, Face>& afterAddFace;
signal::Signal<FaceTable, Face>& beforeRemoveFace;
private: // instance fields
Name m_name;
+14 -14
View File
@@ -30,6 +30,7 @@
#include "face/face-system.hpp"
#include "face/internal-face.hpp"
#include "face/null-face.hpp"
#include "fw/face-table.hpp"
#include "fw/forwarder.hpp"
#include "mgmt/cs-manager.hpp"
#include "mgmt/face-manager.hpp"
@@ -76,26 +77,25 @@ Nfd::initialize()
{
configureLogging();
m_forwarder = make_unique<Forwarder>();
m_faceTable = make_unique<FaceTable>();
m_faceTable->addReserved(face::makeNullFace(), face::FACEID_NULL);
m_faceTable->addReserved(face::makeNullFace(FaceUri("contentstore://")), face::FACEID_CONTENT_STORE);
FaceTable& faceTable = m_forwarder->getFaceTable();
faceTable.addReserved(face::makeNullFace(), face::FACEID_NULL);
faceTable.addReserved(face::makeNullFace(FaceUri("contentstore://")), face::FACEID_CONTENT_STORE);
m_faceSystem = make_unique<face::FaceSystem>(faceTable, m_netmon);
m_faceSystem = make_unique<face::FaceSystem>(*m_faceTable, m_netmon);
m_forwarder = make_unique<Forwarder>(*m_faceTable);
initializeManagement();
PrivilegeHelper::drop();
m_netmon->onNetworkStateChanged.connect([this] {
// delay stages, so if multiple events are triggered in short sequence,
// only one auto-detection procedure is triggered
m_reloadConfigEvent = getScheduler().schedule(5_s,
[this] {
NFD_LOG_INFO("Network change detected, reloading face section of the config file...");
this->reloadConfigFileFaceSection();
});
// delay stages, so if multiple events are triggered in short sequence,
// only one auto-detection procedure is triggered
m_reloadConfigEvent = getScheduler().schedule(5_s, [this] {
NFD_LOG_INFO("Network change detected, reloading face section of the config file...");
reloadConfigFileFaceSection();
});
});
}
void
@@ -133,14 +133,14 @@ void
Nfd::initializeManagement()
{
std::tie(m_internalFace, m_internalClientFace) = face::makeInternalFace(m_keyChain);
m_forwarder->getFaceTable().addReserved(m_internalFace, face::FACEID_INTERNAL_FACE);
m_faceTable->addReserved(m_internalFace, face::FACEID_INTERNAL_FACE);
m_dispatcher = make_unique<ndn::mgmt::Dispatcher>(*m_internalClientFace, m_keyChain);
m_authenticator = CommandAuthenticator::create();
m_forwarderStatusManager = make_unique<ForwarderStatusManager>(*m_forwarder, *m_dispatcher);
m_faceManager = make_unique<FaceManager>(*m_faceSystem, *m_dispatcher, *m_authenticator);
m_fibManager = make_unique<FibManager>(m_forwarder->getFib(), m_forwarder->getFaceTable(),
m_fibManager = make_unique<FibManager>(m_forwarder->getFib(), *m_faceTable,
*m_dispatcher, *m_authenticator);
m_csManager = make_unique<CsManager>(m_forwarder->getCs(), m_forwarder->getCounters(),
*m_dispatcher, *m_authenticator);
+4 -3
View File
@@ -35,10 +35,10 @@
namespace nfd {
class FaceTable;
class Forwarder;
class CommandAuthenticator;
// forward-declare management modules, in the order defined in management protocol
class CommandAuthenticator;
class ForwarderStatusManager;
class FaceManager;
class FibManager;
@@ -110,8 +110,9 @@ private:
std::string m_configFile;
ConfigSection m_configSection;
unique_ptr<Forwarder> m_forwarder;
unique_ptr<FaceTable> m_faceTable;
unique_ptr<face::FaceSystem> m_faceSystem;
unique_ptr<Forwarder> m_forwarder;
ndn::KeyChain& m_keyChain;
shared_ptr<face::Face> m_internalFace;
+2 -1
View File
@@ -469,7 +469,8 @@ public:
}
protected:
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder{faceTable};
};
BOOST_FIXTURE_TEST_CASE(InstantiationTest, ParametersFixture)
+12 -14
View File
@@ -43,27 +43,25 @@ class BestRouteStrategy2Fixture : public GlobalIoTimeFixture
{
protected:
BestRouteStrategy2Fixture()
: strategy(forwarder)
, fib(forwarder.getFib())
, pit(forwarder.getPit())
, face1(make_shared<DummyFace>())
: face1(make_shared<DummyFace>())
, face2(make_shared<DummyFace>())
, face3(make_shared<DummyFace>())
, face4(make_shared<DummyFace>())
, face5(make_shared<DummyFace>())
{
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
forwarder.addFace(face4);
forwarder.addFace(face5);
faceTable.add(face1);
faceTable.add(face2);
faceTable.add(face3);
faceTable.add(face4);
faceTable.add(face5);
}
public:
Forwarder forwarder;
BestRouteStrategy2Tester strategy;
Fib& fib;
Pit& pit;
protected:
FaceTable faceTable;
Forwarder forwarder{faceTable};
BestRouteStrategy2Tester strategy{forwarder};
Fib& fib{forwarder.getFib()};
Pit& pit{forwarder.getPit()};
shared_ptr<DummyFace> face1;
shared_ptr<DummyFace> face2;
+64 -86
View File
@@ -37,17 +37,30 @@
namespace nfd {
namespace tests {
class ForwarderFixture : public GlobalIoTimeFixture
{
protected:
template<typename ...Args>
shared_ptr<DummyFace>
addFace(Args&&... args)
{
auto face = make_shared<DummyFace>(std::forward<Args>(args)...);
faceTable.add(face);
return face;
}
protected:
FaceTable faceTable;
Forwarder forwarder{faceTable};
};
BOOST_AUTO_TEST_SUITE(Fw)
BOOST_FIXTURE_TEST_SUITE(TestForwarder, GlobalIoTimeFixture)
BOOST_FIXTURE_TEST_SUITE(TestForwarder, ForwarderFixture)
BOOST_AUTO_TEST_CASE(SimpleExchange)
{
Forwarder forwarder;
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
auto face1 = addFace();
auto face2 = addFace();
Fib& fib = forwarder.getFib();
fib::Entry* entry = fib.insert("/A").first;
@@ -82,14 +95,9 @@ BOOST_AUTO_TEST_CASE(SimpleExchange)
BOOST_AUTO_TEST_CASE(CsMatched)
{
Forwarder forwarder;
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
auto face3 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
auto face1 = addFace();
auto face2 = addFace();
auto face3 = addFace();
Fib& fib = forwarder.getFib();
fib::Entry* entry = fib.insert("/A").first;
@@ -124,11 +132,8 @@ BOOST_AUTO_TEST_CASE(CsMatched)
BOOST_AUTO_TEST_CASE(OutgoingInterest)
{
Forwarder forwarder;
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
auto face1 = addFace();
auto face2 = addFace();
Pit& pit = forwarder.getPit();
auto interestA1 = makeInterest("/A", false, nullopt, 8378);
@@ -148,14 +153,9 @@ BOOST_AUTO_TEST_CASE(OutgoingInterest)
BOOST_AUTO_TEST_CASE(NextHopFaceId)
{
Forwarder forwarder;
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
auto face3 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
auto face1 = addFace();
auto face2 = addFace();
auto face3 = addFace();
Fib& fib = forwarder.getFib();
fib::Entry* entry = fib.insert("/A").first;
@@ -174,6 +174,8 @@ BOOST_AUTO_TEST_CASE(NextHopFaceId)
class ScopeLocalhostIncomingTestForwarder : public Forwarder
{
public:
using Forwarder::Forwarder;
void
onDataUnsolicited(const FaceEndpoint&, const Data&) final
{
@@ -192,13 +194,15 @@ public:
int onDataUnsolicited_count = 0;
};
BOOST_AUTO_TEST_CASE(ScopeLocalhostIncoming)
BOOST_FIXTURE_TEST_CASE(ScopeLocalhostIncoming, GlobalIoTimeFixture)
{
ScopeLocalhostIncomingTestForwarder forwarder;
FaceTable faceTable;
ScopeLocalhostIncomingTestForwarder forwarder(faceTable);
auto face1 = make_shared<DummyFace>("dummy://", "dummy://", ndn::nfd::FACE_SCOPE_LOCAL);
auto face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
faceTable.add(face1);
faceTable.add(face2);
// local face, /localhost: OK
forwarder.dispatchToStrategy_count = 0;
@@ -251,11 +255,8 @@ BOOST_AUTO_TEST_CASE(ScopeLocalhostIncoming)
BOOST_AUTO_TEST_CASE(IncomingInterestStrategyDispatch)
{
Forwarder forwarder;
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
auto face1 = addFace();
auto face2 = addFace();
DummyStrategy& strategyA = choose<DummyStrategy>(forwarder, "/", DummyStrategy::getStrategyName());
DummyStrategy& strategyB = choose<DummyStrategy>(forwarder, "/B", DummyStrategy::getStrategyName());
@@ -292,15 +293,10 @@ BOOST_AUTO_TEST_CASE(IncomingInterestStrategyDispatch)
BOOST_AUTO_TEST_CASE(IncomingData)
{
Forwarder forwarder;
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
auto face3 = make_shared<DummyFace>();
auto face4 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
forwarder.addFace(face4);
auto face1 = addFace();
auto face2 = addFace();
auto face3 = addFace();
auto face4 = addFace();
Pit& pit = forwarder.getPit();
auto interestD = makeInterest("/A/B/C/D");
@@ -327,16 +323,12 @@ BOOST_AUTO_TEST_CASE(IncomingData)
BOOST_AUTO_TEST_CASE(IncomingNack)
{
Forwarder forwarder;
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
auto face3 = make_shared<DummyFace>("dummy://", "dummy://",
ndn::nfd::FACE_SCOPE_NON_LOCAL,
ndn::nfd::FACE_PERSISTENCY_PERSISTENT,
ndn::nfd::LINK_TYPE_MULTI_ACCESS);
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
auto face1 = addFace();
auto face2 = addFace();
auto face3 = addFace("dummy://", "dummy://",
ndn::nfd::FACE_SCOPE_NON_LOCAL,
ndn::nfd::FACE_PERSISTENCY_PERSISTENT,
ndn::nfd::LINK_TYPE_MULTI_ACCESS);
DummyStrategy& strategyA = choose<DummyStrategy>(forwarder, "/", DummyStrategy::getStrategyName());
DummyStrategy& strategyB = choose<DummyStrategy>(forwarder, "/B", DummyStrategy::getStrategyName());
@@ -410,16 +402,12 @@ BOOST_AUTO_TEST_CASE(IncomingNack)
BOOST_AUTO_TEST_CASE(OutgoingNack)
{
Forwarder forwarder;
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
auto face3 = make_shared<DummyFace>("dummy://", "dummy://",
ndn::nfd::FACE_SCOPE_NON_LOCAL,
ndn::nfd::FACE_PERSISTENCY_PERSISTENT,
ndn::nfd::LINK_TYPE_MULTI_ACCESS);
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
auto face1 = addFace();
auto face2 = addFace();
auto face3 = addFace("dummy://", "dummy://",
ndn::nfd::FACE_SCOPE_NON_LOCAL,
ndn::nfd::FACE_PERSISTENCY_PERSISTENT,
ndn::nfd::LINK_TYPE_MULTI_ACCESS);
Pit& pit = forwarder.getPit();
@@ -474,18 +462,13 @@ BOOST_AUTO_TEST_CASE(OutgoingNack)
BOOST_AUTO_TEST_CASE(InterestLoopNack)
{
Forwarder forwarder;
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
auto face3 = make_shared<DummyFace>("dummy://", "dummy://",
ndn::nfd::FACE_SCOPE_NON_LOCAL,
ndn::nfd::FACE_PERSISTENCY_PERSISTENT,
ndn::nfd::LINK_TYPE_MULTI_ACCESS);
auto face4 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
forwarder.addFace(face4);
auto face1 = addFace();
auto face2 = addFace();
auto face3 = addFace("dummy://", "dummy://",
ndn::nfd::FACE_SCOPE_NON_LOCAL,
ndn::nfd::FACE_PERSISTENCY_PERSISTENT,
ndn::nfd::LINK_TYPE_MULTI_ACCESS);
auto face4 = addFace();
Fib& fib = forwarder.getFib();
fib::Entry* entry = fib.insert("/zT4XwK0Hnx").first;
@@ -526,11 +509,8 @@ BOOST_AUTO_TEST_CASE(InterestLoopNack)
BOOST_AUTO_TEST_CASE(InterestLoopWithShortLifetime) // Bug 1953
{
Forwarder forwarder;
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
auto face1 = addFace();
auto face2 = addFace();
// cause an Interest sent out of face2 to loop back into face1 after a delay
face2->afterSend.connect([face1, face2] (uint32_t pktType) {
@@ -563,9 +543,7 @@ BOOST_AUTO_TEST_CASE(InterestLoopWithShortLifetime) // Bug 1953
BOOST_AUTO_TEST_CASE(PitLeak) // Bug 3484
{
Forwarder forwarder;
shared_ptr<Face> face1 = make_shared<DummyFace>();
forwarder.addFace(face1);
auto face1 = addFace();
auto interest = makeInterest("/hcLSAsQ9A", false, 2_s, 61883075);
+10 -11
View File
@@ -41,23 +41,22 @@ class MulticastStrategyFixture : public GlobalIoTimeFixture
{
protected:
MulticastStrategyFixture()
: strategy(forwarder)
, fib(forwarder.getFib())
, pit(forwarder.getPit())
, face1(make_shared<DummyFace>())
: face1(make_shared<DummyFace>())
, face2(make_shared<DummyFace>())
, face3(make_shared<DummyFace>())
{
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
faceTable.add(face1);
faceTable.add(face2);
faceTable.add(face3);
}
protected:
Forwarder forwarder;
MulticastStrategyTester strategy;
Fib& fib;
Pit& pit;
FaceTable faceTable;
Forwarder forwarder{faceTable};
MulticastStrategyTester strategy{forwarder};
Fib& fib{forwarder.getFib()};
Pit& pit{forwarder.getPit()};
shared_ptr<DummyFace> face1;
shared_ptr<DummyFace> face2;
shared_ptr<DummyFace> face3;
+23 -18
View File
@@ -46,16 +46,17 @@ BOOST_AUTO_TEST_CASE(FavorRespondingUpstream)
// and favors this upstream in subsequent Interests.
LimitedIo limitedIo(this);
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
NccStrategyTester& strategy = choose<NccStrategyTester>(forwarder);
strategy.afterAction.connect(bind(&LimitedIo::afterOp, &limitedIo));
shared_ptr<DummyFace> face1 = make_shared<DummyFace>();
shared_ptr<DummyFace> face2 = make_shared<DummyFace>();
shared_ptr<DummyFace> face3 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
faceTable.add(face1);
faceTable.add(face2);
faceTable.add(face3);
Fib& fib = forwarder.getFib();
fib::Entry& fibEntry = *fib.insert(Name()).first;
@@ -106,15 +107,16 @@ BOOST_AUTO_TEST_CASE(FavorRespondingUpstream)
BOOST_AUTO_TEST_CASE(Bug1853)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
NccStrategyTester& strategy = choose<NccStrategyTester>(forwarder);
shared_ptr<DummyFace> face1 = make_shared<DummyFace>();
shared_ptr<DummyFace> face2 = make_shared<DummyFace>();
shared_ptr<DummyFace> face3 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
faceTable.add(face1);
faceTable.add(face2);
faceTable.add(face3);
Fib& fib = forwarder.getFib();
fib::Entry& fibEntry = *fib.insert(Name()).first;
@@ -156,16 +158,17 @@ BOOST_AUTO_TEST_CASE(Bug1853)
BOOST_AUTO_TEST_CASE(Bug1961)
{
LimitedIo limitedIo(this);
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
NccStrategyTester& strategy = choose<NccStrategyTester>(forwarder);
strategy.afterAction.connect(bind(&LimitedIo::afterOp, &limitedIo));
shared_ptr<DummyFace> face1 = make_shared<DummyFace>();
shared_ptr<DummyFace> face2 = make_shared<DummyFace>();
shared_ptr<DummyFace> face3 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
faceTable.add(face1);
faceTable.add(face2);
faceTable.add(face3);
Fib& fib = forwarder.getFib();
fib::Entry& fibEntry = *fib.insert(Name()).first;
@@ -211,14 +214,15 @@ BOOST_AUTO_TEST_CASE(Bug1961)
BOOST_AUTO_TEST_CASE(Bug1971)
{
LimitedIo limitedIo(this);
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
NccStrategyTester& strategy = choose<NccStrategyTester>(forwarder);
strategy.afterAction.connect(bind(&LimitedIo::afterOp, &limitedIo));
shared_ptr<DummyFace> face1 = make_shared<DummyFace>();
shared_ptr<DummyFace> face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
faceTable.add(face1);
faceTable.add(face2);
Fib& fib = forwarder.getFib();
fib::Entry& fibEntry = *fib.insert(Name()).first;
@@ -255,13 +259,14 @@ BOOST_AUTO_TEST_CASE(Bug1971)
BOOST_AUTO_TEST_CASE(Bug1998)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
NccStrategyTester& strategy = choose<NccStrategyTester>(forwarder);
shared_ptr<DummyFace> face1 = make_shared<DummyFace>();
shared_ptr<DummyFace> face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
faceTable.add(face1);
faceTable.add(face2);
Fib& fib = forwarder.getFib();
fib::Entry& fibEntry = *fib.insert(Name()).first;
+34 -26
View File
@@ -121,12 +121,13 @@ public:
BOOST_AUTO_TEST_CASE(UnsatisfiedInterest)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
faceTable.add(face1);
faceTable.add(face2);
Pit& pit = forwarder.getPit();
@@ -145,12 +146,13 @@ BOOST_AUTO_TEST_CASE(UnsatisfiedInterest)
BOOST_AUTO_TEST_CASE(SatisfiedInterest)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
faceTable.add(face1);
faceTable.add(face2);
Pit& pit = forwarder.getPit();
@@ -169,12 +171,13 @@ BOOST_AUTO_TEST_CASE(SatisfiedInterest)
BOOST_AUTO_TEST_CASE(CsHit)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
faceTable.add(face1);
faceTable.add(face2);
Name strategyA("/strategyA/%FD%01");
PitExpiryTestStrategy::registerAs(strategyA);
@@ -206,14 +209,15 @@ BOOST_AUTO_TEST_CASE(CsHit)
BOOST_AUTO_TEST_CASE(ReceiveNack)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
auto face3 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
faceTable.add(face1);
faceTable.add(face2);
faceTable.add(face3);
Name strategyA("/strategyA/%FD%01");
PitExpiryTestStrategy::registerAs(strategyA);
@@ -241,10 +245,11 @@ BOOST_AUTO_TEST_CASE(ReceiveNack)
BOOST_AUTO_TEST_CASE(ResetTimerAfterReceiveInterest)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
auto face = make_shared<DummyFace>();
forwarder.addFace(face);
faceTable.add(face);
Name strategyA("/strategyA/%FD%01");
PitExpiryTestStrategy::registerAs(strategyA);
@@ -266,14 +271,15 @@ BOOST_AUTO_TEST_CASE(ResetTimerAfterReceiveInterest)
BOOST_AUTO_TEST_CASE(ResetTimerBeforeSatisfyInterest)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
auto face3 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
faceTable.add(face1);
faceTable.add(face2);
faceTable.add(face3);
Name strategyA("/strategyA/%FD%01");
Name strategyB("/strategyB/%FD%01");
@@ -322,12 +328,13 @@ BOOST_AUTO_TEST_CASE(ResetTimerBeforeSatisfyInterest)
BOOST_AUTO_TEST_CASE(ResetTimerAfterReceiveData)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
faceTable.add(face1);
faceTable.add(face2);
Name strategyA("/strategyA/%FD%01");
PitExpiryTestStrategy::registerAs(strategyA);
@@ -368,14 +375,15 @@ BOOST_AUTO_TEST_CASE(ResetTimerAfterReceiveData)
BOOST_AUTO_TEST_CASE(ReceiveNackAfterResetTimer)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
auto face3 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
faceTable.add(face1);
faceTable.add(face2);
faceTable.add(face3);
Name strategyA("/strategyA/%FD%01");
PitExpiryTestStrategy::registerAs(strategyA);
+11 -13
View File
@@ -43,25 +43,23 @@ class RandomStrategyFixture : public GlobalIoTimeFixture
{
protected:
RandomStrategyFixture()
: strategy(forwarder)
, fib(forwarder.getFib())
, pit(forwarder.getPit())
, face1(make_shared<DummyFace>())
: face1(make_shared<DummyFace>())
, face2(make_shared<DummyFace>())
, face3(make_shared<DummyFace>())
, face4(make_shared<DummyFace>())
{
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
forwarder.addFace(face4);
faceTable.add(face1);
faceTable.add(face2);
faceTable.add(face3);
faceTable.add(face4);
}
public:
Forwarder forwarder;
RandomStrategyTester strategy;
Fib& fib;
Pit& pit;
protected:
FaceTable faceTable;
Forwarder forwarder{faceTable};
RandomStrategyTester strategy{forwarder};
Fib& fib{forwarder.getFib()};
Pit& pit{forwarder.getPit()};
shared_ptr<DummyFace> face1;
shared_ptr<DummyFace> face2;
+13 -10
View File
@@ -42,7 +42,8 @@ BOOST_FIXTURE_TEST_SUITE(TestRetxSuppression, GlobalIoTimeFixture)
BOOST_AUTO_TEST_CASE(Fixed)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
Pit& pit = forwarder.getPit();
static const time::milliseconds MIN_RETX_INTERVAL(200);
RetxSuppressionFixed rs(MIN_RETX_INTERVAL);
@@ -50,9 +51,9 @@ BOOST_AUTO_TEST_CASE(Fixed)
shared_ptr<DummyFace> face1 = make_shared<DummyFace>();
shared_ptr<DummyFace> face2 = make_shared<DummyFace>();
shared_ptr<DummyFace> face3 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
faceTable.add(face1);
faceTable.add(face2);
faceTable.add(face3);
shared_ptr<Interest> interest = makeInterest("ndn:/0JiimvmxK8");
shared_ptr<pit::Entry> pitEntry = pit.insert(*interest).first;
@@ -91,14 +92,15 @@ BOOST_AUTO_TEST_CASE(Fixed)
BOOST_AUTO_TEST_CASE(Exponential)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
Pit& pit = forwarder.getPit();
RetxSuppressionExponential rs(10_ms, 3.0, 100_ms);
shared_ptr<DummyFace> face1 = make_shared<DummyFace>();
shared_ptr<DummyFace> face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
faceTable.add(face1);
faceTable.add(face2);
shared_ptr<Interest> interest = makeInterest("ndn:/smuVeQSW6q");
shared_ptr<pit::Entry> pitEntry = pit.insert(*interest).first;
@@ -159,14 +161,15 @@ BOOST_AUTO_TEST_CASE(Exponential)
BOOST_AUTO_TEST_CASE(ExponentialPerUpstream)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
Pit& pit = forwarder.getPit();
RetxSuppressionExponential rs(10_ms, 3.0, 100_ms);
shared_ptr<DummyFace> face1 = make_shared<DummyFace>();
shared_ptr<DummyFace> face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
faceTable.add(face1);
faceTable.add(face2);
shared_ptr<Interest> interest = makeInterest("ndn:/covfefeW6q");
shared_ptr<pit::Entry> pitEntry = pit.insert(*interest).first;
+2 -1
View File
@@ -96,7 +96,8 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(InstanceName, T, Tests)
uint64_t maxVersion = T::Strategy::getStrategyName().at(-1).toVersion();
BOOST_REQUIRE_LE(T::getMinVersion(), maxVersion);
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
for (uint64_t version = T::getMinVersion(); version <= maxVersion; ++version) {
Name versionedName = T::getVersionedStrategyName(version);
unique_ptr<typename T::Strategy> instance;
+7 -5
View File
@@ -51,6 +51,7 @@ class StrategyNackReturnFixture : public GlobalIoTimeFixture
public:
StrategyNackReturnFixture()
: limitedIo(this)
, forwarder(faceTable)
, strategy(choose<StrategyTester<S>>(forwarder))
, fib(forwarder.getFib())
, pit(forwarder.getPit())
@@ -60,16 +61,17 @@ public:
, face4(make_shared<DummyFace>())
, face5(make_shared<DummyFace>())
{
forwarder.addFace(face1);
forwarder.addFace(face2);
forwarder.addFace(face3);
forwarder.addFace(face4);
forwarder.addFace(face5);
faceTable.add(face1);
faceTable.add(face2);
faceTable.add(face3);
faceTable.add(face4);
faceTable.add(face5);
}
public:
LimitedIo limitedIo;
FaceTable faceTable;
Forwarder forwarder;
StrategyTester<S>& strategy;
Fib& fib;
+4 -2
View File
@@ -53,19 +53,21 @@ class StrategyNoRouteFixture : public GlobalIoTimeFixture
public:
StrategyNoRouteFixture()
: limitedIo(this)
, forwarder(faceTable)
, strategy(choose<StrategyTester<S>>(forwarder))
, fib(forwarder.getFib())
, pit(forwarder.getPit())
, face1(make_shared<DummyFace>())
, face2(make_shared<DummyFace>())
{
forwarder.addFace(face1);
forwarder.addFace(face2);
faceTable.add(face1);
faceTable.add(face2);
}
public:
LimitedIo limitedIo;
FaceTable faceTable;
Forwarder forwarder;
StrategyTester<S>& strategy;
Fib& fib;
+6 -4
View File
@@ -54,6 +54,7 @@ class StrategyScopeControlFixture : public GlobalIoTimeFixture
public:
StrategyScopeControlFixture()
: limitedIo(this)
, forwarder(faceTable)
, strategy(choose<StrategyTester<S>>(forwarder))
, fib(forwarder.getFib())
, pit(forwarder.getPit())
@@ -62,15 +63,16 @@ public:
, localFace3(make_shared<DummyFace>("dummy://3", "dummy://3", ndn::nfd::FACE_SCOPE_LOCAL))
, localFace4(make_shared<DummyFace>("dummy://4", "dummy://4", ndn::nfd::FACE_SCOPE_LOCAL))
{
forwarder.addFace(nonLocalFace1);
forwarder.addFace(nonLocalFace2);
forwarder.addFace(localFace3);
forwarder.addFace(localFace4);
faceTable.add(nonLocalFace1);
faceTable.add(nonLocalFace2);
faceTable.add(localFace3);
faceTable.add(localFace4);
}
public:
LimitedIo limitedIo;
FaceTable faceTable;
Forwarder forwarder;
StrategyTester<S>& strategy;
Fib& fib;
+4 -3
View File
@@ -83,13 +83,14 @@ public:
BOOST_AUTO_TEST_CASE(FaceTableAccess)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
FaceTableAccessTestStrategy strategy(forwarder);
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>("dummy://", "dummy://", ndn::nfd::FACE_SCOPE_LOCAL);
forwarder.addFace(face1);
forwarder.addFace(face2);
faceTable.add(face1);
faceTable.add(face2);
FaceId id1 = face1->getId();
FaceId id2 = face2->getId();
+7 -16
View File
@@ -197,9 +197,7 @@ TopologyNode
TopologyTester::addForwarder(const std::string& label)
{
size_t i = m_forwarders.size();
m_forwarders.push_back(make_unique<Forwarder>());
m_forwarderLabels.push_back(label);
BOOST_ASSERT(m_forwarders.size() == m_forwarderLabels.size());
m_forwarders.push_back(make_unique<TopologyForwarder>(label));
return i;
}
@@ -207,12 +205,11 @@ shared_ptr<Face>
TopologyTester::makeFace(TopologyNode i, const FaceUri& localUri, const FaceUri& remoteUri,
ndn::nfd::FaceScope scope, ndn::nfd::LinkType linkType)
{
Forwarder& forwarder = this->getForwarder(i);
unique_ptr<GenericLinkService> service = m_wantPcap ? make_unique<TopologyPcapLinkService>() :
make_unique<GenericLinkService>();
auto transport = make_unique<InternalForwarderTransport>(localUri, remoteUri, scope, linkType);
auto face = make_shared<Face>(std::move(service), std::move(transport));
forwarder.addFace(face);
m_forwarders.at(i)->faceTable.add(face);
return face;
}
@@ -230,7 +227,7 @@ TopologyTester::addLink(const std::string& label, time::nanoseconds delay,
BOOST_ASSERT(forwarders.size() <= 2 || linkType != ndn::nfd::LINK_TYPE_POINT_TO_POINT);
for (TopologyNode i : forwarders) {
FaceUri localUri("topology://" + m_forwarderLabels.at(i) + "/" + label);
FaceUri localUri("topology://" + m_forwarders.at(i)->label + "/" + label);
auto face = makeFace(i, localUri, remoteUri, ndn::nfd::FACE_SCOPE_NON_LOCAL, linkType);
link->addFace(i, std::move(face));
}
@@ -242,8 +239,8 @@ TopologyTester::addLink(const std::string& label, time::nanoseconds delay,
shared_ptr<TopologyAppLink>
TopologyTester::addAppFace(const std::string& label, TopologyNode i)
{
FaceUri localUri("topology://" + m_forwarderLabels.at(i) + "/local/" + label);
FaceUri remoteUri("topology://" + m_forwarderLabels.at(i) + "/app/" + label);
FaceUri localUri("topology://" + m_forwarders.at(i)->label + "/local/" + label);
FaceUri remoteUri("topology://" + m_forwarders.at(i)->label + "/app/" + label);
auto face = makeFace(i, localUri, remoteUri, ndn::nfd::FACE_SCOPE_LOCAL, ndn::nfd::LINK_TYPE_POINT_TO_POINT);
auto al = make_shared<TopologyAppLink>(std::move(face));
@@ -263,8 +260,8 @@ shared_ptr<TopologyBareLink>
TopologyTester::addBareLink(const std::string& label, TopologyNode i, ndn::nfd::FaceScope scope,
ndn::nfd::LinkType linkType)
{
FaceUri localUri("topology://" + m_forwarderLabels.at(i) + "/local/" + label);
FaceUri remoteUri("topology://" + m_forwarderLabels.at(i) + "/bare/" + label);
FaceUri localUri("topology://" + m_forwarders.at(i)->label + "/local/" + label);
FaceUri remoteUri("topology://" + m_forwarders.at(i)->label + "/bare/" + label);
auto face = makeFace(i, localUri, remoteUri, scope, linkType);
auto bl = make_shared<TopologyBareLink>(std::move(face));
@@ -272,12 +269,6 @@ TopologyTester::addBareLink(const std::string& label, TopologyNode i, ndn::nfd::
return bl;
}
void
TopologyTester::enablePcap(bool isEnabled)
{
m_wantPcap = isEnabled;
}
TopologyPcap&
TopologyTester::getPcap(const Face& face)
{
+22 -5
View File
@@ -260,7 +260,7 @@ public:
Forwarder&
getForwarder(TopologyNode i)
{
return *m_forwarders.at(i);
return m_forwarders.at(i)->forwarder;
}
/** \brief sets strategy on forwarder \p i
@@ -310,7 +310,10 @@ public:
/** \brief enables packet capture on every forwarder face
*/
void
enablePcap(bool isEnabled = true);
enablePcap(bool isEnabled = true)
{
m_wantPcap = isEnabled;
}
/** \return captured packets on a forwarder face
* \pre enablePcap(true) is in effect when the face was created
@@ -342,12 +345,26 @@ private:
ndn::nfd::FaceScope scope, ndn::nfd::LinkType linkType);
private:
bool m_wantPcap = false;
std::vector<unique_ptr<Forwarder>> m_forwarders;
std::vector<std::string> m_forwarderLabels;
class TopologyForwarder
{
public:
explicit
TopologyForwarder(const std::string& label)
: label(label)
{
}
public:
std::string label;
FaceTable faceTable;
Forwarder forwarder{faceTable};
};
std::vector<unique_ptr<TopologyForwarder>> m_forwarders;
std::vector<shared_ptr<TopologyLink>> m_links;
std::vector<shared_ptr<TopologyAppLink>> m_appLinks;
std::vector<shared_ptr<TopologyBareLink>> m_bareLinks;
bool m_wantPcap = false;
};
} // namespace tests
@@ -42,11 +42,6 @@ using namespace nfd::tests;
class UnsolicitedDataPolicyFixture : public GlobalIoTimeFixture
{
protected:
UnsolicitedDataPolicyFixture()
: cs(forwarder.getCs())
{
}
/** \tparam Policy policy type, or void to keep default policy
*/
template<typename Policy>
@@ -72,8 +67,9 @@ protected:
}
protected:
Forwarder forwarder;
Cs& cs;
FaceTable faceTable;
Forwarder forwarder{faceTable};
Cs& cs{forwarder.getCs()};
};
template<>
@@ -117,7 +113,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(FaceScopePolicy, T, FaceScopePolicyTests)
auto face1 = make_shared<DummyFace>("dummy://", "dummy://",
ndn::nfd::FACE_SCOPE_LOCAL);
forwarder.addFace(face1);
faceTable.add(face1);
shared_ptr<Data> data1 = makeData("/unsolicited-from-local");
forwarder.onIncomingData(FaceEndpoint(*face1, 0), *data1);
@@ -125,7 +121,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(FaceScopePolicy, T, FaceScopePolicyTests)
auto face2 = make_shared<DummyFace>("dummy://", "dummy://",
ndn::nfd::FACE_SCOPE_NON_LOCAL);
forwarder.addFace(face2);
faceTable.add(face2);
shared_ptr<Data> data2 = makeData("/unsolicited-from-non-local");
forwarder.onIncomingData(FaceEndpoint(*face2, 0), *data2);
+1 -3
View File
@@ -46,8 +46,7 @@ class FaceManagerFixture : public ManagerFixtureWithAuthenticator
{
public:
FaceManagerFixture()
: m_faceTable(m_forwarder.getFaceTable())
, m_faceSystem(m_faceTable, make_shared<ndn::net::NetworkMonitorStub>(0))
: m_faceSystem(m_faceTable, make_shared<ndn::net::NetworkMonitorStub>(0))
, m_manager(m_faceSystem, m_dispatcher, *m_authenticator)
{
setTopPrefix();
@@ -113,7 +112,6 @@ private:
}
protected:
FaceTable& m_faceTable;
FaceSystem m_faceSystem;
FaceManager m_manager;
};
+1 -4
View File
@@ -40,7 +40,6 @@ class FibManagerFixture : public ManagerFixtureWithAuthenticator
public:
FibManagerFixture()
: m_fib(m_forwarder.getFib())
, m_faceTable(m_forwarder.getFaceTable())
, m_manager(m_fib, m_faceTable, m_dispatcher, *m_authenticator)
{
setTopPrefix();
@@ -126,7 +125,6 @@ public: // for check
protected:
Fib& m_fib;
FaceTable& m_faceTable;
FibManager m_manager;
};
@@ -144,8 +142,7 @@ operator<<(std::ostream& os, FibManagerFixture::CheckNextHopResult result)
return os << "NO_NEXTHOP";
case FibManagerFixture::CheckNextHopResult::WRONG_COST:
return os << "WRONG_COST";
};
}
return os << static_cast<int>(result);
}
@@ -35,13 +35,15 @@ class ForwarderStatusManagerFixture : public ManagerCommonFixture
{
protected:
ForwarderStatusManagerFixture()
: m_manager(m_forwarder, m_dispatcher)
: m_forwarder(m_faceTable)
, m_manager(m_forwarder, m_dispatcher)
, m_startTime(time::system_clock::now())
{
setTopPrefix();
}
protected:
FaceTable m_faceTable;
Forwarder m_forwarder;
ForwarderStatusManager m_manager;
time::system_clock::TimePoint m_startTime;
+2 -1
View File
@@ -171,7 +171,8 @@ public:
setPrivilege(const std::string& privilege);
protected:
Forwarder m_forwarder;
FaceTable m_faceTable;
Forwarder m_forwarder{m_faceTable};
shared_ptr<CommandAuthenticator> m_authenticator = CommandAuthenticator::create();
};
@@ -40,7 +40,8 @@ class TablesConfigSectionFixture : public GlobalIoFixture
{
protected:
TablesConfigSectionFixture()
: cs(forwarder.getCs())
: forwarder(faceTable)
, cs(forwarder.getCs())
, strategyChoice(forwarder.getStrategyChoice())
, networkRegionTable(forwarder.getNetworkRegionTable())
, tablesConfig(forwarder)
@@ -62,6 +63,7 @@ protected:
}
protected:
FaceTable faceTable;
Forwarder forwarder;
Cs& cs;
StrategyChoice& strategyChoice;
+12 -10
View File
@@ -74,14 +74,15 @@ BOOST_AUTO_TEST_CASE(Basic)
BOOST_AUTO_TEST_CASE(RemoveFibNexthops)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
NameTree& nameTree = forwarder.getNameTree();
Fib& fib = forwarder.getFib();
shared_ptr<Face> face1 = make_shared<DummyFace>();
shared_ptr<Face> face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
faceTable.add(face1);
faceTable.add(face2);
// {}
size_t nNameTreeEntriesBefore = nameTree.size();
@@ -130,13 +131,14 @@ BOOST_AUTO_TEST_CASE(RemoveFibNexthops)
BOOST_AUTO_TEST_CASE(DeletePitInOutRecords)
{
Forwarder forwarder;
FaceTable faceTable;
Forwarder forwarder(faceTable);
Pit& pit = forwarder.getPit();
shared_ptr<Face> face1 = make_shared<DummyFace>();
shared_ptr<Face> face2 = make_shared<DummyFace>();
forwarder.addFace(face1);
forwarder.addFace(face2);
auto face1 = make_shared<DummyFace>();
auto face2 = make_shared<DummyFace>();
faceTable.add(face1);
faceTable.add(face2);
// {}
BOOST_CHECK_EQUAL(pit.size(), 0);
@@ -62,7 +62,6 @@ class MeasurementsAccessorFixture : public GlobalIoFixture
{
protected:
MeasurementsAccessorFixture()
: measurements(forwarder.getMeasurements())
{
const Name strategyP("/measurements-accessor-test-strategy-P/%FD%01");
const Name strategyQ("/measurements-accessor-test-strategy-Q/%FD%01");
@@ -81,8 +80,9 @@ protected:
}
protected:
Forwarder forwarder;
Measurements& measurements;
FaceTable faceTable;
Forwarder forwarder{faceTable};
Measurements& measurements{forwarder.getMeasurements()};
MeasurementsAccessor* accessor1;
MeasurementsAccessor* accessor2;
MeasurementsAccessor* accessor3;
+5 -7
View File
@@ -36,9 +36,6 @@ class StrategyChoiceFixture : public GlobalIoFixture
{
protected:
StrategyChoiceFixture()
: sc(forwarder.getStrategyChoice())
, strategyNameP("/strategy-choice-P/%FD%00")
, strategyNameQ("/strategy-choice-Q/%FD%00")
{
DummyStrategy::registerAs(strategyNameP);
DummyStrategy::registerAs(strategyNameQ);
@@ -77,11 +74,12 @@ protected:
}
protected:
Forwarder forwarder;
StrategyChoice& sc;
FaceTable faceTable;
Forwarder forwarder{faceTable};
StrategyChoice& sc{forwarder.getStrategyChoice()};
const Name strategyNameP;
const Name strategyNameQ;
const Name strategyNameP = "/strategy-choice-P/%FD%00";
const Name strategyNameQ = "/strategy-choice-Q/%FD%00";
};
BOOST_AUTO_TEST_SUITE(Table)