LEFT | RIGHT |
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ | 1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
2 /* | 2 /* |
3 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) | 3 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) |
4 * | 4 * |
5 * This program is free software; you can redistribute it and/or modify | 5 * This program is free software; you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 2 as | 6 * it under the terms of the GNU General Public License version 2 as |
7 * published by the Free Software Foundation; | 7 * published by the Free Software Foundation; |
8 * | 8 * |
9 * This program is distributed in the hope that it will be useful, | 9 * This program is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 dist3.push_back (6000); // User 2 distance --> MCS 20 | 218 dist3.push_back (6000); // User 2 distance --> MCS 20 |
219 std::vector<uint16_t> packetSize3; | 219 std::vector<uint16_t> packetSize3; |
220 packetSize3.push_back (100); | 220 packetSize3.push_back (100); |
221 packetSize3.push_back (200); | 221 packetSize3.push_back (200); |
222 packetSize3.push_back (300); | 222 packetSize3.push_back (300); |
223 std::vector<uint32_t> estThrPssDl3; | 223 std::vector<uint32_t> estThrPssDl3; |
224 estThrPssDl3.push_back (132000); // User 0 estimated TTI throughput from PSS | 224 estThrPssDl3.push_back (132000); // User 0 estimated TTI throughput from PSS |
225 estThrPssDl3.push_back (232000); // User 1 estimated TTI throughput from PSS | 225 estThrPssDl3.push_back (232000); // User 1 estimated TTI throughput from PSS |
226 estThrPssDl3.push_back (332000); // User 2 estimated TTI throughput from PSS | 226 estThrPssDl3.push_back (332000); // User 2 estimated TTI throughput from PSS |
227 AddTestCase (new LenaPssFfMacSchedulerTestCase2 (dist3,estThrPssDl3,packetSize
3,1,errorModel), TestCase::QUICK); | 227 AddTestCase (new LenaPssFfMacSchedulerTestCase2 (dist3,estThrPssDl3,packetSize
3,1,errorModel), TestCase::QUICK); |
| 228 |
228 } | 229 } |
229 | 230 |
230 static LenaTestPssFfMacSchedulerSuite lenaTestPssFfMacSchedulerSuite; | 231 static LenaTestPssFfMacSchedulerSuite lenaTestPssFfMacSchedulerSuite; |
231 | 232 |
232 // --------------- T E S T - C A S E # 1 ------------------------------ | 233 // --------------- T E S T - C A S E # 1 ------------------------------ |
233 | 234 |
234 | 235 |
235 std::string· | 236 std::string· |
236 LenaPssFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, double dist) | 237 LenaPssFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, double dist) |
237 { | 238 { |
(...skipping 29 matching lines...) Expand all Loading... |
267 Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanV
alue (false)); | 268 Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanV
alue (false)); |
268 Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanV
alue (false)); | 269 Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanV
alue (false)); |
269 } | 270 } |
270 | 271 |
271 Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true)); | 272 Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true)); |
272 | 273 |
273 Ptr<LteHelper> lteHelper = CreateObject<LteHelper> (); | 274 Ptr<LteHelper> lteHelper = CreateObject<LteHelper> (); |
274 Ptr<PointToPointEpcHelper> epcHelper = CreateObject<PointToPointEpcHelper> ()
; | 275 Ptr<PointToPointEpcHelper> epcHelper = CreateObject<PointToPointEpcHelper> ()
; |
275 lteHelper->SetEpcHelper (epcHelper); | 276 lteHelper->SetEpcHelper (epcHelper); |
276 | 277 |
277 #if 0 | 278 //LogComponentEnable ("PssFfMacScheduler", LOG_DEBUG); |
278 LogComponentEnable ("PssFfMacScheduler", LOG_DEBUG); | |
279 #endif | |
280 | 279 |
281 Ptr<Node> pgw = epcHelper->GetPgwNode (); | 280 Ptr<Node> pgw = epcHelper->GetPgwNode (); |
282 | 281 |
283 // Create a single RemoteHost | 282 // Create a single RemoteHost |
284 NodeContainer remoteHostContainer; | 283 NodeContainer remoteHostContainer; |
285 remoteHostContainer.Create (1); | 284 remoteHostContainer.Create (1); |
286 Ptr<Node> remoteHost = remoteHostContainer.Get (0); | 285 Ptr<Node> remoteHost = remoteHostContainer.Get (0); |
287 InternetStackHelper internet; | 286 InternetStackHelper internet; |
288 internet.Install (remoteHostContainer); | 287 internet.Install (remoteHostContainer); |
289 | 288 |
(...skipping 13 matching lines...) Expand all Loading... |
303 Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRo
uting (remoteHost->GetObject<Ipv4> ()); | 302 Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRo
uting (remoteHost->GetObject<Ipv4> ()); |
304 remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask
("255.0.0.0"), 1); | 303 remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask
("255.0.0.0"), 1); |
305 | 304 |
306 //Config::SetDefault ("ns3::LteAmc::AmcModel", EnumValue (LteAmc::PiroEW2010))
; | 305 //Config::SetDefault ("ns3::LteAmc::AmcModel", EnumValue (LteAmc::PiroEW2010))
; |
307 //Config::SetDefault ("ns3::LteAmc::Ber", DoubleValue (0.00005)); | 306 //Config::SetDefault ("ns3::LteAmc::Ber", DoubleValue (0.00005)); |
308 //Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanVal
ue (false)); | 307 //Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanVal
ue (false)); |
309 //Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanVal
ue (false)); | 308 //Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanVal
ue (false)); |
310 | 309 |
311 //Config::SetDefault ("ns3::LteEnbRrc::EpsBearerToRlcMapping", EnumValue (LteH
elper::RLC_UM_ALWAYS)); | 310 //Config::SetDefault ("ns3::LteEnbRrc::EpsBearerToRlcMapping", EnumValue (LteH
elper::RLC_UM_ALWAYS)); |
312 | 311 |
313 #if 0 | 312 // LogComponentDisableAll (LOG_LEVEL_ALL); |
314 LogComponentDisableAll (LOG_LEVEL_ALL); | 313 //LogComponentEnable ("LenaTestPssFfMacScheduler", LOG_LEVEL_ALL); |
315 LogComponentEnable ("LenaTestPssFfMacScheduler", LOG_LEVEL_ALL); | 314 |
316 #endif | |
317 | |
318 lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumProp
agationLossModel")); | 315 lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumProp
agationLossModel")); |
319 | 316 |
320 // Create Nodes: eNodeB and UE | 317 // Create Nodes: eNodeB and UE |
321 NodeContainer enbNodes; | 318 NodeContainer enbNodes; |
322 NodeContainer ueNodes; | 319 NodeContainer ueNodes; |
323 enbNodes.Create (1); | 320 enbNodes.Create (1); |
324 ueNodes.Create (m_nUser); | 321 ueNodes.Create (m_nUser); |
325 | 322 |
326 // Install Mobility Model | 323 // Install Mobility Model |
327 MobilityHelper mobility; | 324 MobilityHelper mobility; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 qos.mbrUl = 0; | 379 qos.mbrUl = 0; |
383 ······ | 380 ······ |
384 enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE; | 381 enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE; |
385 EpsBearer bearer (q, qos); | 382 EpsBearer bearer (q, qos); |
386 lteHelper->ActivateDedicatedEpsBearer (ueDevice, bearer, EpcTft::Default (
));·· | 383 lteHelper->ActivateDedicatedEpsBearer (ueDevice, bearer, EpcTft::Default (
));·· |
387 } | 384 } |
388 | 385 |
389 // Install downlink and uplink applications | 386 // Install downlink and uplink applications |
390 uint16_t dlPort = 1234; | 387 uint16_t dlPort = 1234; |
391 uint16_t ulPort = 2000; | 388 uint16_t ulPort = 2000; |
392 PacketSinkHelper dlPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddres
s (Ipv4Address::GetAny (), dlPort)); | |
393 PacketSinkHelper ulPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddres
s (Ipv4Address::GetAny (), ulPort)); | |
394 ApplicationContainer clientApps; | 389 ApplicationContainer clientApps; |
395 ApplicationContainer serverApps; | 390 ApplicationContainer serverApps; |
396 serverApps.Add (ulPacketSinkHelper.Install (remoteHost)); // receive packets
from UEs | 391 PacketSinkHelper dlPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddres
s (Ipv4Address::GetAny (), dlPort)); |
| 392 |
397 for (uint32_t u = 0; u < ueNodes.GetN (); ++u) | 393 for (uint32_t u = 0; u < ueNodes.GetN (); ++u) |
398 { | 394 { |
399 ++ulPort; | 395 ++ulPort; |
| 396 PacketSinkHelper ulPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAd
dress (Ipv4Address::GetAny (), ulPort)); |
| 397 serverApps.Add (ulPacketSinkHelper.Install (remoteHost)); // receive pack
ets from UEs |
400 serverApps.Add (dlPacketSinkHelper.Install (ueNodes.Get (u))); // receive
packets from remotehost | 398 serverApps.Add (dlPacketSinkHelper.Install (ueNodes.Get (u))); // receive
packets from remotehost |
401 | 399 |
402 UdpClientHelper dlClient (ueIpIface.GetAddress (u), dlPort); // uplink pac
kets generator | 400 UdpClientHelper dlClient (ueIpIface.GetAddress (u), dlPort); // downlink p
ackets generator |
403 dlClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval))); | 401 dlClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval))); |
404 dlClient.SetAttribute ("MaxPackets", UintegerValue (1000000)); | 402 dlClient.SetAttribute ("MaxPackets", UintegerValue (1000000)); |
405 dlClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize)); | 403 dlClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize)); |
406 | 404 |
407 UdpClientHelper ulClient (remoteHostAddr, ulPort); // downlink p
ackets generator | 405 UdpClientHelper ulClient (remoteHostAddr, ulPort); // uplink pac
kets generator |
408 ulClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval))); | 406 ulClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval))); |
409 ulClient.SetAttribute ("MaxPackets", UintegerValue (1000000)); | 407 ulClient.SetAttribute ("MaxPackets", UintegerValue (1000000)); |
410 ulClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize)); | 408 ulClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize)); |
411 | 409 |
412 clientApps.Add (dlClient.Install (remoteHost)); | 410 clientApps.Add (dlClient.Install (remoteHost)); |
413 clientApps.Add (ulClient.Install (ueNodes.Get (u))); | 411 clientApps.Add (ulClient.Install (ueNodes.Get (u))); |
414 } | 412 } |
415 | 413 |
416 serverApps.Start (Seconds (0.030)); | 414 serverApps.Start (Seconds (0.030)); |
417 clientApps.Start (Seconds (0.030)); | 415 clientApps.Start (Seconds (0.030)); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 } | 474 } |
477 | 475 |
478 | 476 |
479 | 477 |
480 // --------------- T E S T - C A S E # 2 ------------------------------ | 478 // --------------- T E S T - C A S E # 2 ------------------------------ |
481 | 479 |
482 | 480 |
483 std::string· | 481 std::string· |
484 LenaPssFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<dou
ble> dist) | 482 LenaPssFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<dou
ble> dist) |
485 { | 483 { |
486 NS_UNUSED(nUser); | 484 NS_UNUSED (nUser); |
487 std::ostringstream oss; | 485 std::ostringstream oss; |
488 oss << "distances (m) = [ " ; | 486 oss << "distances (m) = [ " ; |
489 for (std::vector<double>::iterator it = dist.begin (); it != dist.end (); ++it
) | 487 for (std::vector<double>::iterator it = dist.begin (); it != dist.end (); ++it
) |
490 { | 488 { |
491 oss << *it << " "; | 489 oss << *it << " "; |
492 } | 490 } |
493 oss << "]"; | 491 oss << "]"; |
494 return oss.str (); | 492 return oss.str (); |
495 } | 493 } |
496 | 494 |
497 | 495 |
498 LenaPssFfMacSchedulerTestCase2::LenaPssFfMacSchedulerTestCase2 (std::vector<doub
le> dist, std::vector<uint32_t> estThrPssDl, std::vector<uint16_t> packetSize, u
int16_t interval,bool errorModelEnabled) | 496 LenaPssFfMacSchedulerTestCase2::LenaPssFfMacSchedulerTestCase2 (std::vector<doub
le> dist, std::vector<uint32_t> estThrPssDl, std::vector<uint16_t> packetSize, u
int16_t interval,bool errorModelEnabled) |
499 : TestCase (BuildNameString (static_cast<uint16_t>(dist.size ()), dist)), | 497 : TestCase (BuildNameString (static_cast<uint16_t> (dist.size ()), dist)), |
500 m_nUser (static_cast<uint16_t>(dist.size ())), | 498 m_nUser (static_cast<uint16_t> (dist.size ())), |
501 m_dist (dist), | 499 m_dist (dist), |
502 m_packetSize (packetSize), | 500 m_packetSize (packetSize), |
503 m_interval (interval), | 501 m_interval (interval), |
504 m_estThrPssDl (estThrPssDl), | 502 m_estThrPssDl (estThrPssDl), |
505 m_errorModelEnabled (errorModelEnabled) | 503 m_errorModelEnabled (errorModelEnabled) |
506 { | 504 { |
507 } | 505 } |
508 | 506 |
509 LenaPssFfMacSchedulerTestCase2::~LenaPssFfMacSchedulerTestCase2 () | 507 LenaPssFfMacSchedulerTestCase2::~LenaPssFfMacSchedulerTestCase2 () |
510 { | 508 { |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
546 ipv4h.SetBase ("1.0.0.0", "255.0.0.0"); | 544 ipv4h.SetBase ("1.0.0.0", "255.0.0.0"); |
547 Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign (internetDevices); | 545 Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign (internetDevices); |
548 // interface 0 is localhost, 1 is the p2p device | 546 // interface 0 is localhost, 1 is the p2p device |
549 Ipv4Address remoteHostAddr = internetIpIfaces.GetAddress (1); | 547 Ipv4Address remoteHostAddr = internetIpIfaces.GetAddress (1); |
550 | 548 |
551 Ipv4StaticRoutingHelper ipv4RoutingHelper; | 549 Ipv4StaticRoutingHelper ipv4RoutingHelper; |
552 Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRo
uting (remoteHost->GetObject<Ipv4> ()); | 550 Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRo
uting (remoteHost->GetObject<Ipv4> ()); |
553 remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask
("255.0.0.0"), 1); | 551 remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask
("255.0.0.0"), 1); |
554 | 552 |
555 | 553 |
556 #if 0 | 554 // LogComponentDisableAll (LOG_LEVEL_ALL); |
557 LogComponentDisableAll (LOG_LEVEL_ALL); | 555 //LogComponentEnable ("LenaTestPssFfMacScheduler", LOG_LEVEL_ALL); |
558 LogComponentEnable ("LenaTestPssFfMacScheduler", LOG_LEVEL_ALL); | 556 |
559 #endif | |
560 | |
561 lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumProp
agationLossModel")); | 557 lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumProp
agationLossModel")); |
562 | 558 |
563 // Create Nodes: eNodeB and UE | 559 // Create Nodes: eNodeB and UE |
564 NodeContainer enbNodes; | 560 NodeContainer enbNodes; |
565 NodeContainer ueNodes; | 561 NodeContainer ueNodes; |
566 enbNodes.Create (1); | 562 enbNodes.Create (1); |
567 ueNodes.Create (m_nUser); | 563 ueNodes.Create (m_nUser); |
568 | 564 |
569 // Install Mobility Model | 565 // Install Mobility Model |
570 MobilityHelper mobility; | 566 MobilityHelper mobility; |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
626 ·· | 622 ·· |
627 enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE; | 623 enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE; |
628 EpsBearer bearer (q, qos); | 624 EpsBearer bearer (q, qos); |
629 lteHelper->ActivateDedicatedEpsBearer (ueDevice, bearer, EpcTft::Default (
));·· | 625 lteHelper->ActivateDedicatedEpsBearer (ueDevice, bearer, EpcTft::Default (
));·· |
630 } | 626 } |
631 | 627 |
632 | 628 |
633 // Install downlink and uplink applications | 629 // Install downlink and uplink applications |
634 uint16_t dlPort = 1234; | 630 uint16_t dlPort = 1234; |
635 uint16_t ulPort = 2000; | 631 uint16_t ulPort = 2000; |
636 PacketSinkHelper dlPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddres
s (Ipv4Address::GetAny (), dlPort)); | |
637 ApplicationContainer clientApps; | 632 ApplicationContainer clientApps; |
638 ApplicationContainer serverApps; | 633 ApplicationContainer serverApps; |
| 634 PacketSinkHelper dlPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddres
s (Ipv4Address::GetAny (), dlPort)); |
639 | 635 |
640 for (uint32_t u = 0; u < ueNodes.GetN (); ++u) | 636 for (uint32_t u = 0; u < ueNodes.GetN (); ++u) |
641 { | 637 { |
642 ++ulPort; | 638 ++ulPort; |
643 PacketSinkHelper ulPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAd
dress (Ipv4Address::GetAny (), ulPort)); | 639 PacketSinkHelper ulPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAd
dress (Ipv4Address::GetAny (), ulPort)); |
644 serverApps.Add (ulPacketSinkHelper.Install (remoteHost)); // receive pack
ets from UEs | 640 serverApps.Add (ulPacketSinkHelper.Install (remoteHost)); // receive pack
ets from UEs |
645 | |
646 serverApps.Add (dlPacketSinkHelper.Install (ueNodes.Get (u))); // receive
packets from remotehost | 641 serverApps.Add (dlPacketSinkHelper.Install (ueNodes.Get (u))); // receive
packets from remotehost |
647 | 642 |
648 UdpClientHelper dlClient (ueIpIface.GetAddress (u), dlPort); // uplink pac
kets generator | 643 UdpClientHelper dlClient (ueIpIface.GetAddress (u), dlPort); // downlink p
ackets generator |
649 dlClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval))); | 644 dlClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval))); |
650 dlClient.SetAttribute ("MaxPackets", UintegerValue (1000000)); | 645 dlClient.SetAttribute ("MaxPackets", UintegerValue (1000000)); |
651 dlClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize.at (u))); | 646 dlClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize.at (u))); |
652 | 647 |
653 UdpClientHelper ulClient (remoteHostAddr, ulPort); // downlink p
ackets generator | 648 UdpClientHelper ulClient (remoteHostAddr, ulPort); // uplink pac
kets generator |
654 ulClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval))); | 649 ulClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval))); |
655 ulClient.SetAttribute ("MaxPackets", UintegerValue (1000000)); | 650 ulClient.SetAttribute ("MaxPackets", UintegerValue (1000000)); |
656 ulClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize.at (u))); | 651 ulClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize.at (u))); |
657 | 652 |
658 clientApps.Add (dlClient.Install (remoteHost)); | 653 clientApps.Add (dlClient.Install (remoteHost)); |
659 clientApps.Add (ulClient.Install (ueNodes.Get (u))); | 654 clientApps.Add (ulClient.Install (ueNodes.Get (u))); |
660 } | 655 } |
661 | 656 |
662 serverApps.Start (Seconds (0.030)); | 657 serverApps.Start (Seconds (0.030)); |
663 clientApps.Start (Seconds (0.030)); | 658 clientApps.Start (Seconds (0.030)); |
(...skipping 28 matching lines...) Expand all Loading... |
692 } | 687 } |
693 | 688 |
694 for (int i = 0; i < m_nUser; i++) | 689 for (int i = 0; i < m_nUser; i++) |
695 { | 690 { |
696 NS_TEST_ASSERT_MSG_EQ_TOL ((double)dlDataRxed.at (i) / statsDuration, m_es
tThrPssDl.at (i), m_estThrPssDl.at (i) * tolerance, " Unfair Throughput!"); | 691 NS_TEST_ASSERT_MSG_EQ_TOL ((double)dlDataRxed.at (i) / statsDuration, m_es
tThrPssDl.at (i), m_estThrPssDl.at (i) * tolerance, " Unfair Throughput!"); |
697 } | 692 } |
698 | 693 |
699 Simulator::Destroy (); | 694 Simulator::Destroy (); |
700 | 695 |
701 } | 696 } |
LEFT | RIGHT |