27 #include "../model/satellite-generic-stream-encapsulator.h"
28 #include "../utils/satellite-env-variables.h"
30 #include "ns3/callback.h"
32 #include "ns3/packet.h"
34 #include "ns3/random-variable-stream.h"
35 #include "ns3/singleton.h"
67 void Receive(Ptr<Packet> p, Mac48Address source, Mac48Address dest);
70 virtual void DoRun(
void);
84 : TestCase(
"Test GSE.")
96 Singleton<SatEnvVariables>::Get()->DoInitialize();
97 Singleton<SatEnvVariables>::Get()->SetOutputVariables(
"test-sat-gse",
"",
true);
99 Mac48Address source = Mac48Address::Allocate();
100 Mac48Address dest = Mac48Address::Allocate();
103 Ptr<SatQueue> queue = CreateObject<SatQueue>(flowId);
104 Ptr<SatGenericStreamEncapsulator> gse =
105 CreateObject<SatGenericStreamEncapsulator>(source, dest, source, dest, flowId);
106 gse->SetQueue(queue);
112 Ptr<UniformRandomVariable> unif = CreateObject<UniformRandomVariable>();
116 uint32_t numPackets(70);
119 for (uint32_t i = 0; i < numPackets; ++i)
121 uint32_t packetSize = unif->GetInteger(3, 10000);
122 Ptr<Packet> packet = Create<Packet>(packetSize);
124 gse->EnquePdu(packet, dest);
132 uint32_t bytesLeft(1);
133 uint32_t nextMinTxO(0);
134 uint32_t numFrames(15);
135 uint32_t frameBytes(50000);
136 for (uint32_t b = 0; b < numFrames; ++b)
138 uint32_t txOpp(frameBytes);
139 while (bytesLeft > 0)
141 Ptr<Packet> p = gse->NotifyTxOpportunity(txOpp, bytesLeft, nextMinTxO);
146 txOpp -= p->GetSize();
155 "All sent packets are not received");
157 Simulator::Destroy();
159 Singleton<SatEnvVariables>::Get()->DoDispose();
165 uint32_t rcvdPacketSize = p->GetSize();
175 "Wrong size packet received");
189 : TestSuite(
"sat-gse-test", Type::UNIT)
Generic Stream Encapsulation (GSE) test case implementation.
std::vector< uint32_t > m_rcvdPacketSizes
Received packet sizes.
std::vector< uint32_t > m_sentPacketSizes
Sent packet sizes.
void Receive(Ptr< Packet > p, Mac48Address source, Mac48Address dest)
Receive packet and check that it is of correct size.
virtual ~SatGseTestCase()
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.
static SatGseTraceSuite SatGseTestSuite