IPv4 Deduplication Test. More...
Public Member Functions | |
Ipv4DeduplicationTest (bool enable, Time expire=Seconds(1)) | |
Constructor. | |
void | DoRun () override |
Implementation to actually run this TestCase. | |
void | DropPkt (const Ipv4Header &ipHeader, Ptr< const Packet > packet, Ipv4L3Protocol::DropReason reason, Ptr< Ipv4 > ipv4, uint32_t interface) |
Register dropped packet. | |
void | ReceivePkt (Ptr< Socket > socket) |
Receive data. | |
Public Member Functions inherited from ns3::TestCase | |
TestCase (const TestCase &)=delete | |
virtual | ~TestCase () |
Destructor. | |
std::string | GetName () const |
TestCase & | operator= (const TestCase &)=delete |
Private Types | |
enum | MODE { ENABLED = 0 , DISABLED , DEGENERATE } |
Enum of test types. More... | |
Private Member Functions | |
void | CheckDrops (const std::string &name) |
Check packet drops. | |
void | CheckPackets (const std::string &name) |
Check packet receptions. | |
void | DoSendData (Ptr< Socket > socket, std::string to) |
Send data. | |
void | DoSendPacket (Ptr< Socket > socket, Ptr< Packet > packet, std::string to) |
Send data. | |
void | SendData (Ptr< Socket > socket, std::string to) |
Send data. | |
void | SendPacket (Ptr< Socket > socket, Ptr< Packet > packet, std::string to) |
Send data. | |
Static Private Member Functions | |
static std::string | MakeName (bool enable, Time expire) |
Creates the test name according to the parameters. | |
Private Attributes | |
std::map< std::string, uint32_t > | m_dropCountMap |
map of received packets (node name, counter) | |
Time | m_expire |
Expiration delay for duplicate cache entries. | |
MODE | m_mode |
Test type. | |
std::map< std::string, uint32_t > | m_packetCountMap |
map of received packets (node name, counter) | |
Static Private Attributes | |
static const Time | DELAY = MilliSeconds(1) |
Channel delay. | |
Additional Inherited Members | |
Public Types inherited from ns3::TestCase | |
enum class | Duration { QUICK = 1 , EXTENSIVE = 2 , TAKES_FOREVER = 3 } |
How long the test takes to execute. More... | |
Static Public Attributes inherited from ns3::TestCase | |
static constexpr auto | QUICK = Duration::QUICK |
Deprecated test duration simple enums. | |
static constexpr auto | EXTENSIVE = Duration::EXTENSIVE |
static constexpr auto | TAKES_FOREVER = Duration::TAKES_FOREVER |
Protected Member Functions inherited from ns3::TestCase | |
TestCase (std::string name) | |
Constructor. | |
void | AddTestCase (TestCase *testCase, Duration duration=Duration::QUICK) |
Add an individual child TestCase to this test suite. | |
TestCase * | GetParent () const |
Get the parent of this TestCase. | |
bool | IsStatusFailure () const |
Check if any tests failed. | |
bool | IsStatusSuccess () const |
Check if all tests passed. | |
void | SetDataDir (std::string directory) |
Set the data directory where reference trace files can be found. | |
void | ReportTestFailure (std::string cond, std::string actual, std::string limit, std::string message, std::string file, int32_t line) |
Log the failure of this TestCase. | |
bool | MustAssertOnFailure () const |
Check if this run should assert on failure. | |
bool | MustContinueOnFailure () const |
Check if this run should continue on failure. | |
std::string | CreateDataDirFilename (std::string filename) |
Construct the full path to a file in the data directory. | |
std::string | CreateTempDirFilename (std::string filename) |
Construct the full path to a file in a temporary directory. | |
IPv4 Deduplication Test.
Tests topology:
/---- B ----\
A -— | -— D -— E ---- C -—/
This test case counts the number of packets received and dropped at each node across the topology. Every node is configured to forward the multicast packet which originates at node A.
With RFC 6621 de-duplication enabled, one 1 packet is received while some number of duplicate relayed packets are dropped by RFC 6621 at each node.
When RFC6621 is disabled, the original packet has TTL = 4. Multiple packets are received at each node and several packets are dropped due to TTL expiry at each node.
Definition at line 71 of file ipv4-deduplication-test.cc.
|
private |
Enum of test types.
Enumerator | |
---|---|
ENABLED | |
DISABLED | |
DEGENERATE |
Definition at line 126 of file ipv4-deduplication-test.cc.
Constructor.
enable | deduplication enabled |
expire | expiration delay for duplicate cache entries |
Definition at line 173 of file ipv4-deduplication-test.cc.
References DEGENERATE, DELAY, DISABLED, m_expire, and m_mode.
|
private |
Check packet drops.
name | Node name |
Definition at line 488 of file ipv4-deduplication-test.cc.
References DEGENERATE, DISABLED, ENABLED, m_dropCountMap, m_mode, NS_TEST_ASSERT_MSG_NE, and NS_TEST_EXPECT_MSG_EQ.
Referenced by DoRun().
|
private |
Check packet receptions.
name | Node name |
Definition at line 435 of file ipv4-deduplication-test.cc.
References DEGENERATE, DISABLED, ENABLED, m_mode, m_packetCountMap, NS_TEST_ASSERT_MSG_EQ, and NS_TEST_EXPECT_MSG_EQ.
Referenced by DoRun().
|
overridevirtual |
Implementation to actually run this TestCase.
Subclasses should override this method to conduct their tests.
Implements ns3::TestCase.
Definition at line 283 of file ipv4-deduplication-test.cc.
References ns3::Ipv4ListRoutingHelper::Add(), ns3::Names::Add(), ns3::Ipv4StaticRoutingHelper::AddMulticastRoute(), ns3::Ipv4AddressHelper::Assign(), ns3::NodeContainer::Begin(), CheckDrops(), CheckPackets(), ns3::Names::Clear(), ns3::Config::ConnectWithoutContext(), ns3::NodeContainer::Create(), ns3::SocketFactory::CreateSocket(), DELAY, ns3::Simulator::Destroy(), DISABLED, DropPkt(), ns3::NodeContainer::End(), ns3::Names::Find(), ns3::Names::FindName(), ns3::NodeContainer::Get(), ns3::Ipv4Address::GetAny(), ns3::Object::GetObject(), ns3::Ipv4StaticRoutingHelper::GetStaticRouting(), ns3::SimpleNetDeviceHelper::Install(), m_expire, m_mode, m_packetCountMap, ns3::MakeCallback(), ns3::UdpSocket::MulticastJoinGroup(), nodes, NS_TEST_ASSERT_MSG_EQ, NS_TEST_EXPECT_MSG_EQ, ReceivePkt(), ns3::Simulator::Run(), SendData(), ns3::ObjectBase::SetAttribute(), ns3::Ipv4AddressHelper::SetBase(), and ns3::Config::SetDefault().
Send data.
socket | The sending socket. |
to | Destination address. |
Definition at line 230 of file ipv4-deduplication-test.cc.
References ns3::Create(), and SendPacket().
Referenced by SendData().
|
private |
Send data.
socket | The sending socket. |
packet | The packet to send. |
to | Destination address. |
Definition at line 236 of file ipv4-deduplication-test.cc.
References NS_TEST_EXPECT_MSG_EQ.
Referenced by SendPacket().
void Ipv4DeduplicationTest::DropPkt | ( | const Ipv4Header & | ipHeader, |
Ptr< const Packet > | packet, | ||
Ipv4L3Protocol::DropReason | reason, | ||
Ptr< Ipv4 > | ipv4, | ||
uint32_t | interface ) |
Register dropped packet.
[in] | ipHeader | IP header |
[in] | packet | Packet that was dropped |
[in] | reason | Reason for dropping packet |
[in] | ipv4 | Ipv4 instance |
[in] | interface | Interface number |
Definition at line 205 of file ipv4-deduplication-test.cc.
References DEGENERATE, DISABLED, ns3::Ipv4L3Protocol::DROP_DUPLICATE, ns3::Ipv4L3Protocol::DROP_TTL_EXPIRED, ENABLED, ns3::Names::FindName(), m_dropCountMap, m_mode, and NS_TEST_EXPECT_MSG_EQ.
Referenced by DoRun().
|
staticprivate |
Creates the test name according to the parameters.
enable | deduplication enabled |
expire | expiration delay for duplicate cache entries |
Definition at line 261 of file ipv4-deduplication-test.cc.
References DELAY, ns3::Time::MS, and ns3::Time::ToDouble().
Receive data.
[in] | socket | The receive socket. |
Definition at line 189 of file ipv4-deduplication-test.cc.
References ns3::Names::FindName(), m_packetCountMap, and NS_TEST_ASSERT_MSG_EQ.
Referenced by DoRun().
Send data.
socket | The sending socket. |
to | Destination address. |
Definition at line 243 of file ipv4-deduplication-test.cc.
References DoSendData().
Referenced by DoRun().
|
private |
Send data.
socket | The sending socket. |
packet | The packet to send. |
to | Destination address. |
Definition at line 249 of file ipv4-deduplication-test.cc.
References DoSendPacket(), ns3::MilliSeconds(), and ns3::Simulator::ScheduleWithContext().
Referenced by DoSendData().
|
staticprivate |
Channel delay.
Definition at line 113 of file ipv4-deduplication-test.cc.
Referenced by Ipv4DeduplicationTest(), DoRun(), and MakeName().
|
private |
map of received packets (node name, counter)
Definition at line 138 of file ipv4-deduplication-test.cc.
Referenced by CheckDrops(), and DropPkt().
|
private |
Expiration delay for duplicate cache entries.
Definition at line 134 of file ipv4-deduplication-test.cc.
Referenced by Ipv4DeduplicationTest(), and DoRun().
|
private |
Test type.
Definition at line 133 of file ipv4-deduplication-test.cc.
Referenced by Ipv4DeduplicationTest(), CheckDrops(), CheckPackets(), DoRun(), and DropPkt().
|
private |
map of received packets (node name, counter)
Definition at line 136 of file ipv4-deduplication-test.cc.
Referenced by CheckPackets(), DoRun(), and ReceivePkt().