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