|
|
| 36 |
* |
36 |
* |
| 37 |
* |
37 |
* |
| 38 |
* \param nUes number of UEs in the test |
38 |
* \param nUes number of UEs in the test |
| 39 |
* \param tc connection time base value for all UEs in ms |
39 |
* \param nBearers number of bearers to be setup in each connection |
|
|
40 |
* \param tConnBase connection time base value for all UEs in ms |
| 40 |
* \param tConnIncrPerUe additional connection time increment for each UE index (0...nUes-1) in ms |
41 |
* \param tConnIncrPerUe additional connection time increment for each UE index (0...nUes-1) in ms |
| 41 |
* \param delayDiscStart expected duration to perform connection establishment in ms |
42 |
* \param delayDiscStart expected duration to perform connection establishment in ms |
| 42 |
* |
43 |
* \param ueDistance distance of the UEs to the serving eNodeB, relative to |
|
|
44 |
* the diagonal of the rectangular grid |
| 45 |
* \param useIdealRrc If set to false, real RRC protocol model will be used |
| 46 |
* \param admitRrcConnectionRequest If set to false, eNb will not allow UE connections |
| 47 |
* \param rngRun run number for random number generator |
| 48 |
* \param description additional description of the test case |
| 43 |
*/ |
49 |
*/ |
| 44 |
LteRrcConnectionEstablishmentTestCase (uint32_t nUes, uint32_t nBearers, uint32_t tc, uint32_t tConnIncrPerUe, uint32_t delayDiscStart, bool useIdealRrc, bool admitRrcConnectionRequest); |
50 |
LteRrcConnectionEstablishmentTestCase (uint32_t nUes, |
|
|
51 |
uint32_t nBearers, |
| 52 |
uint32_t tConnBase, |
| 53 |
uint32_t tConnIncrPerUe, |
| 54 |
uint32_t delayDiscStart, |
| 55 |
double ueDistance, |
| 56 |
bool useIdealRrc, |
| 57 |
bool admitRrcConnectionRequest, |
| 58 |
int64_t rngRun = 1, |
| 59 |
std::string description = ""); |
| 45 |
|
60 |
|
| 46 |
private: |
61 |
private: |
| 47 |
static std::string BuildNameString (uint32_t nUes, uint32_t nBearers, uint32_t tc, uint32_t tConnIncrPerUe, uint32_t delayDiscStart, bool useIdealRrc, bool admitRrcConnectionRequest); |
62 |
static std::string BuildNameString (uint32_t nUes, |
|
|
63 |
uint32_t nBearers, |
| 64 |
uint32_t tConnBase, |
| 65 |
uint32_t tConnIncrPerUe, |
| 66 |
uint32_t delayDiscStart, |
| 67 |
double ueDistance, |
| 68 |
bool useIdealRrc, |
| 69 |
bool admitRrcConnectionRequest, |
| 70 |
int64_t rngRun = 1, |
| 71 |
std::string description = ""); |
| 48 |
virtual void DoRun (void); |
72 |
virtual void DoRun (void); |
| 49 |
void Connect (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice); |
73 |
void Connect (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice); |
| 50 |
void CheckConnected (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice); |
74 |
void CheckConnected (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice); |
|
|
75 |
void ConnectionEstablishedCallback (std::string context, uint64_t imsi, |
| 76 |
uint16_t cellId, uint16_t rnti); |
| 77 |
void ConnectionTimeoutCallback (std::string context, uint64_t imsi, |
| 78 |
uint16_t cellId, uint16_t rnti); |
| 51 |
|
79 |
|
| 52 |
|
80 |
|
| 53 |
uint32_t m_nUes; // number of UEs in the test |
81 |
uint32_t m_nUes; // number of UEs in the test |
| 54 |
uint32_t m_nBearers; // number of UEs in the test |
82 |
uint32_t m_nBearers; // number of bearers to be setup in each connection |
| 55 |
uint32_t m_tConnBase; // connection time base value for all UEs in ms |
83 |
uint32_t m_tConnBase; // connection time base value for all UEs in ms |
| 56 |
uint32_t m_tConnIncrPerUe; // additional connection time increment for each UE index (0...nUes-1) in ms |
84 |
uint32_t m_tConnIncrPerUe; // additional connection time increment for each UE index (0...nUes-1) in ms |
| 57 |
uint32_t m_delayConnEnd; // expected duration to perform connection establishment in ms |
85 |
uint32_t m_delayConnEnd; // expected duration to perform connection establishment in ms |
| 58 |
uint32_t m_delayDiscStart; // delay between connection completed and disconnection request in ms |
86 |
uint32_t m_delayDiscStart; // delay between connection completed and disconnection request in ms |
| 59 |
uint32_t m_delayDiscEnd; // expected duration to complete disconnection in ms |
87 |
uint32_t m_delayDiscEnd; // expected duration to complete disconnection in ms |
| 60 |
bool m_useIdealRrc; |
88 |
double m_ueDistance; // relative distance of the UEs to the serving eNodeB |
| 61 |
bool m_admitRrcConnectionRequest; // If set to false, eNb will not allow ue connections |
89 |
bool m_useIdealRrc; // If set to false, real RRC protocol model will be used |
|
|
90 |
bool m_admitRrcConnectionRequest; // If set to false, eNb will not allow UE connections |
| 91 |
int64_t m_rngRun; // run number for random number generator |
| 62 |
Ptr<LteHelper> m_lteHelper; |
92 |
Ptr<LteHelper> m_lteHelper; |
| 63 |
|
93 |
|
|
|
94 |
// key: IMSI |
| 95 |
std::map<uint64_t, bool> m_isConnectionEstablished; |
| 64 |
}; |
96 |
}; |
| 65 |
|
97 |
|
| 66 |
|
98 |
|
| 67 |
std::string LteRrcConnectionEstablishmentTestCase::BuildNameString (uint32_t nUes, uint32_t nBearers, uint32_t tConnBase, uint32_t tConnIncrPerUe, uint32_t delayDiscStart, bool useIdealRrc, bool admitRrcConnectionRequest) |
99 |
std::string |
|
|
100 |
LteRrcConnectionEstablishmentTestCase::BuildNameString (uint32_t nUes, |
| 101 |
uint32_t nBearers, |
| 102 |
uint32_t tConnBase, |
| 103 |
uint32_t tConnIncrPerUe, |
| 104 |
uint32_t delayDiscStart, |
| 105 |
double ueDistance, |
| 106 |
bool useIdealRrc, |
| 107 |
bool admitRrcConnectionRequest, |
| 108 |
int64_t rngRun, |
| 109 |
std::string description) |
| 68 |
{ |
110 |
{ |
| 69 |
std::ostringstream oss; |
111 |
std::ostringstream oss; |
| 70 |
oss << "nUes=" << nUes |
112 |
oss << "nUes=" << nUes |
| 71 |
<< ", nBearers=" << nBearers |
113 |
<< ", nBearers=" << nBearers |
| 72 |
<< ", tConnBase=" << tConnBase |
114 |
<< ", tConnBase=" << tConnBase |
| 73 |
<< ", tConnIncrPerUe=" << tConnIncrPerUe |
115 |
<< ", tConnIncrPerUe=" << tConnIncrPerUe |
| 74 |
<< ", delayDiscStart=" << delayDiscStart; |
116 |
<< ", delayDiscStart=" << delayDiscStart |
|
|
117 |
<< ", ueDistance=" << ueDistance; |
| 118 |
|
| 75 |
if (useIdealRrc) |
119 |
if (useIdealRrc) |
| 76 |
{ |
120 |
{ |
| 77 |
oss << ", ideal RRC"; |
121 |
oss << ", ideal RRC"; |
|
|
| 80 |
{ |
124 |
{ |
| 81 |
oss << ", real RRC"; |
125 |
oss << ", real RRC"; |
| 82 |
} |
126 |
} |
|
|
127 |
|
| 83 |
if (admitRrcConnectionRequest) |
128 |
if (admitRrcConnectionRequest) |
| 84 |
{ |
129 |
{ |
| 85 |
oss << ", admitRrcConnectionRequest = true"; |
130 |
oss << ", admitRrcConnectionRequest = true"; |
|
|
| 88 |
{ |
133 |
{ |
| 89 |
oss << ", admitRrcConnectionRequest = false"; |
134 |
oss << ", admitRrcConnectionRequest = false"; |
| 90 |
} |
135 |
} |
|
|
136 |
|
| 137 |
if (rngRun != 1) |
| 138 |
{ |
| 139 |
oss << ", rngRun=" << rngRun; |
| 140 |
} |
| 141 |
|
| 142 |
if (!description.empty ()) |
| 143 |
{ |
| 144 |
oss << ", " << description; |
| 145 |
} |
| 146 |
|
| 91 |
return oss.str (); |
147 |
return oss.str (); |
| 92 |
} |
148 |
} |
| 93 |
|
149 |
|
| 94 |
LteRrcConnectionEstablishmentTestCase::LteRrcConnectionEstablishmentTestCase (uint32_t nUes, uint32_t nBearers, uint32_t tConnBase, uint32_t tConnIncrPerUe, uint32_t delayDiscStart, bool useIdealRrc, bool admitRrcConnectionRequest) |
150 |
LteRrcConnectionEstablishmentTestCase::LteRrcConnectionEstablishmentTestCase ( |
| 95 |
: TestCase (BuildNameString (nUes, nBearers, tConnBase, tConnIncrPerUe, delayDiscStart, useIdealRrc, admitRrcConnectionRequest)), |
151 |
uint32_t nUes, uint32_t nBearers, |
|
|
152 |
uint32_t tConnBase, uint32_t tConnIncrPerUe, |
| 153 |
uint32_t delayDiscStart, double ueDistance, |
| 154 |
bool useIdealRrc, bool admitRrcConnectionRequest, |
| 155 |
int64_t rngRun, std::string description) |
| 156 |
: TestCase (BuildNameString (nUes, nBearers, |
| 157 |
tConnBase, tConnIncrPerUe, |
| 158 |
delayDiscStart, ueDistance, |
| 159 |
useIdealRrc, admitRrcConnectionRequest, |
| 160 |
rngRun, description)), |
| 96 |
m_nUes (nUes), |
161 |
m_nUes (nUes), |
| 97 |
m_nBearers (nBearers), |
162 |
m_nBearers (nBearers), |
| 98 |
m_tConnBase (tConnBase), |
163 |
m_tConnBase (tConnBase), |
|
|
| 100 |
|
165 |
|
| 101 |
m_delayDiscStart (delayDiscStart), |
166 |
m_delayDiscStart (delayDiscStart), |
| 102 |
m_delayDiscEnd (10), |
167 |
m_delayDiscEnd (10), |
|
|
168 |
m_ueDistance (ueDistance), |
| 103 |
m_useIdealRrc (useIdealRrc), |
169 |
m_useIdealRrc (useIdealRrc), |
| 104 |
m_admitRrcConnectionRequest (admitRrcConnectionRequest) |
170 |
m_admitRrcConnectionRequest (admitRrcConnectionRequest), |
|
|
171 |
m_rngRun (rngRun) |
| 105 |
{ |
172 |
{ |
| 106 |
// see the description of d^e in the LTE testing docs |
173 |
// see the description of d^e in the LTE testing docs |
| 107 |
double dsi = 90; |
174 |
double dsi = 90; |
|
|
| 110 |
{ |
177 |
{ |
| 111 |
nRaAttempts += 5; |
178 |
nRaAttempts += 5; |
| 112 |
} |
179 |
} |
|
|
180 |
else if (nUes <= 50) |
| 181 |
{ |
| 182 |
nRaAttempts += 10; |
| 183 |
} |
| 184 |
else if (nUes <= 100) |
| 185 |
{ |
| 186 |
nRaAttempts += 20; |
| 187 |
} |
| 113 |
else |
188 |
else |
| 114 |
{ |
189 |
{ |
| 115 |
NS_ASSERT (nUes <= 50); |
190 |
NS_ASSERT (nUes <= 200); |
| 116 |
nRaAttempts += 10; |
191 |
nRaAttempts += 40; |
| 117 |
} |
192 |
} |
|
|
193 |
|
| 118 |
nRaAttempts += std::ceil (nUes / 4.0); |
194 |
nRaAttempts += std::ceil (nUes / 4.0); |
| 119 |
double dra = nRaAttempts * 7; |
195 |
double dra = nRaAttempts * 7; |
| 120 |
double dce = 10.0 + (2.0 * nUes) / 4.0; |
196 |
double dce = 10.0 + (2.0 * nUes) / 4.0; |
|
|
197 |
if (ueDistance > 0.2) |
| 198 |
{ |
| 199 |
/* |
| 200 |
* Interference may affect the probability of successful connection |
| 201 |
* setup. If it fails, the UE has to repeat again from acquiring system |
| 202 |
* information. |
| 203 |
*/ |
| 204 |
dce += dsi + dce; |
| 205 |
} |
| 121 |
double nCrs; |
206 |
double nCrs; |
| 122 |
if (nUes <= 2) |
207 |
if (nUes <= 2) |
| 123 |
{ |
208 |
{ |
|
|
| 142 |
double dcr = (10.0 + (2.0 * nUes) / 4.0) * (m_nBearers + nCrs); |
227 |
double dcr = (10.0 + (2.0 * nUes) / 4.0) * (m_nBearers + nCrs); |
| 143 |
|
228 |
|
| 144 |
m_delayConnEnd = round (dsi + dra + dce + dcr); |
229 |
m_delayConnEnd = round (dsi + dra + dce + dcr); |
| 145 |
NS_LOG_LOGIC (this << GetName () << " dsi=" << dsi << " dra=" << dra << " dce=" << dce << " dcr=" << dcr << " m_delayConnEnd=" << m_delayConnEnd); |
230 |
NS_LOG_LOGIC (this << " " << GetName () << " dsi=" << dsi << " dra=" << dra << " dce=" << dce << " dcr=" << dcr << " m_delayConnEnd=" << m_delayConnEnd); |
| 146 |
} |
231 |
} |
| 147 |
|
232 |
|
| 148 |
void |
233 |
void |
|
|
| 150 |
{ |
235 |
{ |
| 151 |
NS_LOG_FUNCTION (this << GetName ()); |
236 |
NS_LOG_FUNCTION (this << GetName ()); |
| 152 |
Config::Reset (); |
237 |
Config::Reset (); |
|
|
238 |
Config::SetGlobal ("RngRun", IntegerValue (m_rngRun)); |
| 153 |
|
239 |
|
| 154 |
if (m_nUes < 25) |
240 |
if (m_nUes < 25) |
| 155 |
{ |
241 |
{ |
|
|
| 173 |
m_lteHelper->SetAttribute ("UseIdealRrc", BooleanValue (m_useIdealRrc)); |
259 |
m_lteHelper->SetAttribute ("UseIdealRrc", BooleanValue (m_useIdealRrc)); |
| 174 |
|
260 |
|
| 175 |
NodeContainer enbNodes; |
261 |
NodeContainer enbNodes; |
| 176 |
enbNodes.Create (1); |
262 |
enbNodes.Create (4); |
| 177 |
NodeContainer ueNodes; |
263 |
NodeContainer ueNodes; |
| 178 |
ueNodes.Create (m_nUes); |
264 |
ueNodes.Create (m_nUes); |
| 179 |
|
265 |
|
|
|
266 |
// Assign nodes to position |
| 267 |
Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> (); |
| 268 |
positionAlloc->Add (Vector (0, 0, 0)); |
| 269 |
positionAlloc->Add (Vector (100.0, 0, 0)); |
| 270 |
positionAlloc->Add (Vector (0, 100.0, 0)); |
| 271 |
positionAlloc->Add (Vector (100.0, 100.0, 0)); |
| 272 |
for (uint16_t i = 0; i < m_nUes; i++) |
| 273 |
{ |
| 274 |
positionAlloc->Add (Vector (m_ueDistance * 100.0, |
| 275 |
m_ueDistance * 100.0, |
| 276 |
0.0)); |
| 277 |
} |
| 278 |
|
| 180 |
MobilityHelper mobility; |
279 |
MobilityHelper mobility; |
| 181 |
mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); |
280 |
mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); |
|
|
281 |
mobility.SetPositionAllocator (positionAlloc); |
| 182 |
mobility.Install (enbNodes); |
282 |
mobility.Install (enbNodes); |
| 183 |
mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); |
|
|
| 184 |
mobility.Install (ueNodes); |
283 |
mobility.Install (ueNodes); |
| 185 |
|
284 |
|
|
|
285 |
int64_t stream = 1; |
| 186 |
NetDeviceContainer enbDevs; |
286 |
NetDeviceContainer enbDevs; |
| 187 |
enbDevs = m_lteHelper->InstallEnbDevice (enbNodes); |
287 |
enbDevs = m_lteHelper->InstallEnbDevice (enbNodes); |
|
|
288 |
stream += m_lteHelper->AssignStreams (enbDevs, stream); |
| 188 |
|
289 |
|
| 189 |
NetDeviceContainer ueDevs; |
290 |
NetDeviceContainer ueDevs; |
| 190 |
ueDevs = m_lteHelper->InstallUeDevice (ueNodes); |
291 |
ueDevs = m_lteHelper->InstallUeDevice (ueNodes); |
|
|
292 |
stream += m_lteHelper->AssignStreams (ueDevs, stream); |
| 191 |
|
293 |
|
| 192 |
// custom code used for testing purposes |
294 |
// custom code used for testing purposes |
| 193 |
// instead of lteHelper->Attach () and lteHelper->ActivateXxx |
295 |
// instead of lteHelper->Attach () and lteHelper->ActivateXxx |
|
|
| 225 |
|
327 |
|
| 226 |
// disconnection not supported yet |
328 |
// disconnection not supported yet |
| 227 |
|
329 |
|
|
|
330 |
uint64_t imsi = ueLteDevice->GetImsi (); |
| 331 |
m_isConnectionEstablished[imsi] = false; |
| 332 |
|
| 228 |
++i; |
333 |
++i; |
| 229 |
} |
334 |
} |
| 230 |
|
335 |
|
|
|
336 |
// Connect to trace sources in UEs |
| 337 |
Config::Connect ("/NodeList/*/DeviceList/*/LteUeRrc/ConnectionEstablished", |
| 338 |
MakeCallback (&LteRrcConnectionEstablishmentTestCase::ConnectionEstablishedCallback, |
| 339 |
this)); |
| 340 |
Config::Connect ("/NodeList/*/DeviceList/*/LteUeRrc/ConnectionTimeout", |
| 341 |
MakeCallback (&LteRrcConnectionEstablishmentTestCase::ConnectionTimeoutCallback, |
| 342 |
this)); |
| 231 |
|
343 |
|
| 232 |
Simulator::Stop (MilliSeconds (tmax + 1)); |
344 |
Simulator::Stop (MilliSeconds (tmax + 1)); |
| 233 |
|
345 |
|
|
|
| 240 |
void |
352 |
void |
| 241 |
LteRrcConnectionEstablishmentTestCase::Connect (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice) |
353 |
LteRrcConnectionEstablishmentTestCase::Connect (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice) |
| 242 |
{ |
354 |
{ |
|
|
355 |
NS_LOG_FUNCTION (this); |
| 243 |
m_lteHelper->Attach (ueDevice, enbDevice); |
356 |
m_lteHelper->Attach (ueDevice, enbDevice); |
| 244 |
|
357 |
|
| 245 |
for (uint32_t b = 0; b < m_nBearers; ++b) |
358 |
for (uint32_t b = 0; b < m_nBearers; ++b) |
|
|
| 249 |
m_lteHelper->ActivateDataRadioBearer (ueDevice, bearer); |
362 |
m_lteHelper->ActivateDataRadioBearer (ueDevice, bearer); |
| 250 |
} |
363 |
} |
| 251 |
} |
364 |
} |
|
|
365 |
|
| 252 |
void |
366 |
void |
| 253 |
LteRrcConnectionEstablishmentTestCase::CheckConnected (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice) |
367 |
LteRrcConnectionEstablishmentTestCase::CheckConnected (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice) |
| 254 |
{ |
368 |
{ |
| 255 |
Ptr<LteUeNetDevice> ueLteDevice = ueDevice->GetObject<LteUeNetDevice> (); |
369 |
Ptr<LteUeNetDevice> ueLteDevice = ueDevice->GetObject<LteUeNetDevice> (); |
| 256 |
Ptr<LteUeRrc> ueRrc = ueLteDevice->GetRrc (); |
370 |
Ptr<LteUeRrc> ueRrc = ueLteDevice->GetRrc (); |
|
|
371 |
const uint64_t imsi = ueLteDevice->GetImsi (); |
| 372 |
const uint16_t rnti = ueRrc->GetRnti (); |
| 373 |
NS_LOG_FUNCTION (this << imsi << rnti); |
| 374 |
NS_ASSERT_MSG (m_isConnectionEstablished.find (imsi) != m_isConnectionEstablished.end (), |
| 375 |
"Invalid IMSI " << imsi); |
| 257 |
|
376 |
|
| 258 |
if (!m_admitRrcConnectionRequest) |
377 |
if (!m_admitRrcConnectionRequest) |
| 259 |
{ |
378 |
{ |
| 260 |
NS_TEST_ASSERT_MSG_EQ (ueRrc->GetState (), LteUeRrc::IDLE_CAMPED_NORMALLY, "Wrong LteUeRrc state!"); |
379 |
NS_TEST_ASSERT_MSG_EQ (m_isConnectionEstablished[imsi], false, |
|
|
380 |
"Connection with RNTI " << rnti << " should have been rejected"); |
| 261 |
return; |
381 |
return; |
| 262 |
} |
382 |
} |
| 263 |
|
383 |
|
| 264 |
NS_TEST_ASSERT_MSG_EQ (ueRrc->GetState (), LteUeRrc::CONNECTED_NORMALLY, "Wrong LteUeRrc state!"); |
384 |
/* |
|
|
385 |
* Verifying UE state in UE RRC. Try to increase the test case duration if |
| 386 |
* the following checks. |
| 387 |
*/ |
| 388 |
NS_TEST_ASSERT_MSG_EQ (m_isConnectionEstablished[imsi], true, |
| 389 |
"RNTI " << rnti << " fails to establish connection"); |
| 390 |
NS_TEST_ASSERT_MSG_EQ (ueRrc->GetState (), LteUeRrc::CONNECTED_NORMALLY, |
| 391 |
"RNTI " << rnti << " is not at CONNECTED_NORMALLY state"); |
| 392 |
|
| 393 |
// Verifying UE context state in eNodeB RRC. |
| 265 |
|
394 |
|
| 266 |
Ptr<LteEnbNetDevice> enbLteDevice = enbDevice->GetObject<LteEnbNetDevice> (); |
395 |
Ptr<LteEnbNetDevice> enbLteDevice = enbDevice->GetObject<LteEnbNetDevice> (); |
| 267 |
Ptr<LteEnbRrc> enbRrc = enbLteDevice->GetRrc (); |
396 |
Ptr<LteEnbRrc> enbRrc = enbLteDevice->GetRrc (); |
| 268 |
uint16_t rnti = ueRrc->GetRnti (); |
397 |
const bool hasContext = enbRrc->HasUeManager (rnti); |
| 269 |
Ptr<UeManager> ueManager = enbRrc->GetUeManager (rnti); |
|
|
| 270 |
NS_TEST_ASSERT_MSG_NE (ueManager, 0, "RNTI " << rnti << " not found in eNB"); |
| 271 |
|
398 |
|
| 272 |
NS_TEST_ASSERT_MSG_EQ (ueManager->GetState (), UeManager::CONNECTED_NORMALLY, "Wrong UeManager state!"); |
399 |
if (hasContext) |
|
|
400 |
{ |
| 401 |
Ptr<UeManager> ueManager = enbRrc->GetUeManager (rnti); |
| 402 |
NS_ASSERT (ueManager != 0); |
| 403 |
UeManager::State state = ueManager->GetState (); |
| 404 |
/* |
| 405 |
* At the moment, failure in RRC Connection Reconfiguration is outside |
| 406 |
* the scope of this test case, so we simply accept them as a valid case. |
| 407 |
*/ |
| 408 |
bool isValidState = (state == UeManager::CONNECTED_NORMALLY) |
| 409 |
|| (state == UeManager::CONNECTION_RECONFIGURATION); |
| 410 |
NS_TEST_ASSERT_MSG_EQ (isValidState, true, |
| 411 |
"The context of RNTI " << rnti << " is in invalid state"); |
| 412 |
} |
| 413 |
else |
| 414 |
{ |
| 415 |
NS_LOG_WARN (this << " RNTI " << rnti << " thinks that it has" |
| 416 |
<< " established connection but the eNodeB thinks" |
| 417 |
<< " that the UE has failed on connection setup."); |
| 418 |
/* |
| 419 |
* The standard specifies that this case would the maximum retransmission |
| 420 |
* limit at UE RLC (SRB1), which will trigger an RLF. However, this |
| 421 |
* behaviour is not implemented yet. |
| 422 |
*/ |
| 423 |
} |
| 424 |
|
| 425 |
// Verifying other attributes on both sides. |
| 273 |
|
426 |
|
| 274 |
uint16_t ueCellId = ueRrc->GetCellId (); |
427 |
uint16_t ueCellId = ueRrc->GetCellId (); |
| 275 |
uint16_t enbCellId = enbLteDevice->GetCellId (); |
428 |
uint16_t enbCellId = enbLteDevice->GetCellId (); |
| 276 |
uint16_t ueImsi = ueLteDevice->GetImsi (); |
429 |
uint16_t ueImsi = ueLteDevice->GetImsi (); |
| 277 |
uint16_t enbImsi = ueManager->GetImsi (); |
430 |
|
| 278 |
uint8_t ueDlBandwidth = ueRrc->GetDlBandwidth (); |
431 |
uint8_t ueDlBandwidth = ueRrc->GetDlBandwidth (); |
| 279 |
uint8_t enbDlBandwidth = enbLteDevice->GetDlBandwidth (); |
432 |
uint8_t enbDlBandwidth = enbLteDevice->GetDlBandwidth (); |
| 280 |
uint8_t ueUlBandwidth = ueRrc->GetUlBandwidth (); |
433 |
uint8_t ueUlBandwidth = ueRrc->GetUlBandwidth (); |
|
|
| 284 |
uint8_t ueUlEarfcn = ueRrc->GetUlEarfcn (); |
437 |
uint8_t ueUlEarfcn = ueRrc->GetUlEarfcn (); |
| 285 |
uint8_t enbUlEarfcn = enbLteDevice->GetUlEarfcn (); |
438 |
uint8_t enbUlEarfcn = enbLteDevice->GetUlEarfcn (); |
| 286 |
|
439 |
|
| 287 |
|
|
|
| 288 |
NS_TEST_ASSERT_MSG_EQ (ueCellId, enbCellId, "inconsistent CellId"); |
440 |
NS_TEST_ASSERT_MSG_EQ (ueCellId, enbCellId, "inconsistent CellId"); |
| 289 |
NS_TEST_ASSERT_MSG_EQ (ueImsi, enbImsi, "inconsistent Imsi"); |
|
|
| 290 |
NS_TEST_ASSERT_MSG_EQ (ueDlBandwidth, enbDlBandwidth, "inconsistent DlBandwidth"); |
441 |
NS_TEST_ASSERT_MSG_EQ (ueDlBandwidth, enbDlBandwidth, "inconsistent DlBandwidth"); |
| 291 |
NS_TEST_ASSERT_MSG_EQ (ueUlBandwidth, enbUlBandwidth, "inconsistent UlBandwidth"); |
442 |
NS_TEST_ASSERT_MSG_EQ (ueUlBandwidth, enbUlBandwidth, "inconsistent UlBandwidth"); |
| 292 |
NS_TEST_ASSERT_MSG_EQ (ueDlEarfcn, enbDlEarfcn, "inconsistent DlEarfcn"); |
443 |
NS_TEST_ASSERT_MSG_EQ (ueDlEarfcn, enbDlEarfcn, "inconsistent DlEarfcn"); |
| 293 |
NS_TEST_ASSERT_MSG_EQ (ueUlEarfcn, enbUlEarfcn, "inconsistent UlEarfcn"); |
444 |
NS_TEST_ASSERT_MSG_EQ (ueUlEarfcn, enbUlEarfcn, "inconsistent UlEarfcn"); |
| 294 |
|
445 |
|
| 295 |
ObjectMapValue enbDataRadioBearerMapValue; |
446 |
if (hasContext) |
| 296 |
ueManager->GetAttribute ("DataRadioBearerMap", enbDataRadioBearerMapValue); |
447 |
{ |
| 297 |
NS_TEST_ASSERT_MSG_EQ (enbDataRadioBearerMapValue.GetN (), m_nBearers, "wrong num bearers at eNB"); |
448 |
Ptr<UeManager> ueManager = enbRrc->GetUeManager (rnti); |
|
|
449 |
NS_ASSERT (ueManager != 0); |
| 450 |
UeManager::State state = ueManager->GetState (); |
| 451 |
uint16_t enbImsi = ueManager->GetImsi (); |
| 452 |
NS_TEST_ASSERT_MSG_EQ (ueImsi, enbImsi, "inconsistent Imsi"); |
| 298 |
|
453 |
|
| 299 |
ObjectMapValue ueDataRadioBearerMapValue; |
454 |
if (state == UeManager::CONNECTED_NORMALLY) |
| 300 |
ueRrc->GetAttribute ("DataRadioBearerMap", ueDataRadioBearerMapValue); |
455 |
{ |
| 301 |
NS_TEST_ASSERT_MSG_EQ (ueDataRadioBearerMapValue.GetN (), m_nBearers, "wrong num bearers at UE"); |
456 |
ObjectMapValue enbDataRadioBearerMapValue; |
|
|
457 |
ueManager->GetAttribute ("DataRadioBearerMap", enbDataRadioBearerMapValue); |
| 458 |
NS_TEST_ASSERT_MSG_EQ (enbDataRadioBearerMapValue.GetN (), m_nBearers, "wrong num bearers at eNB"); |
| 459 |
ObjectMapValue ueDataRadioBearerMapValue; |
| 460 |
ueRrc->GetAttribute ("DataRadioBearerMap", ueDataRadioBearerMapValue); |
| 461 |
NS_TEST_ASSERT_MSG_EQ (ueDataRadioBearerMapValue.GetN (), m_nBearers, "wrong num bearers at UE"); |
| 302 |
|
462 |
|
| 303 |
ObjectMapValue::Iterator enbBearerIt = enbDataRadioBearerMapValue.Begin (); |
463 |
ObjectMapValue::Iterator enbBearerIt = enbDataRadioBearerMapValue.Begin (); |
| 304 |
ObjectMapValue::Iterator ueBearerIt = ueDataRadioBearerMapValue.Begin (); |
464 |
ObjectMapValue::Iterator ueBearerIt = ueDataRadioBearerMapValue.Begin (); |
| 305 |
while (enbBearerIt != enbDataRadioBearerMapValue.End () |
465 |
while (enbBearerIt != enbDataRadioBearerMapValue.End () |
| 306 |
&& ueBearerIt != ueDataRadioBearerMapValue.End ()) |
466 |
&& ueBearerIt != ueDataRadioBearerMapValue.End ()) |
| 307 |
{ |
467 |
{ |
| 308 |
Ptr<LteDataRadioBearerInfo> enbDrbInfo = enbBearerIt->second->GetObject<LteDataRadioBearerInfo> (); |
468 |
Ptr<LteDataRadioBearerInfo> enbDrbInfo = enbBearerIt->second->GetObject<LteDataRadioBearerInfo> (); |
| 309 |
Ptr<LteDataRadioBearerInfo> ueDrbInfo = ueBearerIt->second->GetObject<LteDataRadioBearerInfo> (); |
469 |
Ptr<LteDataRadioBearerInfo> ueDrbInfo = ueBearerIt->second->GetObject<LteDataRadioBearerInfo> (); |
| 310 |
//NS_TEST_ASSERT_MSG_EQ (enbDrbInfo->m_epsBearer, ueDrbInfo->m_epsBearer, "epsBearer differs"); |
470 |
//NS_TEST_ASSERT_MSG_EQ (enbDrbInfo->m_epsBearer, ueDrbInfo->m_epsBearer, "epsBearer differs"); |
| 311 |
NS_TEST_ASSERT_MSG_EQ ((uint32_t) enbDrbInfo->m_epsBearerIdentity, (uint32_t) ueDrbInfo->m_epsBearerIdentity, "epsBearerIdentity differs"); |
471 |
NS_TEST_ASSERT_MSG_EQ ((uint32_t) enbDrbInfo->m_epsBearerIdentity, (uint32_t) ueDrbInfo->m_epsBearerIdentity, "epsBearerIdentity differs"); |
| 312 |
NS_TEST_ASSERT_MSG_EQ ((uint32_t) enbDrbInfo->m_drbIdentity, (uint32_t) ueDrbInfo->m_drbIdentity, "drbIdentity differs"); |
472 |
NS_TEST_ASSERT_MSG_EQ ((uint32_t) enbDrbInfo->m_drbIdentity, (uint32_t) ueDrbInfo->m_drbIdentity, "drbIdentity differs"); |
| 313 |
//NS_TEST_ASSERT_MSG_EQ (enbDrbInfo->m_rlcConfig, ueDrbInfo->m_rlcConfig, "rlcConfig differs"); |
473 |
//NS_TEST_ASSERT_MSG_EQ (enbDrbInfo->m_rlcConfig, ueDrbInfo->m_rlcConfig, "rlcConfig differs"); |
| 314 |
NS_TEST_ASSERT_MSG_EQ ((uint32_t) enbDrbInfo->m_logicalChannelIdentity, (uint32_t) ueDrbInfo->m_logicalChannelIdentity, "logicalChannelIdentity differs"); |
474 |
NS_TEST_ASSERT_MSG_EQ ((uint32_t) enbDrbInfo->m_logicalChannelIdentity, (uint32_t) ueDrbInfo->m_logicalChannelIdentity, "logicalChannelIdentity differs"); |
| 315 |
//NS_TEST_ASSERT_MSG_EQ (enbDrbInfo->m_logicalChannelConfig, ueDrbInfo->m_logicalChannelConfig, "logicalChannelConfig differs"); |
475 |
//NS_TEST_ASSERT_MSG_EQ (enbDrbInfo->m_logicalChannelConfig, ueDrbInfo->m_logicalChannelConfig, "logicalChannelConfig differs"); |
| 316 |
|
476 |
|
| 317 |
++enbBearerIt; |
477 |
++enbBearerIt; |
| 318 |
++ueBearerIt; |
478 |
++ueBearerIt; |
|
|
479 |
} |
| 480 |
|
| 481 |
NS_ASSERT_MSG (enbBearerIt == enbDataRadioBearerMapValue.End (), "too many bearers at eNB"); |
| 482 |
NS_ASSERT_MSG (ueBearerIt == ueDataRadioBearerMapValue.End (), "too many bearers at UE"); |
| 483 |
} |
| 319 |
} |
484 |
} |
| 320 |
NS_ASSERT_MSG (enbBearerIt == enbDataRadioBearerMapValue.End (), "too many bearers at eNB"); |
485 |
} |
| 321 |
NS_ASSERT_MSG (ueBearerIt == ueDataRadioBearerMapValue.End (), "too many bearers at UE"); |
|
|
| 322 |
|
486 |
|
|
|
487 |
void |
| 488 |
LteRrcConnectionEstablishmentTestCase::ConnectionEstablishedCallback ( |
| 489 |
std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti) |
| 490 |
{ |
| 491 |
NS_LOG_FUNCTION (this << imsi << cellId); |
| 492 |
m_isConnectionEstablished[imsi] = true; |
| 493 |
} |
| 494 |
|
| 495 |
|
| 496 |
void |
| 497 |
LteRrcConnectionEstablishmentTestCase::ConnectionTimeoutCallback ( |
| 498 |
std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti) |
| 499 |
{ |
| 500 |
NS_LOG_FUNCTION (this << imsi << cellId); |
| 323 |
} |
501 |
} |
| 324 |
|
502 |
|
| 325 |
|
503 |
|
|
|
| 334 |
LteRrcTestSuite::LteRrcTestSuite () |
512 |
LteRrcTestSuite::LteRrcTestSuite () |
| 335 |
: TestSuite ("lte-rrc", SYSTEM) |
513 |
: TestSuite ("lte-rrc", SYSTEM) |
| 336 |
{ |
514 |
{ |
|
|
515 |
// LogComponentEnableAll (LOG_PREFIX_ALL); |
| 516 |
// LogComponentEnable ("LteRrcTest", LOG_LEVEL_ALL); |
| 517 |
// LogComponentEnable ("LteEnbRrc", LOG_INFO); |
| 518 |
// LogComponentEnable ("LteUeRrc", LOG_INFO); |
| 519 |
|
| 337 |
NS_LOG_FUNCTION (this); |
520 |
NS_LOG_FUNCTION (this); |
| 338 |
|
521 |
|
| 339 |
for (uint32_t useIdealRrc = 0; useIdealRrc <= 1; ++useIdealRrc) |
522 |
for (uint32_t useIdealRrc = 0; useIdealRrc <= 1; ++useIdealRrc) |
| 340 |
{ |
523 |
{ |
| 341 |
// <----- all times in ms -----------------> |
524 |
// <----- all times in ms -----------------> |
| 342 |
// nUes, nBearers, tConnBase, tConnIncrPerUe, delayDiscStart, useIdealRrc, admitRrcConnectionRequest |
|
|
| 343 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 0, 0, 0, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 344 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 0, 100, 0, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 345 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 1, 0, 0, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 346 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 1, 100, 0, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 347 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 2, 0, 0, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 348 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 2, 100, 0, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 349 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 0, 20, 0, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 350 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 0, 20, 10, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 351 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 0, 20, 100, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 352 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 1, 20, 0, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 353 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 1, 20, 10, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 354 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 1, 20, 100, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 355 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 2, 20, 0, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 356 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 2, 20, 10, 1, useIdealRrc, true), TestCase::QUICK); |
| 357 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 2, 20, 100, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 358 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 3, 0, 20, 0, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 359 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 4, 0, 20, 0, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 360 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 4, 0, 20, 300, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 361 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 20, 0, 10, 1, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 362 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 50, 0, 0, 0, 1, useIdealRrc, true), TestCase::EXTENSIVE); |
| 363 |
|
525 |
|
| 364 |
//Test cases to check admitRrcConnectionRequest=false |
526 |
// Test cases with high interference |
| 365 |
// nUes, nBearers, tConnBase, tConnIncrPerUe, delayDiscStart, useIdealRrc, admitRrcConnectionRequest |
527 |
// nBearers tConnIncrPerUe ueDistance |
| 366 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 0, 0, 0, 1, useIdealRrc, false), TestCase::EXTENSIVE); |
528 |
// nUes tConnBase delayDiscStart useIdealRrc admitRrcConnectionRequest |
| 367 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 2, 100, 0, 1, useIdealRrc, false), TestCase::EXTENSIVE); |
529 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 1, 0, 0, 1, 0.55, useIdealRrc, true, |
| 368 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 0, 20, 0, 1, useIdealRrc, false), TestCase::EXTENSIVE); |
530 |
1, "failure at RRC Connection Setup, then successful"), TestCase::QUICK); |
| 369 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 1, 20, 0, 1, useIdealRrc, false), TestCase::QUICK); |
531 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 1, 0, 0, 1, 0.55, useIdealRrc, true, |
| 370 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 3, 0, 20, 0, 1, useIdealRrc, false), TestCase::EXTENSIVE); |
532 |
3, "failure at RRC Connection Setup Complete"), TestCase::QUICK); |
|
|
533 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 1, 0, 0, 1, 0.55, useIdealRrc, true, |
| 534 |
5, "failure at RRC Connection Reconfiguration"), TestCase::QUICK); |
| 535 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 1, 0, 0, 1, 0.55, useIdealRrc, true, |
| 536 |
7, "successful case"), TestCase::QUICK); |
| 371 |
|
537 |
|
| 372 |
//time consuming tests with a lot of UEs |
538 |
// Test cases with minimal interference |
| 373 |
// AddTestCase (new LteRrcConnectionEstablishmentTestCase (100, 0, 10, 0, 1, useIdealRrc, true), TestCase::TAKES_FOREVER); |
539 |
// nBearers tConnIncrPerUe ueDistance |
| 374 |
// AddTestCase (new LteRrcConnectionEstablishmentTestCase (100, 0, 10, 1, 1, useIdealRrc, true), TestCase::TAKES_FOREVER); |
540 |
// nUes tConnBase delayDiscStart useIdealRrc admitRrcConnectionRequest |
| 375 |
// AddTestCase (new LteRrcConnectionEstablishmentTestCase (200, 0, 10, 0, 1, useIdealRrc, true), TestCase::TAKES_FOREVER); |
541 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 0, 0, 0, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 376 |
// AddTestCase (new LteRrcConnectionEstablishmentTestCase (200, 0, 10, 1, 1, useIdealRrc, true), TestCase::TAKES_FOREVER); |
542 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 0, 100, 0, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
|
|
543 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 1, 0, 0, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 544 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 1, 100, 0, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 545 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 2, 0, 0, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 546 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 2, 100, 0, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 547 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 0, 20, 0, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 548 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 0, 20, 10, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 549 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 0, 20, 100, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 550 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 1, 20, 0, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 551 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 1, 20, 10, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 552 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 1, 20, 100, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 553 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 2, 20, 0, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 554 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 2, 20, 10, 1, 0.0, useIdealRrc, true), TestCase::QUICK); |
| 555 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 2, 20, 100, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 556 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 3, 0, 20, 0, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 557 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 4, 0, 20, 0, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 558 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 4, 0, 20, 300, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 559 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 20, 0, 10, 1, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 560 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 50, 0, 0, 0, 1, 0.0, useIdealRrc, true), TestCase::EXTENSIVE); |
| 561 |
|
| 562 |
// Test cases to check admitRrcConnectionRequest=false |
| 563 |
// nBearers tConnIncrPerUe ueDistance |
| 564 |
// nUes tConnBase delayDiscStart useIdealRrc admitRrcConnectionRequest |
| 565 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 0, 0, 0, 1, 0.0, useIdealRrc, false), TestCase::EXTENSIVE); |
| 566 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 2, 100, 0, 1, 0.0, useIdealRrc, false), TestCase::EXTENSIVE); |
| 567 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 0, 20, 0, 1, 0.0, useIdealRrc, false), TestCase::EXTENSIVE); |
| 568 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 1, 20, 0, 1, 0.0, useIdealRrc, false), TestCase::QUICK); |
| 569 |
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 3, 0, 20, 0, 1, 0.0, useIdealRrc, false), TestCase::EXTENSIVE); |
| 570 |
|
| 571 |
// Time consuming tests with a lot of UEs |
| 572 |
// nBearers tConnIncrPerUe ueDistance |
| 573 |
// nUes tConnBase delayDiscStart useIdealRrc admitRrcConnectionRequest |
| 574 |
//AddTestCase (new LteRrcConnectionEstablishmentTestCase (100, 0, 10, 0, 1, 0.0, useIdealRrc, true), TestCase::TAKES_FOREVER); |
| 575 |
//AddTestCase (new LteRrcConnectionEstablishmentTestCase (100, 0, 10, 1, 1, 0.0, useIdealRrc, true), TestCase::TAKES_FOREVER); |
| 576 |
//AddTestCase (new LteRrcConnectionEstablishmentTestCase (200, 0, 10, 0, 1, 0.0, useIdealRrc, true), TestCase::TAKES_FOREVER); |
| 577 |
//AddTestCase (new LteRrcConnectionEstablishmentTestCase (200, 0, 10, 1, 1, 0.0, useIdealRrc, true), TestCase::TAKES_FOREVER); |
| 377 |
} |
578 |
} |
| 378 |
} |
579 |
} |
| 379 |
|
580 |
|