IPv4 Deduplication Test. More...
Public Member Functions | |
Ipv4DeduplicationTest (bool enable, Time expire=Seconds(1)) | |
virtual void | DoRun (void) |
Implementation to actually run this TestCase. More... | |
void | DropPkt (const Ipv4Header &ipHeader, Ptr< const Packet > packet, Ipv4L3Protocol::DropReason reason, Ptr< Ipv4 > ipv4, uint32_t interface) |
Register dropped packet. More... | |
void | ReceivePkt (Ptr< Socket > socket) |
Receive data. More... | |
![]() | |
virtual | ~TestCase () |
Destructor. More... | |
std::string | GetName (void) const |
Private Types | |
enum | MODE { ENABLED = 0, DISABLED, DEGENERATE } |
Private Member Functions | |
void | CheckDrops (const std::string &name) |
Check packet drops. More... | |
void | CheckPackets (const std::string &name) |
Check packet receptions. More... | |
void | DoSendData (Ptr< Socket > socket, std::string to) |
Send data. More... | |
void | DoSendPacket (Ptr< Socket > socket, Ptr< Packet > packet, std::string to) |
Send data. More... | |
void | SendData (Ptr< Socket > socket, std::string to) |
Send data. More... | |
void | SendPacket (Ptr< Socket > socket, Ptr< Packet > packet, std::string to) |
Send data. More... | |
Static Private Member Functions | |
static std::string | MakeName (bool enable, Time expire) |
Private Attributes | |
std::map< std::string, uint32_t > | m_dropCountMap |
Time | m_expire |
MODE | m_mode |
std::map< std::string, uint32_t > | m_packetCountMap |
Static Private Attributes | |
static const Time | DELAY = MilliSeconds (1) |
Additional Inherited Members | |
![]() | |
enum | TestDuration { QUICK = 1, EXTENSIVE = 2, TAKES_FOREVER = 3 } |
How long the test takes to execute. More... | |
![]() | |
TestCase (std::string name) | |
Constructor. More... | |
void | AddTestCase (TestCase *testCase, TestDuration duration=QUICK) |
Add an individual child TestCase to this test suite. More... | |
TestCase * | GetParent () const |
Get the parent of this TestCsse. More... | |
bool | IsStatusFailure (void) const |
Check if any tests failed. More... | |
bool | IsStatusSuccess (void) const |
Check if all tests passed. More... | |
void | SetDataDir (std::string directory) |
Set the data directory where reference trace files can be found. More... | |
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. More... | |
bool | MustAssertOnFailure (void) const |
Check if this run should assert on failure. More... | |
bool | MustContinueOnFailure (void) const |
Check if this run should continue on failure. More... | |
std::string | CreateDataDirFilename (std::string filename) |
Construct the full path to a file in the data directory. More... | |
std::string | CreateTempDirFilename (std::string filename) |
Construct the full path to a file in a temporary directory. More... | |
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 87 of file ipv4-deduplication-test.cc.
|
private |
Enumerator | |
---|---|
ENABLED | |
DISABLED | |
DEGENERATE |
Definition at line 132 of file ipv4-deduplication-test.cc.
Ipv4DeduplicationTest::Ipv4DeduplicationTest | ( | bool | enable, |
Time | expire = Seconds (1) |
||
) |
Definition at line 166 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 437 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 405 of file ipv4-deduplication-test.cc.
References DEGENERATE, DISABLED, ENABLED, m_mode, m_packetCountMap, NS_TEST_ASSERT_MSG_NE, and NS_TEST_EXPECT_MSG_EQ.
Referenced by DoRun().
|
virtual |
Implementation to actually run this TestCase.
Subclasses should override this method to conduct their tests.
Implements ns3::TestCase.
Definition at line 266 of file ipv4-deduplication-test.cc.
References ns3::Ipv4StaticRoutingHelper::AddMulticastRoute(), ns3::Ipv4AddressHelper::Assign(), third::channel, CheckDrops(), CheckPackets(), ns3::Config::ConnectWithoutContext(), ns3::SocketFactory::CreateSocket(), DELAY, first::devices, DISABLED, DropPkt(), ns3::Object::GetObject(), ns3::Ipv4StaticRoutingHelper::GetStaticRouting(), ns3::InternetStackHelper::Install(), m_expire, m_mode, m_packetCountMap, ns3::MakeCallback(), ns3::UdpSocket::MulticastJoinGroup(), first::nodes, NS_ASSERT_MSG, NS_TEST_EXPECT_MSG_EQ, ReceivePkt(), SendData(), ns3::ObjectBase::SetAttribute(), ns3::Ipv4AddressHelper::SetBase(), ns3::Config::SetDefault(), ns3::InternetStackHelper::SetIpv4ArpJitter(), ns3::InternetStackHelper::SetIpv6StackInstall(), and ns3::InternetStackHelper::SetRoutingHelper().
Send data.
socket | The sending socket. |
to | Destination address. |
Definition at line 218 of file ipv4-deduplication-test.cc.
References SendPacket().
Referenced by SendData().
|
private |
Send data.
socket | The sending socket. |
packet | The packet to send. |
to | Destination address. |
Definition at line 224 of file ipv4-deduplication-test.cc.
References NS_TEST_EXPECT_MSG_EQ, and ns3::Socket::SendTo().
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 195 of file ipv4-deduplication-test.cc.
References DEGENERATE, DISABLED, ENABLED, ns3::Ipv4::GetNetDevice(), m_dropCountMap, m_mode, and NS_TEST_EXPECT_MSG_EQ.
Referenced by DoRun().
|
staticprivate |
Definition at line 244 of file ipv4-deduplication-test.cc.
References DELAY, and ns3::Time::ToDouble().
Receive data.
[in] | socket | The receive socket. |
Definition at line 181 of file ipv4-deduplication-test.cc.
References ns3::Socket::GetNode(), ns3::Socket::GetRxAvailable(), ns3::Packet::GetSize(), m_packetCountMap, max, NS_ASSERT, and ns3::Socket::Recv().
Referenced by DoRun().
Send data.
socket | The sending socket. |
to | Destination address. |
Definition at line 231 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 237 of file ipv4-deduplication-test.cc.
References DoSendPacket(), ns3::Node::GetId(), ns3::Socket::GetNode(), and ns3::MilliSeconds().
Referenced by DoSendData().
|
staticprivate |
Definition at line 129 of file ipv4-deduplication-test.cc.
Referenced by DoRun(), Ipv4DeduplicationTest(), and MakeName().
|
private |
Definition at line 138 of file ipv4-deduplication-test.cc.
Referenced by CheckDrops(), and DropPkt().
|
private |
Definition at line 136 of file ipv4-deduplication-test.cc.
Referenced by DoRun(), and Ipv4DeduplicationTest().
|
private |
Definition at line 135 of file ipv4-deduplication-test.cc.
Referenced by CheckDrops(), CheckPackets(), DoRun(), DropPkt(), and Ipv4DeduplicationTest().
|
private |
Definition at line 137 of file ipv4-deduplication-test.cc.
Referenced by CheckPackets(), DoRun(), and ReceivePkt().