27 #include "ns3/address.h"
28 #include "ns3/callback.h"
29 #include "ns3/double.h"
30 #include "ns3/error-model.h"
31 #include "ns3/mac48-address.h"
33 #include "ns3/packet.h"
34 #include "ns3/pointer.h"
35 #include "ns3/queue.h"
36 #include "ns3/rng-seed-manager.h"
37 #include "ns3/simple-channel.h"
38 #include "ns3/simple-net-device.h"
39 #include "ns3/simulator.h"
40 #include "ns3/string.h"
48 for (
int i = 0; i <
num; i++)
51 device->Send(pkt, addr, 0);
64 queueFactory.
SetTypeId(
"ns3::DropTailQueue<Packet>");
69 input->SetQueue(queueA);
70 output->SetQueue(queueB);
94 void DoRun()
override;
116 :
TestCase(
"ErrorModel and PhyRxDrop trace for SimpleNetDevice"),
146 RngSeedManager::SetSeed(7);
147 RngSeedManager::SetRun(2);
168 output->SetAttribute(
"ReceiveErrorModel",
PointerValue(em));
169 output->TraceConnectWithoutContext(
"PhyRxDrop",
173 Simulator::Schedule(
Seconds(0), &
SendPacket, 10000, input, output->GetAddress());
176 Simulator::Destroy();
197 void DoRun()
override;
219 :
TestCase(
"ErrorModel and PhyRxDrop trace for SimpleNetDevice"),
249 RngSeedManager::SetSeed(5);
250 RngSeedManager::SetRun(8);
266 em->SetRandomVariable(uv);
270 em->AssignStreams(51);
273 output->SetAttribute(
"ReceiveErrorModel",
PointerValue(em));
274 output->TraceConnectWithoutContext(
"PhyRxDrop",
278 Simulator::Schedule(
Seconds(0), &
SendPacket, 10000, input, output->GetAddress());
281 Simulator::Destroy();
BurstErrorModel unit tests.
bool Receive(Ptr< NetDevice > nd, Ptr< const Packet > p, uint16_t protocol, const Address &addr)
Receive form a NetDevice.
void DoRun() override
Implementation to actually run this TestCase.
uint32_t m_count
The received packets counter.
~BurstErrorModelSimple() override
uint32_t m_drops
The dropped packets counter.
void DropEvent(Ptr< const Packet > p)
Register a Drop.
uint32_t m_drops
The dropped packets counter.
bool Receive(Ptr< NetDevice > nd, Ptr< const Packet > p, uint16_t protocol, const Address &addr)
Receive form a NetDevice.
~ErrorModelSimple() override
uint32_t m_count
The received packets counter.
void DropEvent(Ptr< const Packet > p)
Register a Drop.
void DoRun() override
Implementation to actually run this TestCase.
a polymophic address class
This class can be used to hold variables of floating point type such as 'double' or 'float'.
static Mac48Address Allocate()
Allocate a new Mac48Address.
uint32_t AddDevice(Ptr< NetDevice > device)
Associate a NetDevice to this node.
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
Instantiate subclasses of ns3::Object.
Ptr< Object > Create() const
Create an Object instance of the configured TypeId.
void Set(const std::string &name, const AttributeValue &value, Args &&... args)
Set an attribute to be set during construction.
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
Hold objects of type Ptr<T>.
Smart pointer class similar to boost::intrusive_ptr.
Template class for packet Queues.
void SetStream(int64_t stream)
Specifies the stream number for the RngStream.
void SetRandomVariable(Ptr< RandomVariableStream >)
Hold variables of type string.
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
static ErrorModelTestSuite errorModelTestSuite
Static variable for test initialization.
static void SendPacket(int num, Ptr< NetDevice > device, Address &addr)
static void BuildSimpleTopology(Ptr< Node > a, Ptr< Node > b, Ptr< SimpleNetDevice > input, Ptr< SimpleNetDevice > output, Ptr< SimpleChannel > channel)
#define NS_TEST_ASSERT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report and abort if not.
Time Seconds(double value)
Construct a Time in the indicated unit.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Callback< R, Args... > MakeCallback(R(T::*memPtr)(Args...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...