29 #include "ns3/simple-net-device.h"
30 #include "ns3/simple-channel.h"
31 #include "ns3/address.h"
32 #include "ns3/mac48-address.h"
33 #include "ns3/packet.h"
34 #include "ns3/callback.h"
36 #include "ns3/simulator.h"
37 #include "ns3/error-model.h"
38 #include "ns3/pointer.h"
39 #include "ns3/double.h"
40 #include "ns3/string.h"
41 #include "ns3/rng-seed-manager.h"
42 #include "ns3/queue.h"
48 for (
int i = 0; i < num; i++)
51 device->
Send (pkt, addr, 0);
59 queueFactory.
SetTypeId(
"ns3::DropTailQueue<Packet>");
64 input->SetQueue(queueA);
65 output->SetQueue(queueB);
89 virtual void DoRun (
void);
111 :
TestCase (
"ErrorModel and PhyRxDrop trace for SimpleNetDevice"), m_count (0), m_drops (0)
136 RngSeedManager::SetSeed (7);
137 RngSeedManager::SetRun (2);
158 output->SetAttribute (
"ReceiveErrorModel",
PointerValue (em));
162 Simulator::Schedule (
Seconds (0), &
SendPacket, 10000, input, output->GetAddress ());
165 Simulator::Destroy ();
186 virtual void DoRun (
void);
208 :
TestCase (
"ErrorModel and PhyRxDrop trace for SimpleNetDevice"), m_count (0), m_drops (0)
233 RngSeedManager::SetSeed (5);
234 RngSeedManager::SetRun (8);
250 em->SetRandomVariable (uv);
251 em->SetAttribute (
"ErrorRate",
DoubleValue (0.01));
254 em->AssignStreams (51);
257 output->SetAttribute (
"ReceiveErrorModel",
PointerValue (em));
261 Simulator::Schedule (
Seconds (0), &
SendPacket, 10000, input, output->GetAddress ());
264 Simulator::Destroy ();
BurstErrorModel unit tests.
bool Receive(Ptr< NetDevice > nd, Ptr< const Packet > p, uint16_t protocol, const Address &addr)
Receive form a NetDevice.
uint32_t m_count
The received packets counter.
uint32_t m_drops
The dropped packets counter.
void DropEvent(Ptr< const Packet > p)
Register a Drop.
virtual void DoRun(void)
Implementation to actually run this TestCase.
virtual ~BurstErrorModelSimple()
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.
virtual ~ErrorModelSimple()
uint32_t m_count
The received packets counter.
virtual void DoRun(void)
Implementation to actually run this TestCase.
void DropEvent(Ptr< const Packet > p)
Register a Drop.
a polymophic address class
This class can be used to hold variables of floating point type such as 'double' or 'float'.
static Mac48Address Allocate(void)
Allocate a new Mac48Address.
virtual bool Send(Ptr< Packet > packet, const Address &dest, uint16_t protocolNumber)=0
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.
void Set(const std::string &name, const AttributeValue &value, Args &&... args)
Set an attribute to be set during construction.
Ptr< Object > Create(void) const
Create an Object instance of the configured TypeId.
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
Hold objects of type Ptr<T>.
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, Ts... > MakeCallback(R(T::*memPtr)(Ts...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...