21 #include "ns3/config.h" 
   22 #include "ns3/simulator.h" 
   23 #include "ns3/pointer.h" 
   25 #include "ns3/packet.h" 
   26 #include "ns3/node-container.h" 
   27 #include "ns3/net-device-container.h" 
   28 #include "ns3/error-model.h" 
   29 #include "ns3/rng-seed-manager.h" 
   30 #include "ns3/radio-bearer-stats-calculator.h" 
   31 #include "ns3/lte-rlc-header.h" 
   32 #include "ns3/lte-rlc-um.h" 
   56   double losses[] = {0.0, 0.10, 0.25, 0.50, 0.75, 0.90, 1.00};
 
   57   uint32_t seeds[] = {1111, 2222, 3333, 4444, 5555, 6666, 7777, 8888, 9999, 10101};
 
   59   for ( uint32_t l = 0 ; l < (
sizeof (losses) / 
sizeof (
double)) ; l++ )
 
   61       for ( uint32_t s = 0 ; s < (
sizeof (seeds) / 
sizeof (uint32_t)) ; s++ )
 
   63           std::ostringstream name;
 
   64           name << 
" Losses = " << losses[l] << 
"%. Seed = " << seeds[s];
 
   68               testDuration = TestCase::QUICK;
 
   72               testDuration = TestCase::EXTENSIVE;
 
  120   uint16_t numberOfNodes = 1;
 
  135   RngSeedManager::SetSeed (
m_seed);
 
  146   enbNodes.
Create (numberOfNodes);
 
  147   ueNodes.
Create (numberOfNodes);
 
  173   ueLteDevs.
Get (0)->SetAttribute (
"ReceiveErrorModel", 
PointerValue (dlEm));
 
  175   enbLteDevs.
Get (0)->SetAttribute (
"ReceiveErrorModel", 
PointerValue (ulEm));
 
  180   lteSimpleHelper->
m_enbRrc->SetPduSize (100);
 
  189   lteSimpleHelper->
m_ueRrc->SetPduSize (100);
 
  197   Simulator::Schedule (
Seconds (0.100), &LteTestRrc::Start, lteSimpleHelper->
m_enbRrc);
 
  198   Simulator::Schedule (
Seconds (10.100), &LteTestRrc::Stop, lteSimpleHelper->
m_enbRrc);
 
  201   Simulator::Schedule (
Seconds (20.100), &LteTestRrc::Start, lteSimpleHelper->
m_ueRrc);
 
  202   Simulator::Schedule (
Seconds (30.100), &LteTestRrc::Stop, lteSimpleHelper->
m_ueRrc);
 
  205   Simulator::Stop (
Seconds (31.000));
 
  208   uint32_t txEnbRrcPdus = lteSimpleHelper->
m_enbRrc->GetTxPdus ();
 
  209   uint32_t rxUeRrcPdus = lteSimpleHelper->
m_ueRrc->GetRxPdus ();
 
  211   uint32_t txUeRrcPdus = lteSimpleHelper->
m_ueRrc->GetTxPdus ();
 
  212   uint32_t rxEnbRrcPdus = lteSimpleHelper->
m_enbRrc->GetRxPdus ();
 
  229                          "Downlink: TX PDUs (" << txEnbRrcPdus << 
") != RX PDUs (" << rxUeRrcPdus << 
") + DROPS (" << 
m_dlDrops << 
")");
 
  231                          "Uplink: TX PDUs (" << txUeRrcPdus << 
") != RX PDUs (" << rxEnbRrcPdus << 
") + DROPS (" << 
m_ulDrops << 
")");
 
  233   Simulator::Destroy ();
 
Ptr< LteTestRrc > m_enbRrc
 
Hold variables of type string. 
 
Ptr< NetDevice > Get(uint32_t i) const 
Get the Ptr stored in this container at a given index. 
 
static LteRlcUmE2eTestSuite lteRlcUmE2eTestSuite
 
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name. 
 
Ptr< LteTestRrc > m_ueRrc
 
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO. 
 
void SetTxOpportunityMode(uint8_t mode)
 
Ptr< LteTestMac > m_ueMac
 
TestDuration
How long the test takes to execute. 
 
Ptr< LteTestMac > m_enbMac
 
void AddTestCase(TestCase *testCase, enum TestDuration duration)
Add an individual child TestCase to this test suite. 
 
#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. 
 
holds a vector of ns3::NetDevice pointers 
 
NetDeviceContainer InstallEnbDevice(NodeContainer c)
create a set of eNB devices 
 
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
 
void SetTxOppTime(Time txOppTime)
 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
 
keep track of a set of node pointers. 
 
Hold objects of type Ptr. 
 
virtual ~LteRlcUmE2eTestCase()
 
NetDeviceContainer InstallUeDevice(NodeContainer c)
create a set of UE devices 
 
void UlDropEvent(Ptr< const Packet > p)
 
void SetTxOppSize(uint32_t txOppSize)
 
void DlDropEvent(Ptr< const Packet > p)
 
Time Seconds(double value)
Construct a Time in the indicated unit. 
 
LteRlcUmE2eTestSuite()
Test x.x.x RLC UM: End-to-end flow. 
 
virtual void DoRun(void)
Implementation to actually run this TestCase. 
 
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer. 
 
This class can be used to hold variables of floating point type such as 'double' or 'float'...
 
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful. 
 
Test x.x.x RLC UM: End-to-end flow.