50 NS_LOG_INFO(
"creating LenaTestTdBetFfMacSchedulerSuite");
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> estThrTdBetUl;
177 estThrTdBetUl.push_back(469000);
178 estThrTdBetUl.push_back(157000);
179 estThrTdBetUl.push_back(125000);
180 estThrTdBetUl.push_back(85000);
181 estThrTdBetUl.push_back(26000);
184 TestCase::Duration::QUICK);
249 lteHelper->SetAttribute(
"PathlossModel",
StringValue(
"ns3::FriisSpectrumPropagationLossModel"));
259 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
260 mobility.Install(enbNodes);
261 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
262 mobility.Install(ueNodes);
267 lteHelper->SetSchedulerType(
"ns3::TdBetFfMacScheduler");
269 enbDevs = lteHelper->InstallEnbDevice(enbNodes);
270 ueDevs = lteHelper->InstallUeDevice(ueNodes);
273 lteHelper->Attach(ueDevs, enbDevs.
Get(0));
278 lteHelper->ActivateDataRadioBearer(ueDevs, bearer);
282 enbPhy->SetAttribute(
"TxPower",
DoubleValue(30.0));
283 enbPhy->SetAttribute(
"NoiseFigure",
DoubleValue(5.0));
286 for (
int i = 0; i <
m_nUser; i++)
290 mm->SetPosition(Vector(
m_dist, 0.0, 0.0));
294 uePhy->SetAttribute(
"NoiseFigure",
DoubleValue(9.0));
297 double statsStartTime = 0.300;
298 double statsDuration = 0.6;
299 double tolerance = 0.1;
302 lteHelper->EnableMacTraces();
303 lteHelper->EnableRlcTraces();
316 std::vector<uint64_t> dlDataRxed;
317 for (
int i = 0; i <
m_nUser; i++)
323 dlDataRxed.push_back(rlcStats->GetDlRxData(imsi, lcId));
324 NS_LOG_INFO(
"\tUser " << i <<
" imsi " << imsi <<
" bytes rxed " << (
double)dlDataRxed.at(i)
325 <<
" thr " << (
double)dlDataRxed.at(i) / statsDuration <<
" ref "
334 for (
int i = 0; i <
m_nUser; i++)
339 " Unfair Throughput!");
346 std::vector<uint64_t> ulDataRxed;
347 for (
int i = 0; i <
m_nUser; i++)
353 ulDataRxed.push_back(rlcStats->GetUlRxData(imsi, lcId));
354 NS_LOG_INFO(
"\tUser " << i <<
" imsi " << imsi <<
" bytes rxed " << (
double)ulDataRxed.at(i)
355 <<
" thr " << (
double)ulDataRxed.at(i) / statsDuration <<
" ref "
364 for (
int i = 0; i <
m_nUser; i++)
369 " Unfair Throughput!");
433 lteHelper->SetAttribute(
"PathlossModel",
StringValue(
"ns3::FriisSpectrumPropagationLossModel"));
443 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
444 mobility.Install(enbNodes);
445 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
446 mobility.Install(ueNodes);
451 lteHelper->SetSchedulerType(
"ns3::TdBetFfMacScheduler");
453 enbDevs = lteHelper->InstallEnbDevice(enbNodes);
454 ueDevs = lteHelper->InstallUeDevice(ueNodes);
457 lteHelper->Attach(ueDevs, enbDevs.
Get(0));
462 lteHelper->ActivateDataRadioBearer(ueDevs, bearer);
466 enbPhy->SetAttribute(
"TxPower",
DoubleValue(30.0));
467 enbPhy->SetAttribute(
"NoiseFigure",
DoubleValue(5.0));
470 for (
int i = 0; i <
m_nUser; i++)
474 mm->SetPosition(Vector(
m_dist.at(i), 0.0, 0.0));
478 uePhy->SetAttribute(
"NoiseFigure",
DoubleValue(9.0));
481 double statsStartTime = 0.300;
482 double statsDuration = 0.4;
483 double tolerance = 0.1;
486 lteHelper->EnableMacTraces();
487 lteHelper->EnableRlcTraces();
495 std::vector<uint64_t> dlDataRxed;
496 double totalData = 0;
497 double estTotalThr = 0;
499 for (
int i = 0; i <
m_nUser; i++)
505 dlDataRxed.push_back(rlcStats->GetDlRxData(imsi, lcId));
506 totalData += (
double)dlDataRxed.at(i);
508 NS_LOG_INFO(
"\tUser " << i <<
" dist " <<
m_dist.at(i) <<
" imsi " << imsi <<
" bytes rxed "
509 << (
double)dlDataRxed.at(i) <<
" thr "
510 << (
double)dlDataRxed.at(i) / statsDuration <<
" ref " <<
m_nUser);
513 estTotalThr =
m_nUser * (1 / estTotalThr);
514 estUeThr = estTotalThr /
m_nUser;
519 for (
int i = 0; i <
m_nUser; i++)
521 double thrRatio = 1.0 /
m_nUser;
522 double estThrRatio = (
double)dlDataRxed.at(i) / totalData;
523 NS_LOG_INFO(
"\tUser " << i <<
" thrRatio " << thrRatio <<
" estThrRatio " << estThrRatio);
527 estUeThr * tolerance,
528 " Unfair Throughput!");
536 std::vector<uint64_t> ulDataRxed;
537 for (
int i = 0; i <
m_nUser; i++)
543 ulDataRxed.push_back(rlcStats->GetUlRxData(imsi, lcId));
545 << (
double)ulDataRxed.at(i) <<
" thr "
546 << (
double)ulDataRxed.at(i) / statsDuration <<
" ref "
551 " Unfair Throughput!");