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);
246 lteHelper->SetAttribute(
"PathlossModel",
StringValue(
"ns3::FriisSpectrumPropagationLossModel"));
256 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
257 mobility.Install(enbNodes);
258 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
259 mobility.Install(ueNodes);
264 lteHelper->SetSchedulerType(
"ns3::FdBetFfMacScheduler");
266 enbDevs = lteHelper->InstallEnbDevice(enbNodes);
267 ueDevs = lteHelper->InstallUeDevice(ueNodes);
270 lteHelper->Attach(ueDevs, enbDevs.
Get(0));
275 lteHelper->ActivateDataRadioBearer(ueDevs, bearer);
279 enbPhy->SetAttribute(
"TxPower",
DoubleValue(30.0));
280 enbPhy->SetAttribute(
"NoiseFigure",
DoubleValue(5.0));
283 for (
int i = 0; i <
m_nUser; i++)
287 mm->SetPosition(Vector(
m_dist, 0.0, 0.0));
291 uePhy->SetAttribute(
"NoiseFigure",
DoubleValue(9.0));
294 double statsStartTime = 0.300;
295 double statsDuration = 0.6;
296 double tolerance = 0.1;
299 lteHelper->EnableMacTraces();
300 lteHelper->EnableRlcTraces();
311 std::vector<uint64_t> dlDataRxed;
312 for (
int i = 0; i <
m_nUser; i++)
318 dlDataRxed.push_back(rlcStats->GetDlRxData(imsi, lcId));
319 NS_LOG_INFO(
"\tUser " << i <<
" imsi " << imsi <<
" bytes rxed " << (
double)dlDataRxed.at(i)
320 <<
" thr " << (
double)dlDataRxed.at(i) / statsDuration <<
" ref "
329 for (
int i = 0; i <
m_nUser; i++)
334 " Unfair Throughput!");
341 std::vector<uint64_t> ulDataRxed;
342 for (
int i = 0; i <
m_nUser; i++)
348 ulDataRxed.push_back(rlcStats->GetUlRxData(imsi, lcId));
349 NS_LOG_INFO(
"\tUser " << i <<
" imsi " << imsi <<
" bytes rxed " << (
double)ulDataRxed.at(i)
350 <<
" thr " << (
double)ulDataRxed.at(i) / statsDuration <<
" ref "
359 for (
int i = 0; i <
m_nUser; i++)
364 " Unfair Throughput!");
428 lteHelper->SetAttribute(
"PathlossModel",
StringValue(
"ns3::FriisSpectrumPropagationLossModel"));
438 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
439 mobility.Install(enbNodes);
440 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
441 mobility.Install(ueNodes);
446 lteHelper->SetSchedulerType(
"ns3::FdBetFfMacScheduler");
448 enbDevs = lteHelper->InstallEnbDevice(enbNodes);
449 ueDevs = lteHelper->InstallUeDevice(ueNodes);
452 lteHelper->Attach(ueDevs, enbDevs.
Get(0));
457 lteHelper->ActivateDataRadioBearer(ueDevs, bearer);
461 enbPhy->SetAttribute(
"TxPower",
DoubleValue(30.0));
462 enbPhy->SetAttribute(
"NoiseFigure",
DoubleValue(5.0));
465 for (
int i = 0; i <
m_nUser; i++)
469 mm->SetPosition(Vector(
m_dist.at(i), 0.0, 0.0));
473 uePhy->SetAttribute(
"NoiseFigure",
DoubleValue(9.0));
476 double statsStartTime = 0.300;
477 double statsDuration = 0.4;
478 double tolerance = 0.1;
481 lteHelper->EnableMacTraces();
482 lteHelper->EnableRlcTraces();
490 std::vector<uint64_t> dlDataRxed;
491 double totalData = 0;
492 double estTotalThr = 0;
494 for (
int i = 0; i <
m_nUser; i++)
500 dlDataRxed.push_back(rlcStats->GetDlRxData(imsi, lcId));
501 totalData += (
double)dlDataRxed.at(i);
503 NS_LOG_INFO(
"\tUser " << i <<
" dist " <<
m_dist.at(i) <<
" imsi " << imsi <<
" bytes rxed "
504 << (
double)dlDataRxed.at(i) <<
" thr "
505 << (
double)dlDataRxed.at(i) / statsDuration <<
" ref " <<
m_nUser);
508 estTotalThr =
m_nUser * (1 / estTotalThr);
509 estUeThr = estTotalThr /
m_nUser;
514 for (
int i = 0; i <
m_nUser; i++)
516 double thrRatio = 1.0 /
m_nUser;
517 double estThrRatio = (
double)dlDataRxed.at(i) / totalData;
518 NS_LOG_INFO(
"\tUser " << i <<
" thrRatio " << thrRatio <<
" estThrRatio " << estThrRatio);
522 estUeThr * tolerance,
523 " Unfair Throughput!");
531 std::vector<uint64_t> ulDataRxed;
532 for (
int i = 0; i <
m_nUser; i++)
538 ulDataRxed.push_back(rlcStats->GetUlRxData(imsi, lcId));
540 << (
double)ulDataRxed.at(i) <<
" thr "
541 << (
double)ulDataRxed.at(i) / statsDuration <<
" ref "
546 " Unfair Throughput!");