A Discrete-Event Network Simulator
API
lte-test-deactivate-bearer.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011, 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation;
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  *
17  * Author:Gaurav Sathe <gaurav.sathe@tcs.com>
18  */
19 
21 
22 #include "ns3/double.h"
23 #include "ns3/internet-module.h"
24 #include "ns3/ipv4-global-routing-helper.h"
25 #include "ns3/network-module.h"
26 #include "ns3/packet-sink-helper.h"
27 #include "ns3/point-to-point-epc-helper.h"
28 #include "ns3/point-to-point-helper.h"
29 #include "ns3/radio-bearer-stats-calculator.h"
30 #include "ns3/string.h"
31 #include "ns3/udp-client-server-helper.h"
32 #include <ns3/boolean.h>
33 #include <ns3/constant-position-mobility-model.h>
34 #include <ns3/enum.h>
35 #include <ns3/eps-bearer.h>
36 #include <ns3/log.h>
37 #include <ns3/lte-enb-net-device.h>
38 #include <ns3/lte-enb-phy.h>
39 #include <ns3/lte-helper.h>
40 #include <ns3/lte-ue-net-device.h>
41 #include <ns3/lte-ue-phy.h>
42 #include <ns3/lte-ue-rrc.h>
43 #include <ns3/mobility-helper.h>
44 #include <ns3/net-device-container.h>
45 #include <ns3/node-container.h>
46 #include <ns3/object.h>
47 #include <ns3/packet.h>
48 #include <ns3/ptr.h>
49 #include <ns3/rng-seed-manager.h>
50 #include <ns3/simulator.h>
51 #include <ns3/spectrum-error-model.h>
52 #include <ns3/spectrum-interference.h>
53 #include <ns3/test.h>
54 
55 #include <iostream>
56 #include <sstream>
57 #include <string>
58 
59 NS_LOG_COMPONENT_DEFINE("LenaTestDeactivateBearer");
60 
61 namespace ns3
62 {
63 
65  : TestSuite("lte-test-deactivate-bearer", SYSTEM)
66 {
67  NS_LOG_INFO("creating LenaTestPssFfMacSchedulerSuite");
68 
69  bool errorModel = false;
70 
71  // Test Case: homogeneous flow test in PSS (different distance)
72  // Traffic1 info
73  // UDP traffic: payload size = 100 bytes, interval = 1 ms
74  // UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000
75  // byte/sec -> 132000 byte/rate
76  // Maximum throughput = 3 / ( 1/2196000 + 1/1191000 + 1/1383000) = 1486569 byte/s
77  // 132000 * 3 = 396000 < 1209046 -> estimated throughput in downlink = 132000 byte/sec
78  std::vector<uint16_t> dist_1;
79 
80  dist_1.push_back(0); // User 0 distance --> MCS 28
81  dist_1.push_back(0); // User 1 distance --> MCS 22
82  dist_1.push_back(0); // User 2 distance --> MCS 20
83 
84  std::vector<uint16_t> packetSize_1;
85 
86  packetSize_1.push_back(100); // 1
87  packetSize_1.push_back(100); // 2
88  packetSize_1.push_back(100); // 3
89 
90  std::vector<uint32_t> estThrPssDl_1;
91 
92  estThrPssDl_1.push_back(132000); // User 0 estimated TTI throughput from PSS
93  estThrPssDl_1.push_back(132000); // User 1 estimated TTI throughput from PSS
94  estThrPssDl_1.push_back(132000); // User 2 estimated TTI throughput from PSS
95 
97  new LenaDeactivateBearerTestCase(dist_1, estThrPssDl_1, packetSize_1, 1, errorModel, true),
99 }
100 
106 
107 std::string
108 LenaDeactivateBearerTestCase::BuildNameString(uint16_t nUser, std::vector<uint16_t> dist)
109 {
110  std::ostringstream oss;
111  oss << "distances (m) = [ ";
112  for (auto it = dist.begin(); it != dist.end(); ++it)
113  {
114  oss << *it << " ";
115  }
116  oss << "]";
117  return oss.str();
118 }
119 
121  std::vector<uint32_t> estThrPssDl,
122  std::vector<uint16_t> packetSize,
123  uint16_t interval,
124  bool errorModelEnabled,
125  bool useIdealRrc)
126  : TestCase(BuildNameString(dist.size(), dist)),
127  m_nUser(dist.size()),
128  m_dist(dist),
129  m_packetSize(packetSize),
130  m_interval(interval),
131  m_estThrPssDl(estThrPssDl),
132  m_errorModelEnabled(errorModelEnabled)
133 {
134 }
135 
137 {
138 }
139 
140 void
142 {
143  uint32_t originalSeed = RngSeedManager::GetSeed();
144  uint32_t originalRun = RngSeedManager::GetRun();
147 
148  if (!m_errorModelEnabled)
149  {
150  Config::SetDefault("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue(false));
151  Config::SetDefault("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue(false));
152  }
153 
154  Config::SetDefault("ns3::LteHelper::UseIdealRrc", BooleanValue(true));
155  Config::SetDefault("ns3::RadioBearerStatsCalculator::DlRlcOutputFilename",
156  StringValue(CreateTempDirFilename("DlRlcStats.txt")));
157  Config::SetDefault("ns3::RadioBearerStatsCalculator::UlRlcOutputFilename",
158  StringValue(CreateTempDirFilename("UlRlcStats.txt")));
159 
160  Ptr<LteHelper> lteHelper = CreateObject<LteHelper>();
161  Ptr<PointToPointEpcHelper> epcHelper = CreateObject<PointToPointEpcHelper>();
162  lteHelper->SetEpcHelper(epcHelper);
163 
164  Ptr<Node> pgw = epcHelper->GetPgwNode();
165 
166  // Create a single RemoteHost
167  NodeContainer remoteHostContainer;
168  remoteHostContainer.Create(1);
169  Ptr<Node> remoteHost = remoteHostContainer.Get(0);
171  internet.Install(remoteHostContainer);
172 
173  // Create the Internet
174  PointToPointHelper p2ph;
175  p2ph.SetDeviceAttribute("DataRate", DataRateValue(DataRate("100Gb/s")));
176  p2ph.SetDeviceAttribute("Mtu", UintegerValue(1500));
177  p2ph.SetChannelAttribute("Delay", TimeValue(Seconds(0.001)));
178  NetDeviceContainer internetDevices = p2ph.Install(pgw, remoteHost);
179  Ipv4AddressHelper ipv4h;
180  ipv4h.SetBase("1.0.0.0", "255.0.0.0");
181  Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign(internetDevices);
182  // interface 0 is localhost, 1 is the p2p device
183  Ipv4Address remoteHostAddr = internetIpIfaces.GetAddress(1);
184 
185  Ipv4StaticRoutingHelper ipv4RoutingHelper;
186  Ptr<Ipv4StaticRouting> remoteHostStaticRouting =
187  ipv4RoutingHelper.GetStaticRouting(remoteHost->GetObject<Ipv4>());
188  remoteHostStaticRouting->AddNetworkRouteTo(Ipv4Address("7.0.0.0"), Ipv4Mask("255.0.0.0"), 1);
189 
190  // LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL);
191 
192  // LogComponentEnable ("LenaTestDeactivateBearer", LOG_LEVEL_ALL);
193  // LogComponentEnable ("LteHelper", logLevel);
194  // LogComponentEnable ("EpcHelper", logLevel);
195  // LogComponentEnable ("EpcEnbApplication", logLevel);
196  // LogComponentEnable ("EpcMmeApplication", logLevel);
197  // LogComponentEnable ("EpcPgwApplication", logLevel);
198  // LogComponentEnable ("EpcSgwApplication", logLevel);
199  // LogComponentEnable ("LteEnbRrc", logLevel);
200 
201  lteHelper->SetAttribute("PathlossModel", StringValue("ns3::FriisSpectrumPropagationLossModel"));
202 
203  // Create Nodes: eNodeB and UE
204  NodeContainer enbNodes;
205  NodeContainer ueNodes;
206  enbNodes.Create(1);
207  ueNodes.Create(m_nUser);
208 
209  // Install Mobility Model
211  mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel");
212  mobility.Install(enbNodes);
213  mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel");
214  mobility.Install(ueNodes);
215 
216  // Create Devices and install them in the Nodes (eNB and UE)
217  NetDeviceContainer enbDevs;
218  NetDeviceContainer ueDevs;
219  int64_t stream = 1;
220 
221  lteHelper->SetSchedulerType("ns3::PssFfMacScheduler");
222  enbDevs = lteHelper->InstallEnbDevice(enbNodes);
223  stream += lteHelper->AssignStreams(enbDevs, stream);
224 
225  ueDevs = lteHelper->InstallUeDevice(ueNodes);
226  stream += lteHelper->AssignStreams(ueDevs, stream);
227 
228  Ptr<LteEnbNetDevice> lteEnbDev = enbDevs.Get(0)->GetObject<LteEnbNetDevice>();
229  Ptr<LteEnbPhy> enbPhy = lteEnbDev->GetPhy();
230  enbPhy->SetAttribute("TxPower", DoubleValue(30.0));
231  enbPhy->SetAttribute("NoiseFigure", DoubleValue(5.0));
232 
233  // Set UEs' position and power
234  for (int i = 0; i < m_nUser; i++)
235  {
238  mm->SetPosition(Vector(m_dist.at(i), 0.0, 0.0));
239  Ptr<LteUeNetDevice> lteUeDev = ueDevs.Get(i)->GetObject<LteUeNetDevice>();
240  Ptr<LteUePhy> uePhy = lteUeDev->GetPhy();
241  uePhy->SetAttribute("TxPower", DoubleValue(23.0));
242  uePhy->SetAttribute("NoiseFigure", DoubleValue(9.0));
243  }
244 
245  // Install the IP stack on the UEs
246  internet.Install(ueNodes);
247  Ipv4InterfaceContainer ueIpIface;
248  ueIpIface = epcHelper->AssignUeIpv4Address(NetDeviceContainer(ueDevs));
249 
250  // Assign IP address to UEs
251  for (uint32_t u = 0; u < ueNodes.GetN(); ++u)
252  {
253  Ptr<Node> ueNode = ueNodes.Get(u);
254  // Set the default gateway for the UE
255  Ptr<Ipv4StaticRouting> ueStaticRouting =
256  ipv4RoutingHelper.GetStaticRouting(ueNode->GetObject<Ipv4>());
257  ueStaticRouting->SetDefaultRoute(epcHelper->GetUeDefaultGatewayAddress(), 1);
258  }
259 
260  // Attach a UE to a eNB
261  lteHelper->Attach(ueDevs, enbDevs.Get(0));
262 
263  // Activate an EPS bearer on all UEs
264 
265  for (uint32_t u = 0; u < ueNodes.GetN(); ++u)
266  {
267  Ptr<NetDevice> ueDevice = ueDevs.Get(u);
268  GbrQosInformation qos;
269  qos.gbrDl = (m_packetSize.at(u) + 32) * (1000 / m_interval) *
270  8; // bit/s, considering IP, UDP, RLC, PDCP header size
271  qos.gbrUl = (m_packetSize.at(u) + 32) * (1000 / m_interval) * 8;
272  qos.mbrDl = qos.gbrDl;
273  qos.mbrUl = qos.gbrUl;
274 
276  EpsBearer bearer(q, qos);
277  bearer.arp.priorityLevel = 15 - (u + 1);
278  bearer.arp.preemptionCapability = true;
279  bearer.arp.preemptionVulnerability = true;
280  lteHelper->ActivateDedicatedEpsBearer(ueDevice, bearer, EpcTft::Default());
281  }
282 
283  // Install downlink and uplink applications
284  uint16_t dlPort = 1234;
285  uint16_t ulPort = 2000;
286  PacketSinkHelper dlPacketSinkHelper("ns3::UdpSocketFactory",
290 
291  for (uint32_t u = 0; u < ueNodes.GetN(); ++u)
292  {
293  ++ulPort;
294  serverApps.Add(
295  dlPacketSinkHelper.Install(ueNodes.Get(u))); // receive packets from remotehost
296  PacketSinkHelper ulPacketSinkHelper("ns3::UdpSocketFactory",
298  serverApps.Add(ulPacketSinkHelper.Install(remoteHost)); // receive packets from UEs
299 
300  UdpClientHelper dlClient(ueIpIface.GetAddress(u), dlPort); // uplink packets generator
301  dlClient.SetAttribute("Interval", TimeValue(MilliSeconds(m_interval)));
302  dlClient.SetAttribute("MaxPackets", UintegerValue(1000000));
303  dlClient.SetAttribute("PacketSize", UintegerValue(m_packetSize.at(u)));
304 
305  UdpClientHelper ulClient(remoteHostAddr, ulPort); // downlink packets generator
306  ulClient.SetAttribute("Interval", TimeValue(MilliSeconds(m_interval)));
307  ulClient.SetAttribute("MaxPackets", UintegerValue(1000000));
308  ulClient.SetAttribute("PacketSize", UintegerValue(m_packetSize.at(u)));
309 
310  clientApps.Add(dlClient.Install(remoteHost));
311  clientApps.Add(ulClient.Install(ueNodes.Get(u)));
312  }
313 
314  serverApps.Start(Seconds(0.030));
315  clientApps.Start(Seconds(0.030));
316 
317  double statsStartTime = 0.04; // need to allow for RRC connection establishment + SRS
318  double statsDuration = 1.0;
319  double tolerance = 0.1;
320 
321  lteHelper->EnableRlcTraces();
322  Ptr<RadioBearerStatsCalculator> rlcStats = lteHelper->GetRlcStats();
323  rlcStats->SetAttribute("StartTime", TimeValue(Seconds(statsStartTime)));
324  rlcStats->SetAttribute("EpochDuration", TimeValue(Seconds(statsDuration)));
325 
326  // get ue device pointer for UE-ID 0 IMSI 1 and enb device pointer
327  Ptr<NetDevice> ueDevice = ueDevs.Get(0);
328  Ptr<NetDevice> enbDevice = enbDevs.Get(0);
329 
330  /*
331  * Instantiate De-activation using Simulator::Schedule() method which will initiate bearer
332  * de-activation after deActivateTime Instantiate De-activation in sequence (Time const &time,
333  * MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3)
334  */
335  Time deActivateTime(Seconds(1.5));
336  Simulator::Schedule(deActivateTime,
338  lteHelper,
339  ueDevice,
340  enbDevice,
341  2);
342 
343  // stop simulation after 3 seconds
344  Simulator::Stop(Seconds(3.0));
345 
346  Simulator::Run();
347 
348  NS_LOG_INFO("DL - Test with " << m_nUser << " user(s)");
349  std::vector<uint64_t> dlDataRxed;
350  std::vector<uint64_t> dlDataTxed;
351  for (int i = 0; i < m_nUser; i++)
352  {
353  // get the imsi
354  uint64_t imsi = ueDevs.Get(i)->GetObject<LteUeNetDevice>()->GetImsi();
355  // get the lcId
356  // lcId is hard-coded, since only one dedicated bearer is added
357  uint8_t lcId = 4;
358  dlDataRxed.push_back(rlcStats->GetDlRxData(imsi, lcId));
359  dlDataTxed.push_back(rlcStats->GetDlTxData(imsi, lcId));
360  NS_LOG_INFO("\tUser " << i << " dist " << m_dist.at(i) << " imsi " << imsi << " bytes rxed "
361  << (double)dlDataRxed.at(i) << " thr "
362  << (double)dlDataRxed.at(i) / statsDuration << " ref "
363  << m_estThrPssDl.at(i));
364  NS_LOG_INFO("\tUser " << i << " imsi " << imsi << " bytes txed " << (double)dlDataTxed.at(i)
365  << " thr " << (double)dlDataTxed.at(i) / statsDuration);
366  }
367 
368  for (int i = 0; i < m_nUser; i++)
369  {
370  uint64_t imsi = ueDevs.Get(i)->GetObject<LteUeNetDevice>()->GetImsi();
371 
372  /*
373  * For UE ID-0 IMSI 1, LCID=4 is deactivated hence If traffic seen on it, test case should
374  * fail Else For other UE's, test case should validate throughput
375  */
376  if (imsi == 1)
377  {
378  NS_TEST_ASSERT_MSG_EQ((double)dlDataTxed.at(i), 0, "Invalid LCID in Statistics ");
379  }
380  else
381  {
382  NS_TEST_ASSERT_MSG_EQ_TOL((double)dlDataTxed.at(i) / statsDuration,
383  m_estThrPssDl.at(i),
384  m_estThrPssDl.at(i) * tolerance,
385  " Unfair Throughput!");
386  }
387  }
388 
390 
391  RngSeedManager::SetSeed(originalSeed);
392  RngSeedManager::SetRun(originalRun);
393 }
394 } // namespace ns3
holds a vector of ns3::Application pointers.
Mobility model for which the current position does not change once it has been set and until it is se...
This class can be used to hold variables of floating point type such as 'double' or 'float'.
Definition: double.h:42
static Ptr< EpcTft > Default()
creates a TFT matching any traffic
Definition: epc-tft.cc:229
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:91
AllocationRetentionPriority arp
allocation retention priority
Definition: eps-bearer.h:154
Qci
QoS Class Indicator.
Definition: eps-bearer.h:106
@ GBR_CONV_VOICE
GBR Conversational Voice.
Definition: eps-bearer.h:107
an Inet address class
aggregate IP/TCP/UDP functionality to existing Nodes.
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
void SetBase(Ipv4Address network, Ipv4Mask mask, Ipv4Address base="0.0.0.1")
Set the base network number, network mask and base address.
Ipv4InterfaceContainer Assign(const NetDeviceContainer &c)
Assign IP addresses to the net devices specified in the container based on the current network prefix...
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:42
static Ipv4Address GetAny()
Access to the IPv4 forwarding table, interfaces, and configuration.
Definition: ipv4.h:80
holds a vector of std::pair of Ptr<Ipv4> and interface index.
Ipv4Address GetAddress(uint32_t i, uint32_t j=0) const
a class to represent an Ipv4 address mask
Definition: ipv4-address.h:257
Helper class that adds ns3::Ipv4StaticRouting objects.
Ptr< Ipv4StaticRouting > GetStaticRouting(Ptr< Ipv4 > ipv4) const
Try and find the static routing protocol as either the main routing protocol or in the list of routin...
Test case that for testing the deactivation of the bearer functionality.
std::vector< uint16_t > m_packetSize
packet size in bytes
void DoRun() override
Implementation to actually run this TestCase.
LenaDeactivateBearerTestCase(std::vector< uint16_t > dist, std::vector< uint32_t > estThrPssDl, std::vector< uint16_t > packetSize, uint16_t interval, bool errorModelEnabled, bool useIdealRrc)
Constructor.
std::vector< uint16_t > m_dist
distance between the nodes
static std::string BuildNameString(uint16_t nUser, std::vector< uint16_t > dist)
Build name string function.
std::vector< uint32_t > m_estThrPssDl
estimated threshold PSS DL
The test suite class for the LenaDeactivateBearerTestCase.
The eNodeB device implementation.
Ptr< LteEnbPhy > GetPhy() const
void SetEpcHelper(Ptr< EpcHelper > h)
Set the EpcHelper to be used to setup the EPC network in conjunction with the setup of the LTE radio ...
Definition: lte-helper.cc:285
Ptr< RadioBearerStatsCalculator > GetRlcStats()
Definition: lte-helper.cc:1701
void DeActivateDedicatedEpsBearer(Ptr< NetDevice > ueDevice, Ptr< NetDevice > enbDevice, uint8_t bearerId)
Manually trigger dedicated bearer de-activation at specific simulation time.
Definition: lte-helper.cc:1387
NetDeviceContainer InstallEnbDevice(NodeContainer c)
Create a set of eNodeB devices.
Definition: lte-helper.cc:485
void SetSchedulerType(std::string type)
Set the type of scheduler to be used by eNodeB devices.
Definition: lte-helper.cc:292
void Attach(NetDeviceContainer ueDevices)
Enables automatic attachment of a set of UE devices to a suitable cell using Idle mode initial cell s...
Definition: lte-helper.cc:1039
void EnableRlcTraces()
Enable trace sinks for RLC layer.
Definition: lte-helper.cc:1558
NetDeviceContainer InstallUeDevice(NodeContainer c)
Create a set of UE devices.
Definition: lte-helper.cc:500
int64_t AssignStreams(NetDeviceContainer c, int64_t stream)
Assign a fixed random variable stream number to the random variables used.
Definition: lte-helper.cc:1567
uint8_t ActivateDedicatedEpsBearer(NetDeviceContainer ueDevices, EpsBearer bearer, Ptr< EpcTft > tft)
Activate a dedicated EPS bearer on a given set of UE devices.
Definition: lte-helper.cc:1154
The LteUeNetDevice class implements the UE net device.
Helper class used to assign positions and mobility models to nodes.
holds a vector of ns3::NetDevice pointers
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr<NetDevice> stored in this container at a given index.
Ptr< Node > GetPgwNode() const override
Get the PGW node.
Ipv4Address GetUeDefaultGatewayAddress() override
Ipv4InterfaceContainer AssignUeIpv4Address(NetDeviceContainer ueDevices) override
Assign IPv4 addresses to UE devices.
keep track of a set of node pointers.
uint32_t GetN() const
Get the number of Ptr<Node> stored in this container.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
Definition: object-base.cc:204
Ptr< T > GetObject() const
Get a pointer to the requested aggregated Object.
Definition: object.h:471
A helper to make it easier to instantiate an ns3::PacketSinkApplication on a set of nodes.
ApplicationContainer Install(NodeContainer c) const
Install an ns3::PacketSinkApplication on each node of the input container configured with all the att...
Build a set of PointToPointNetDevice objects.
void SetDeviceAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each NetDevice created by the helper.
void SetChannelAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each Channel created by the helper.
NetDeviceContainer Install(NodeContainer c)
static void SetRun(uint64_t run)
Set the run number of simulation.
static void SetSeed(uint32_t seed)
Set the seed.
static uint64_t GetRun()
Get the current run number.
static uint32_t GetSeed()
Get the current seed value which will be used by all subsequently instantiated RandomVariableStream o...
static EventId Schedule(const Time &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
Definition: simulator.h:571
static void Destroy()
Execute the events scheduled with ScheduleDestroy().
Definition: simulator.cc:142
static void Run()
Run the simulation.
Definition: simulator.cc:178
static void Stop()
Tell the Simulator the calling event should be the last one executed.
Definition: simulator.cc:186
Hold variables of type string.
Definition: string.h:56
encapsulates test code
Definition: test.h:1060
@ QUICK
Fast test.
Definition: test.h:1065
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
Definition: test.cc:301
std::string CreateTempDirFilename(std::string filename)
Construct the full path to a file in a temporary directory.
Definition: test.cc:438
A suite of tests to run.
Definition: test.h:1256
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
Create a client application which sends UDP packets carrying a 32bit sequence number and a 64 bit tim...
void SetAttribute(std::string name, const AttributeValue &value)
Record an attribute to be set in each Application after it is is created.
ApplicationContainer Install(NodeContainer c)
Hold an unsigned integer type.
Definition: uinteger.h:45
void SetDefault(std::string name, const AttributeValue &value)
Definition: config.cc:890
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:202
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
Definition: log.h:275
static LenaTestBearerDeactivateSuite lenaTestBearerDeactivateSuite
Static variable for test initialization.
void(* DataRate)(DataRate oldValue, DataRate newValue)
TracedValue callback signature for DataRate.
Definition: data-rate.h:327
#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.
Definition: test.h:144
#define NS_TEST_ASSERT_MSG_EQ_TOL(actual, limit, tol, msg)
Test that actual and expected (limit) values are equal to plus or minus some tolerance and report and...
Definition: test.h:337
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:1326
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
Definition: nstime.h:1338
serverApps
Definition: first.py:54
clientApps
Definition: first.py:64
Every class exported by the ns3 library is enclosed in the ns3 namespace.
mobility
Definition: third.py:105
bool preemptionVulnerability
true if bearer can be preempted by others
Definition: eps-bearer.h:60
bool preemptionCapability
true if bearer can preempt others
Definition: eps-bearer.h:59
uint8_t priorityLevel
1-15; 1 = highest
Definition: eps-bearer.h:58
3GPP TS 36.413 9.2.1.18 GBR QoS Information
Definition: eps-bearer.h:36
uint64_t gbrDl
Guaranteed Bit Rate (bit/s) in downlink.
Definition: eps-bearer.h:42
uint64_t gbrUl
Guaranteed Bit Rate (bit/s) in uplink.
Definition: eps-bearer.h:43
uint64_t mbrDl
Maximum Bit Rate (bit/s) in downlink.
Definition: eps-bearer.h:44
uint64_t mbrUl
Maximum Bit Rate (bit/s) in uplink.
Definition: eps-bearer.h:45
static const uint32_t packetSize
Packet size generated at the AP.