face: use IncomingFaceId, NextHopFaceId, CachePolicy tags
This commit replaces all LocalControlHeader usages with these tags,
and deletes LocalFace.
This commit also does minor improvements in RIB test suites.
refs #3339
Change-Id: I14cbfc296a6723a5860bf8bd95d9804d3bac3da5
diff --git a/tests/daemon/face/dummy-face.hpp b/tests/daemon/face/dummy-face.hpp
index 2991afb..6ed7d46 100644
--- a/tests/daemon/face/dummy-face.hpp
+++ b/tests/daemon/face/dummy-face.hpp
@@ -27,25 +27,19 @@
#define NFD_TESTS_DAEMON_FACE_DUMMY_FACE_HPP
#include "face/face.hpp"
-#include "face/local-face.hpp"
namespace nfd {
namespace tests {
-/** \class DummyFace
- * \brief a Face for unit testing
+/** \brief a Face for unit testing
*/
-template<class FaceBase>
-class DummyFaceImpl : public FaceBase
+class DummyFace : public Face
{
public:
- DummyFaceImpl()
- : FaceBase(FaceUri("dummy://"), FaceUri("dummy://"))
- {
- }
-
- DummyFaceImpl(const std::string& remoteUri, const std::string& localUri)
- : FaceBase(FaceUri(remoteUri), FaceUri(localUri))
+ explicit
+ DummyFace(const std::string& remoteUri = "dummy://", const std::string& localUri = "dummy://",
+ bool isLocal = false)
+ : Face(FaceUri(remoteUri), FaceUri(localUri), isLocal)
{
}
@@ -83,15 +77,22 @@
this->emitSignal(onReceiveData, data);
}
- signal::Signal<DummyFaceImpl<FaceBase>> afterSend;
+ signal::Signal<DummyFace> afterSend;
public:
std::vector<Interest> m_sentInterests;
std::vector<Data> m_sentDatas;
};
-typedef DummyFaceImpl<Face> DummyFace;
-typedef DummyFaceImpl<LocalFace> DummyLocalFace;
+class DummyLocalFace : public DummyFace
+{
+public:
+ explicit
+ DummyLocalFace(const std::string& remoteUri = "dummy://", const std::string& localUri = "dummy://")
+ : DummyFace(remoteUri, localUri, true)
+ {
+ }
+};
} // namespace tests
} // namespace nfd
diff --git a/tests/daemon/face/face.t.cpp b/tests/daemon/face/face.t.cpp
index 6ed17bf..4a94a58 100644
--- a/tests/daemon/face/face.t.cpp
+++ b/tests/daemon/face/face.t.cpp
@@ -24,7 +24,6 @@
*/
#include "face/face.hpp"
-#include "face/local-face.hpp"
#include "dummy-face.hpp"
#include "tests/test-common.hpp"
@@ -41,24 +40,6 @@
BOOST_CHECK_EQUAL(face.getDescription(), "3pFsKrvWr");
}
-BOOST_AUTO_TEST_CASE(LocalControlHeaderEnabled)
-{
- DummyLocalFace face;
-
- BOOST_CHECK_EQUAL(face.isLocalControlHeaderEnabled(), false);
-
- face.setLocalControlHeaderFeature(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID, true);
- BOOST_CHECK_EQUAL(face.isLocalControlHeaderEnabled(), true);
- BOOST_CHECK_EQUAL(face.isLocalControlHeaderEnabled(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID), true);
- BOOST_CHECK_EQUAL(face.isLocalControlHeaderEnabled(
- LOCAL_CONTROL_FEATURE_NEXT_HOP_FACE_ID), false);
-
- face.setLocalControlHeaderFeature(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID, false);
- BOOST_CHECK_EQUAL(face.isLocalControlHeaderEnabled(), false);
- BOOST_CHECK_EQUAL(face.isLocalControlHeaderEnabled(
- LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID), false);
-}
-
class FaceFailTestFace : public DummyFace
{
public:
diff --git a/tests/daemon/face/generic-link-service.t.cpp b/tests/daemon/face/generic-link-service.t.cpp
index f3c3c7b..70e078d 100644
--- a/tests/daemon/face/generic-link-service.t.cpp
+++ b/tests/daemon/face/generic-link-service.t.cpp
@@ -407,8 +407,9 @@
transport->receivePacket(packet.wireEncode());
BOOST_REQUIRE_EQUAL(receivedInterests.size(), 1);
- BOOST_REQUIRE(receivedInterests.back().getLocalControlHeader().hasNextHopFaceId());
- BOOST_CHECK_EQUAL(receivedInterests.back().getNextHopFaceId(), 1000);
+ shared_ptr<lp::NextHopFaceIdTag> tag = receivedInterests.back().getTag<lp::NextHopFaceIdTag>();
+ BOOST_REQUIRE(tag != nullptr);
+ BOOST_CHECK_EQUAL(*tag, 1000);
}
BOOST_AUTO_TEST_CASE(ReceiveNextHopFaceIdDisabled)
@@ -474,16 +475,14 @@
shared_ptr<Data> data = makeData("/12345678");
lp::Packet packet(data->wireEncode());
- lp::CachePolicy policy;
- policy.setPolicy(lp::CachePolicyType::NO_CACHE);
- packet.set<lp::CachePolicyField>(policy);
+ packet.set<lp::CachePolicyField>(lp::CachePolicy().setPolicy(lp::CachePolicyType::NO_CACHE));
transport->receivePacket(packet.wireEncode());
BOOST_REQUIRE_EQUAL(receivedData.size(), 1);
- BOOST_REQUIRE(receivedData.back().getLocalControlHeader().hasCachingPolicy());
- BOOST_CHECK_EQUAL(receivedData.back().getCachingPolicy(),
- ndn::nfd::LocalControlHeader::CachingPolicy::NO_CACHE);
+ shared_ptr<lp::CachePolicyTag> tag = receivedData.back().getTag<lp::CachePolicyTag>();
+ BOOST_REQUIRE(tag != nullptr);
+ BOOST_CHECK_EQUAL(tag->get().getPolicy(), lp::CachePolicyType::NO_CACHE);
}
BOOST_AUTO_TEST_CASE(ReceiveCacheControlDisabled)
@@ -503,7 +502,7 @@
BOOST_CHECK_EQUAL(service->getCounters().nInNetInvalid, 0); // not an error
BOOST_REQUIRE_EQUAL(receivedData.size(), 1);
- BOOST_CHECK(!receivedData.back().getLocalControlHeader().hasCachingPolicy());
+ BOOST_CHECK(receivedData.back().getTag<lp::CachePolicyTag>() == nullptr);
}
BOOST_AUTO_TEST_CASE(ReceiveCacheControlDropInterest)
@@ -553,7 +552,7 @@
initialize(options);
shared_ptr<Interest> interest = makeInterest("/12345678");
- interest->setIncomingFaceId(1000);
+ interest->setTag(make_shared<lp::IncomingFaceIdTag>(1000));
face->sendInterest(*interest);
@@ -571,7 +570,7 @@
initialize(options);
shared_ptr<Interest> interest = makeInterest("/12345678");
- interest->setIncomingFaceId(1000);
+ interest->setTag(make_shared<lp::IncomingFaceIdTag>(1000));
face->sendInterest(*interest);
@@ -595,7 +594,7 @@
BOOST_CHECK_EQUAL(service->getCounters().nInNetInvalid, 0); // not an error
BOOST_REQUIRE_EQUAL(receivedInterests.size(), 1);
- BOOST_CHECK(!receivedInterests.back().getLocalControlHeader().hasIncomingFaceId());
+ BOOST_CHECK(receivedInterests.back().getTag<lp::IncomingFaceIdTag>() == nullptr);
}
BOOST_AUTO_TEST_CASE(ReceiveIncomingFaceIdIgnoreData)
@@ -613,7 +612,7 @@
BOOST_CHECK_EQUAL(service->getCounters().nInNetInvalid, 0); // not an error
BOOST_REQUIRE_EQUAL(receivedData.size(), 1);
- BOOST_CHECK(!receivedData.back().getLocalControlHeader().hasIncomingFaceId());
+ BOOST_CHECK(receivedData.back().getTag<lp::IncomingFaceIdTag>() == nullptr);
}
BOOST_AUTO_TEST_CASE(ReceiveIncomingFaceIdIgnoreNack)
@@ -632,7 +631,7 @@
BOOST_CHECK_EQUAL(service->getCounters().nInNetInvalid, 0); // not an error
BOOST_REQUIRE_EQUAL(receivedNacks.size(), 1);
- BOOST_CHECK(!receivedNacks.back().getLocalControlHeader().hasIncomingFaceId());
+ BOOST_CHECK(receivedNacks.back().getTag<lp::IncomingFaceIdTag>() == nullptr);
}
BOOST_AUTO_TEST_SUITE_END() // LocalFields
diff --git a/tests/daemon/face/unix-stream.t.cpp b/tests/daemon/face/unix-stream.t.cpp
index 47610af..fc528c2 100644
--- a/tests/daemon/face/unix-stream.t.cpp
+++ b/tests/daemon/face/unix-stream.t.cpp
@@ -340,187 +340,6 @@
BOOST_CHECK_EQUAL(face2_receivedDatas [0].getName(), data1->getName());
}
-//BOOST_FIXTURE_TEST_CASE(UnixStreamTransportLocalControlHeader, EndToEndFixture)
-//{
-// UnixStreamFactory factory;
-//
-// shared_ptr<UnixStreamChannel> channel1 = factory.createChannel(CHANNEL_PATH1);
-// channel1->listen(bind(&EndToEndFixture::channel1_onFaceCreated, this, _1),
-// bind(&EndToEndFixture::channel1_onConnectFailed, this, _1));
-//
-// UnixStreamTransport::protocol::socket client(g_io);
-// client.async_connect(UnixStreamTransport::protocol::endpoint(CHANNEL_PATH1),
-// bind(&EndToEndFixture::client_onConnect, this, _1));
-//
-// BOOST_CHECK_MESSAGE(limitedIo.run(2, time::seconds(1)) == LimitedIo::EXCEED_OPS, "Connect");
-//
-// BOOST_REQUIRE(static_cast<bool>(face1));
-//
-// face2 = makeFace(std::move(client));
-// face2->onReceiveInterest.connect(bind(&EndToEndFixture::face2_onReceiveInterest, this, _1));
-// face2->onReceiveData.connect(bind(&EndToEndFixture::face2_onReceiveData, this, _1));
-//
-// shared_ptr<Interest> interest1 = makeInterest("ndn:/TpnzGvW9R");
-// shared_ptr<Data> data1 = makeData("ndn:/KfczhUqVix");
-
-// face1->setLocalControlHeaderFeature(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID);
-// face1->setLocalControlHeaderFeature(LOCAL_CONTROL_FEATURE_NEXT_HOP_FACE_ID);
-//
-// BOOST_CHECK(face1->isLocalControlHeaderEnabled(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID));
-// BOOST_CHECK(face1->isLocalControlHeaderEnabled(LOCAL_CONTROL_FEATURE_NEXT_HOP_FACE_ID));
-
-// face2->setLocalControlHeaderFeature(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID);
-// face2->setLocalControlHeaderFeature(LOCAL_CONTROL_FEATURE_NEXT_HOP_FACE_ID);
-
-// BOOST_CHECK(face2->isLocalControlHeaderEnabled(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID));
-// BOOST_CHECK(face2->isLocalControlHeaderEnabled(LOCAL_CONTROL_FEATURE_NEXT_HOP_FACE_ID));
-
- ////////////////////////////////////////////////////////
-
-// interest1->setIncomingFaceId(11);
-// interest1->setNextHopFaceId(111);
-// face1->sendInterest(*interest1);
-
-// data1->setIncomingFaceId(22);
-// data1->getLocalControlHeader().setNextHopFaceId(222);
-// face1->sendData(*data1);
-
-// BOOST_CHECK_MESSAGE(limitedIo.run(2, time::seconds(1)) == LimitedIo::EXCEED_OPS,
-// "Regular send/receive");
-
-// BOOST_REQUIRE_EQUAL(face2_receivedInterests.size(), 1);
-// BOOST_REQUIRE_EQUAL(face2_receivedDatas .size(), 1);
-
-// sending allows only IncomingFaceId, receiving allows only NextHopFaceId
-// BOOST_CHECK_EQUAL(face2_receivedInterests[0].getLocalControlHeader().hasIncomingFaceId(), false);
-// BOOST_CHECK_EQUAL(face2_receivedInterests[0].getLocalControlHeader().hasNextHopFaceId(), false);
-
-// BOOST_CHECK_EQUAL(face2_receivedDatas[0].getLocalControlHeader().hasIncomingFaceId(), false);
-// BOOST_CHECK_EQUAL(face2_receivedDatas[0].getLocalControlHeader().hasNextHopFaceId(), false);
-
-// face1->close();
-// face1.reset();
-
- ////////////////////////////////////////////////////////
-
-// client.async_connect(UnixStreamTransport::protocol::endpoint(CHANNEL_PATH1),
-// bind(&EndToEndFixture::client_onConnect, this, _1));
-
-// BOOST_CHECK_MESSAGE(limitedIo.run(2, time::seconds(1)) == LimitedIo::EXCEED_OPS, "Connect");
-
-// BOOST_REQUIRE(static_cast<bool>(face1));
-// face1->setLocalControlHeaderFeature(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID);
-// face1->setLocalControlHeaderFeature(LOCAL_CONTROL_FEATURE_NEXT_HOP_FACE_ID);
-
-// Block iHeader = interest1->getLocalControlHeader()
-// .wireEncode(*interest1, ndn::nfd::LocalControlHeader::ENCODE_INCOMING_FACE_ID |
-// ndn::nfd::LocalControlHeader::ENCODE_NEXT_HOP);
-// Block iPayload = interest1->wireEncode();
-
-// Block dHeader = data1->getLocalControlHeader()
-// .wireEncode(*data1, ndn::nfd::LocalControlHeader::ENCODE_INCOMING_FACE_ID |
-// ndn::nfd::LocalControlHeader::ENCODE_NEXT_HOP);
-// Block dPayload = data1->wireEncode();
-
-// client.async_send(std::vector<boost::asio::const_buffer>{iHeader, iPayload},
-// [] (const boost::system::error_code& error, size_t nBytesSent) {
-// BOOST_CHECK_MESSAGE(!error, error.message());
-// });
-// client.async_send(std::vector<boost::asio::const_buffer>{dHeader, dPayload},
-// [] (const boost::system::error_code& error, size_t nBytesSent) {
-// BOOST_CHECK_MESSAGE(!error, error.message());
-// });
-
-// BOOST_CHECK_MESSAGE(limitedIo.run(2, time::seconds(1)) == LimitedIo::EXCEED_OPS,
-// "Send/receive with LocalControlHeader");
-
-// BOOST_REQUIRE_EQUAL(face1_receivedInterests.size(), 1);
-// BOOST_REQUIRE_EQUAL(face1_receivedDatas .size(), 1);
-
-// BOOST_CHECK_EQUAL(face1_receivedInterests[0].getLocalControlHeader().hasIncomingFaceId(), false);
-// BOOST_CHECK_EQUAL(face1_receivedInterests[0].getLocalControlHeader().hasNextHopFaceId(), true);
-// BOOST_CHECK_EQUAL(face1_receivedInterests[0].getNextHopFaceId(), 111);
-
-// BOOST_CHECK_EQUAL(face1_receivedDatas[0].getLocalControlHeader().hasIncomingFaceId(), false);
-// BOOST_CHECK_EQUAL(face1_receivedDatas[0].getLocalControlHeader().hasNextHopFaceId(), false);
-//}
-
-
-//class SimpleEndToEndFixture : protected BaseFixture
-//{
-//public:
-// void
-// onFaceCreated(const shared_ptr<Face>& face)
-// {
-// face->onReceiveInterest.connect(bind(&SimpleEndToEndFixture::onReceiveInterest, this, _1));
-// face->onReceiveData.connect(bind(&SimpleEndToEndFixture::onReceiveData, this, _1));
-// face->onFail.connect(bind(&SimpleEndToEndFixture::onFail, this, face));
-
-// if (static_cast<bool>(dynamic_pointer_cast<LocalFace>(face))) {
-// static_pointer_cast<LocalFace>(face)->setLocalControlHeaderFeature(
-// LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID);
-
-// static_pointer_cast<LocalFace>(face)->setLocalControlHeaderFeature(
-// LOCAL_CONTROL_FEATURE_NEXT_HOP_FACE_ID);
-// }
-
-// limitedIo.afterOp();
-// }
-
-// void
-// onConnectFailed(const std::string& reason)
-// {
-// BOOST_CHECK_MESSAGE(false, reason);
-
-// limitedIo.afterOp();
-// }
-
-// void
-// onReceiveInterest(const Interest& interest)
-// {
-// receivedInterests.push_back(interest);
-
-// limitedIo.afterOp();
-// }
-
-// void
-// onReceiveData(const Data& data)
-// {
-// receivedDatas.push_back(data);
-
-// limitedIo.afterOp();
-// }
-
-// void
-// onFail(const shared_ptr<Face>& face)
-// {
-// limitedIo.afterOp();
-// }
-
-//public:
-// LimitedIo limitedIo;
-
-// std::vector<Interest> receivedInterests;
-// std::vector<Data> receivedDatas;
-//};
-
-
-//BOOST_FIXTURE_TEST_CASE_TEMPLATE(CorruptedInput, Dataset,
-// CorruptedPackets, SimpleEndToEndFixture)
-//{
-// UnixStreamFactory factory;
-
-// shared_ptr<UnixStreamChannel> channel = factory.createChannel(CHANNEL_PATH1);
-// channel->listen(bind(&SimpleEndToEndFixture::onFaceCreated, this, _1),
-// bind(&SimpleEndToEndFixture::onConnectFailed, this, _1));
-
-// DummyStreamSender<UnixStreamTransport::protocol, Dataset> sender;
-// sender.start(UnixStreamTransport::protocol::endpoint(CHANNEL_PATH1));
-
-// BOOST_CHECK_MESSAGE(limitedIo.run(LimitedIo::UNLIMITED_OPS, time::seconds(1)) == LimitedIo::EXCEED_TIME,
-// "Exception thrown for " + Dataset::getName());
-//}
-
BOOST_AUTO_TEST_SUITE_END() // TestUnixStream
BOOST_AUTO_TEST_SUITE_END() // Face