50 NS_LOG_INFO(
"creating LenaTestFdBetFfMacSchedulerSuite");
52 bool errorModel =
false;
70 TestCase::Duration::EXTENSIVE);
72 TestCase::Duration::EXTENSIVE);
74 TestCase::Duration::EXTENSIVE);
76 TestCase::Duration::EXTENSIVE);
90 TestCase::Duration::EXTENSIVE);
92 TestCase::Duration::EXTENSIVE);
94 TestCase::Duration::EXTENSIVE);
96 TestCase::Duration::EXTENSIVE);
109 TestCase::Duration::EXTENSIVE);
111 TestCase::Duration::EXTENSIVE);
113 TestCase::Duration::EXTENSIVE);
115 TestCase::Duration::EXTENSIVE);
129 TestCase::Duration::EXTENSIVE);
131 TestCase::Duration::EXTENSIVE);
133 TestCase::Duration::EXTENSIVE);
135 TestCase::Duration::EXTENSIVE);
149 TestCase::Duration::EXTENSIVE);
151 TestCase::Duration::EXTENSIVE);
153 TestCase::Duration::EXTENSIVE);
155 TestCase::Duration::EXTENSIVE);
160 TestCase::Duration::QUICK);
164 std::vector<double> dist;
166 dist.push_back(4800);
167 dist.push_back(6000);
168 dist.push_back(10000);
169 dist.push_back(20000);
170 std::vector<uint32_t> estAchievableRateDl;
171 estAchievableRateDl.push_back(2196000);
172 estAchievableRateDl.push_back(1383000);
173 estAchievableRateDl.push_back(775000);
174 estAchievableRateDl.push_back(421000);
175 estAchievableRateDl.push_back(421000);
176 std::vector<uint32_t> estThrFdBetUl;
177 estThrFdBetUl.push_back(469000);
178 estThrFdBetUl.push_back(157000);
179 estThrFdBetUl.push_back(125000);
180 estThrFdBetUl.push_back(85000);
181 estThrFdBetUl.push_back(26000);
184 TestCase::Duration::QUICK);
247 lteHelper->SetAttribute(
"PathlossModel",
StringValue(
"ns3::FriisSpectrumPropagationLossModel"));
257 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
258 mobility.Install(enbNodes);
259 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
260 mobility.Install(ueNodes);
265 lteHelper->SetSchedulerType(
"ns3::FdBetFfMacScheduler");
267 enbDevs = lteHelper->InstallEnbDevice(enbNodes);
268 ueDevs = lteHelper->InstallUeDevice(ueNodes);
271 lteHelper->Attach(ueDevs, enbDevs.
Get(0));
276 lteHelper->ActivateDataRadioBearer(ueDevs, bearer);
280 enbPhy->SetAttribute(
"TxPower",
DoubleValue(30.0));
281 enbPhy->SetAttribute(
"NoiseFigure",
DoubleValue(5.0));
284 for (
int i = 0; i <
m_nUser; i++)
288 mm->SetPosition(Vector(
m_dist, 0.0, 0.0));
292 uePhy->SetAttribute(
"NoiseFigure",
DoubleValue(9.0));
295 double statsStartTime = 0.300;
296 double statsDuration = 0.6;
297 double tolerance = 0.1;
300 lteHelper->EnableMacTraces();
301 lteHelper->EnableRlcTraces();
312 std::vector<uint64_t> dlDataRxed;
313 for (
int i = 0; i <
m_nUser; i++)
319 dlDataRxed.push_back(rlcStats->GetDlRxData(imsi, lcId));
320 NS_LOG_INFO(
"\tUser " << i <<
" imsi " << imsi <<
" bytes rxed " << (
double)dlDataRxed.at(i)
321 <<
" thr " << (
double)dlDataRxed.at(i) / statsDuration <<
" ref "
330 for (
int i = 0; i <
m_nUser; i++)
335 " Unfair Throughput!");
342 std::vector<uint64_t> ulDataRxed;
343 for (
int i = 0; i <
m_nUser; i++)
349 ulDataRxed.push_back(rlcStats->GetUlRxData(imsi, lcId));
350 NS_LOG_INFO(
"\tUser " << i <<
" imsi " << imsi <<
" bytes rxed " << (
double)ulDataRxed.at(i)
351 <<
" thr " << (
double)ulDataRxed.at(i) / statsDuration <<
" ref "
360 for (
int i = 0; i <
m_nUser; i++)
365 " Unfair Throughput!");
430 lteHelper->SetAttribute(
"PathlossModel",
StringValue(
"ns3::FriisSpectrumPropagationLossModel"));
440 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
441 mobility.Install(enbNodes);
442 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
443 mobility.Install(ueNodes);
448 lteHelper->SetSchedulerType(
"ns3::FdBetFfMacScheduler");
450 enbDevs = lteHelper->InstallEnbDevice(enbNodes);
451 ueDevs = lteHelper->InstallUeDevice(ueNodes);
454 lteHelper->Attach(ueDevs, enbDevs.
Get(0));
459 lteHelper->ActivateDataRadioBearer(ueDevs, bearer);
463 enbPhy->SetAttribute(
"TxPower",
DoubleValue(30.0));
464 enbPhy->SetAttribute(
"NoiseFigure",
DoubleValue(5.0));
467 for (
int i = 0; i <
m_nUser; i++)
471 mm->SetPosition(Vector(
m_dist.at(i), 0.0, 0.0));
475 uePhy->SetAttribute(
"NoiseFigure",
DoubleValue(9.0));
478 double statsStartTime = 0.300;
479 double statsDuration = 0.4;
480 double tolerance = 0.1;
483 lteHelper->EnableMacTraces();
484 lteHelper->EnableRlcTraces();
492 std::vector<uint64_t> dlDataRxed;
493 double totalData = 0;
494 double estTotalThr = 0;
496 for (
int i = 0; i <
m_nUser; i++)
502 dlDataRxed.push_back(rlcStats->GetDlRxData(imsi, lcId));
503 totalData += (
double)dlDataRxed.at(i);
505 NS_LOG_INFO(
"\tUser " << i <<
" dist " <<
m_dist.at(i) <<
" imsi " << imsi <<
" bytes rxed "
506 << (
double)dlDataRxed.at(i) <<
" thr "
507 << (
double)dlDataRxed.at(i) / statsDuration <<
" ref " <<
m_nUser);
510 estTotalThr =
m_nUser * (1 / estTotalThr);
511 estUeThr = estTotalThr /
m_nUser;
516 for (
int i = 0; i <
m_nUser; i++)
518 double thrRatio = 1.0 /
m_nUser;
519 double estThrRatio = (
double)dlDataRxed.at(i) / totalData;
520 NS_LOG_INFO(
"\tUser " << i <<
" thrRatio " << thrRatio <<
" estThrRatio " << estThrRatio);
524 estUeThr * tolerance,
525 " Unfair Throughput!");
533 std::vector<uint64_t> ulDataRxed;
534 for (
int i = 0; i <
m_nUser; i++)
540 ulDataRxed.push_back(rlcStats->GetUlRxData(imsi, lcId));
542 << (
double)ulDataRxed.at(i) <<
" thr "
543 << (
double)ulDataRxed.at(i) / statsDuration <<
" ref "
548 " Unfair Throughput!");