author | Nicola Baldo <nbaldo@cttc.es> |
Tue, 29 May 2012 14:13:23 +0200 | |
changeset 8823 | c49104e07bcb |
parent 8817 | 9df898a16370 |
parent 8822 | 49d3a0979d43 |
child 8986 | 3391f6a7fb3b |
permissions | -rw-r--r-- |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
1 |
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
2 |
/* |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
3 |
* Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
4 |
* |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation; |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
8 |
* |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
12 |
* GNU General Public License for more details. |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
13 |
* |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
17 |
* |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
18 |
* Author: Manuel Requena <manuel.requena@cttc.es> |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
19 |
*/ |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
20 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
21 |
#include "ns3/config.h" |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
22 |
#include "ns3/simulator.h" |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
23 |
#include "ns3/pointer.h" |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
24 |
#include "ns3/log.h" |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
25 |
#include "ns3/packet.h" |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
26 |
#include "ns3/node-container.h" |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
27 |
#include "ns3/net-device-container.h" |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
28 |
#include "ns3/error-model.h" |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
29 |
#include "ns3/radio-bearer-stats-calculator.h" |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
30 |
#include "ns3/lte-rlc-header.h" |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
31 |
#include "ns3/lte-rlc-um.h" |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
32 |
|
8822
49d3a0979d43
fixed Bug 1439 - exclude headers for tests from installation
Nicola Baldo <nbaldo@cttc.es>
parents:
8749
diff
changeset
|
33 |
#include "lte-simple-helper.h" |
49d3a0979d43
fixed Bug 1439 - exclude headers for tests from installation
Nicola Baldo <nbaldo@cttc.es>
parents:
8749
diff
changeset
|
34 |
#include "lte-test-entities.h" |
49d3a0979d43
fixed Bug 1439 - exclude headers for tests from installation
Nicola Baldo <nbaldo@cttc.es>
parents:
8749
diff
changeset
|
35 |
#include "lte-test-rlc-um-e2e.h" |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
36 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
37 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
38 |
NS_LOG_COMPONENT_DEFINE ("LteRlcUmE2eTest"); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
39 |
|
8822
49d3a0979d43
fixed Bug 1439 - exclude headers for tests from installation
Nicola Baldo <nbaldo@cttc.es>
parents:
8749
diff
changeset
|
40 |
namespace ns3 { |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
41 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
42 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
43 |
/** |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
44 |
* Test x.x.x RLC UM: End-to-end flow |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
45 |
*/ |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
46 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
47 |
/** |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
48 |
* TestSuite |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
49 |
*/ |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
50 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
51 |
LteRlcUmE2eTestSuite::LteRlcUmE2eTestSuite () |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
52 |
: TestSuite ("lte-rlc-um-e2e", SYSTEM) |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
53 |
{ |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
54 |
// NS_LOG_INFO ("Creating LteRlcUmE2eTestSuite"); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
55 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
56 |
double losses[] = {0.0, 0.10, 0.25, 0.50, 0.75, 0.90, 1.00}; |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
57 |
uint32_t seeds[] = {1111, 2222, 3333, 4444, 5555, 6666, 7777, 8888, 9999, 10101}; |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
58 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
59 |
for ( uint32_t l = 0 ; l < (sizeof (losses) / sizeof (double)) ; l++ ) |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
60 |
{ |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
61 |
for ( uint32_t s = 0 ; s < (sizeof (seeds) / sizeof (uint32_t)) ; s++ ) |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
62 |
{ |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
63 |
std::ostringstream name; |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
64 |
name << " Losses = " << losses[l] << "%. Seed = " << seeds[s]; |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
65 |
AddTestCase (new LteRlcUmE2eTestCase (name.str (), seeds[s], losses[l])); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
66 |
} |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
67 |
} |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
68 |
} |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
69 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
70 |
static LteRlcUmE2eTestSuite lteRlcUmE2eTestSuite; |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
71 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
72 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
73 |
/** |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
74 |
* TestCase |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
75 |
*/ |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
76 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
77 |
LteRlcUmE2eTestCase::LteRlcUmE2eTestCase (std::string name, uint32_t seed, double losses) |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
78 |
: TestCase (name) |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
79 |
{ |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
80 |
// NS_LOG_UNCOND ("Creating LteRlcUmTestingTestCase: " + name); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
81 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
82 |
m_seed = seed; |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
83 |
m_losses = losses; |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
84 |
|
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
85 |
m_dlDrops = 0; |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
86 |
m_ulDrops = 0; |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
87 |
} |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
88 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
89 |
LteRlcUmE2eTestCase::~LteRlcUmE2eTestCase () |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
90 |
{ |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
91 |
} |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
92 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
93 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
94 |
void |
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
95 |
LteRlcUmE2eTestCase::DlDropEvent (Ptr<const Packet> p) |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
96 |
{ |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
97 |
// NS_LOG_FUNCTION (this); |
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
98 |
m_dlDrops++; |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
99 |
} |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
100 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
101 |
void |
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
102 |
LteRlcUmE2eTestCase::UlDropEvent (Ptr<const Packet> p) |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
103 |
{ |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
104 |
// NS_LOG_FUNCTION (this); |
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
105 |
m_ulDrops++; |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
106 |
} |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
107 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
108 |
void |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
109 |
LteRlcUmE2eTestCase::DoRun (void) |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
110 |
{ |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
111 |
uint16_t numberOfNodes = 1; |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
112 |
|
8817
9df898a16370
Disable some logs in rlc tests
Manuel Requena <manuel.requena@cttc.es>
parents:
8749
diff
changeset
|
113 |
// LogLevel level = (LogLevel) (LOG_LEVEL_ALL | LOG_PREFIX_TIME | LOG_PREFIX_NODE | LOG_PREFIX_FUNC); |
9df898a16370
Disable some logs in rlc tests
Manuel Requena <manuel.requena@cttc.es>
parents:
8749
diff
changeset
|
114 |
// LogComponentEnable ("LteRlcUmE2eTest", level); |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
115 |
// LogComponentEnable ("ErrorModel", level); |
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
116 |
// LogComponentEnable ("LteSimpleHelper", level); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
117 |
// LogComponentEnable ("LteSimpleNetDevice", level); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
118 |
// LogComponentEnable ("SimpleNetDevice", level); |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
119 |
// LogComponentEnable ("SimpleChannel", level); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
120 |
// LogComponentEnable ("LteTestEntities", level); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
121 |
// LogComponentEnable ("LtePdcp", level); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
122 |
// LogComponentEnable ("LteRlc", level); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
123 |
// LogComponentEnable ("LteRlcUm", level); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
124 |
// LogComponentEnable ("LteRlcAm", level); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
125 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
126 |
SeedManager::SetSeed (m_seed); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
127 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
128 |
Ptr<LteSimpleHelper> lteSimpleHelper = CreateObject<LteSimpleHelper> (); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
129 |
// lteSimpleHelper->EnableLogComponents (); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
130 |
// lteSimpleHelper->EnableTraces (); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
131 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
132 |
lteSimpleHelper->SetAttribute ("RlcEntity", StringValue ("RlcUm")); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
133 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
134 |
// eNB and UE nodes |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
135 |
NodeContainer ueNodes; |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
136 |
NodeContainer enbNodes; |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
137 |
enbNodes.Create (numberOfNodes); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
138 |
ueNodes.Create (numberOfNodes); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
139 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
140 |
// Install LTE Devices to the nodes |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
141 |
NetDeviceContainer enbLteDevs = lteSimpleHelper->InstallEnbDevice (enbNodes); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
142 |
NetDeviceContainer ueLteDevs = lteSimpleHelper->InstallUeDevice (ueNodes); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
143 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
144 |
// Note: Just one eNB and UE are supported. Everything is done in InstallEnbDevice and InstallUeDevice |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
145 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
146 |
// Attach one UE per eNodeB |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
147 |
// for (uint16_t i = 0; i < numberOfNodes; i++) |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
148 |
// { |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
149 |
// lteSimpleHelper->Attach (ueLteDevs.Get(i), enbLteDevs.Get(i)); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
150 |
// } |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
151 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
152 |
// lteSimpleHelper->ActivateEpsBearer (ueLteDevs, EpsBearer (EpsBearer::NGBR_VIDEO_TCP_DEFAULT), EpcTft::Default ()); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
153 |
|
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
154 |
// Error models: downlink and uplink |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
155 |
Ptr<RateErrorModel> dlEm = CreateObjectWithAttributes<RateErrorModel> ("RanVar", RandomVariableValue (UniformVariable (0.0, 1.0))); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
156 |
dlEm->SetAttribute ("ErrorRate", DoubleValue (m_losses)); |
8749
4462ac63d4cf
merge of the code from the LENA project into ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents:
8626
diff
changeset
|
157 |
dlEm->SetAttribute ("ErrorUnit", StringValue ("ERROR_UNIT_PACKET")); |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
158 |
|
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
159 |
Ptr<RateErrorModel> ulEm = CreateObjectWithAttributes<RateErrorModel> ("RanVar", RandomVariableValue (UniformVariable (0.0, 1.0))); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
160 |
ulEm->SetAttribute ("ErrorRate", DoubleValue (m_losses)); |
8749
4462ac63d4cf
merge of the code from the LENA project into ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents:
8626
diff
changeset
|
161 |
ulEm->SetAttribute ("ErrorUnit", StringValue ("ERROR_UNIT_PACKET")); |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
162 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
163 |
// The below hooks will cause drops to be counted at simple phy layer |
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
164 |
ueLteDevs.Get (0)->SetAttribute ("ReceiveErrorModel", PointerValue (dlEm)); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
165 |
ueLteDevs.Get (0)->TraceConnectWithoutContext ("PhyRxDrop", MakeCallback (&LteRlcUmE2eTestCase::DlDropEvent, this)); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
166 |
enbLteDevs.Get (0)->SetAttribute ("ReceiveErrorModel", PointerValue (ulEm)); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
167 |
enbLteDevs.Get (0)->TraceConnectWithoutContext ("PhyRxDrop", MakeCallback (&LteRlcUmE2eTestCase::UlDropEvent, this)); |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
168 |
|
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
169 |
// Sending packets from eNB RRC layer (eNB -> UE) |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
170 |
lteSimpleHelper->m_enbRrc->SetArrivalTime (Seconds (0.010)); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
171 |
lteSimpleHelper->m_enbRrc->SetPduSize (100); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
172 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
173 |
// MAC sends transmission opportunities (TxOpp) |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
174 |
lteSimpleHelper->m_enbMac->SetTxOppSize (150); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
175 |
lteSimpleHelper->m_enbMac->SetTxOppTime (Seconds (0.005)); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
176 |
lteSimpleHelper->m_enbMac->SetTxOpportunityMode (LteTestMac::RANDOM_MODE); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
177 |
|
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
178 |
// Sending packets from UE RRC layer (UE -> eNB) |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
179 |
lteSimpleHelper->m_ueRrc->SetArrivalTime (Seconds (0.010)); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
180 |
lteSimpleHelper->m_ueRrc->SetPduSize (100); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
181 |
|
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
182 |
// MAC sends transmission opportunities (TxOpp) |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
183 |
lteSimpleHelper->m_ueMac->SetTxOppSize (150); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
184 |
lteSimpleHelper->m_ueMac->SetTxOppTime (Seconds (0.005)); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
185 |
lteSimpleHelper->m_ueMac->SetTxOpportunityMode (LteTestMac::RANDOM_MODE); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
186 |
|
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
187 |
// Start/Stop pseudo-application at eNB RRC |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
188 |
Simulator::Schedule (Seconds (0.100), &LteTestRrc::Start, lteSimpleHelper->m_enbRrc); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
189 |
Simulator::Schedule (Seconds (10.100), &LteTestRrc::Stop, lteSimpleHelper->m_enbRrc); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
190 |
|
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
191 |
// Start/Stop pseudo-application at UE RRC |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
192 |
Simulator::Schedule (Seconds (20.100), &LteTestRrc::Start, lteSimpleHelper->m_ueRrc); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
193 |
Simulator::Schedule (Seconds (30.100), &LteTestRrc::Stop, lteSimpleHelper->m_ueRrc); |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
194 |
|
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
195 |
|
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
196 |
Simulator::Stop (Seconds (31.000)); |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
197 |
Simulator::Run (); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
198 |
|
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
199 |
uint32_t txEnbRrcPdus = lteSimpleHelper->m_enbRrc->GetTxPdus (); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
200 |
uint32_t rxUeRrcPdus = lteSimpleHelper->m_ueRrc->GetRxPdus (); |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
201 |
|
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
202 |
uint32_t txUeRrcPdus = lteSimpleHelper->m_ueRrc->GetTxPdus (); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
203 |
uint32_t rxEnbRrcPdus = lteSimpleHelper->m_enbRrc->GetRxPdus (); |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
204 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
205 |
// NS_LOG_INFO ("Seed = " << m_seed); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
206 |
// NS_LOG_INFO ("Losses (%) = " << uint32_t (m_losses * 100)); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
207 |
|
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
208 |
// NS_LOG_INFO ("dl dev drops = " << m_dlDrops); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
209 |
// NS_LOG_INFO ("ul dev drops = " << m_ulDrops); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
210 |
|
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
211 |
// NS_LOG_INFO ("eNB tx RRC count = " << txEnbRrcPdus); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
212 |
// NS_LOG_INFO ("eNB rx RRC count = " << rxEnbRrcPdus); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
213 |
// NS_LOG_INFO ("UE tx RRC count = " << txUeRrcPdus); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
214 |
// NS_LOG_INFO ("UE rx RRC count = " << rxUeRrcPdus); |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
215 |
|
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
216 |
NS_LOG_INFO (m_seed << "\t" << m_losses << "\t" << txEnbRrcPdus << "\t" << rxUeRrcPdus << "\t" << m_dlDrops); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
217 |
NS_LOG_INFO (m_seed << "\t" << m_losses << "\t" << txUeRrcPdus << "\t" << rxEnbRrcPdus << "\t" << m_ulDrops); |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
218 |
|
8626
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
219 |
NS_TEST_ASSERT_MSG_EQ (txEnbRrcPdus, rxUeRrcPdus + m_dlDrops, |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
220 |
"Downlink: TX PDUs (" << txEnbRrcPdus << ") != RX PDUs (" << rxUeRrcPdus << ") + DROPS (" << m_dlDrops << ")"); |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
221 |
NS_TEST_ASSERT_MSG_EQ (txUeRrcPdus, rxEnbRrcPdus + m_ulDrops, |
2c548c6c7ba3
Fix variables for dropped packets
Manuel Requena <manuel.requena@cttc.es>
parents:
8620
diff
changeset
|
222 |
"Uplink: TX PDUs (" << txUeRrcPdus << ") != RX PDUs (" << rxEnbRrcPdus << ") + DROPS (" << m_ulDrops << ")"); |
8620
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
223 |
|
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
224 |
Simulator::Destroy (); |
e69cc67f3056
Add new tests for RLC UM
Manuel Requena <manuel.requena@cttc.es>
parents:
diff
changeset
|
225 |
} |
8822
49d3a0979d43
fixed Bug 1439 - exclude headers for tests from installation
Nicola Baldo <nbaldo@cttc.es>
parents:
8749
diff
changeset
|
226 |
|
49d3a0979d43
fixed Bug 1439 - exclude headers for tests from installation
Nicola Baldo <nbaldo@cttc.es>
parents:
8749
diff
changeset
|
227 |
} // namespace ns3 |
49d3a0979d43
fixed Bug 1439 - exclude headers for tests from installation
Nicola Baldo <nbaldo@cttc.es>
parents:
8749
diff
changeset
|
228 |