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);
250 lteHelper->SetAttribute(
"PathlossModel",
StringValue(
"ns3::FriisSpectrumPropagationLossModel"));
260 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
261 mobility.Install(enbNodes);
262 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
263 mobility.Install(ueNodes);
268 lteHelper->SetSchedulerType(
"ns3::TdBetFfMacScheduler");
270 enbDevs = lteHelper->InstallEnbDevice(enbNodes);
271 ueDevs = lteHelper->InstallUeDevice(ueNodes);
274 lteHelper->Attach(ueDevs, enbDevs.
Get(0));
279 lteHelper->ActivateDataRadioBearer(ueDevs, bearer);
283 enbPhy->SetAttribute(
"TxPower",
DoubleValue(30.0));
284 enbPhy->SetAttribute(
"NoiseFigure",
DoubleValue(5.0));
287 for (
int i = 0; i <
m_nUser; i++)
291 mm->SetPosition(Vector(
m_dist, 0.0, 0.0));
295 uePhy->SetAttribute(
"NoiseFigure",
DoubleValue(9.0));
298 double statsStartTime = 0.300;
299 double statsDuration = 0.6;
300 double tolerance = 0.1;
303 lteHelper->EnableMacTraces();
304 lteHelper->EnableRlcTraces();
317 std::vector<uint64_t> dlDataRxed;
318 for (
int i = 0; i <
m_nUser; i++)
324 dlDataRxed.push_back(rlcStats->GetDlRxData(imsi, lcId));
325 NS_LOG_INFO(
"\tUser " << i <<
" imsi " << imsi <<
" bytes rxed " << (
double)dlDataRxed.at(i)
326 <<
" thr " << (
double)dlDataRxed.at(i) / statsDuration <<
" ref "
335 for (
int i = 0; i <
m_nUser; i++)
340 " Unfair Throughput!");
347 std::vector<uint64_t> ulDataRxed;
348 for (
int i = 0; i <
m_nUser; i++)
354 ulDataRxed.push_back(rlcStats->GetUlRxData(imsi, lcId));
355 NS_LOG_INFO(
"\tUser " << i <<
" imsi " << imsi <<
" bytes rxed " << (
double)ulDataRxed.at(i)
356 <<
" thr " << (
double)ulDataRxed.at(i) / statsDuration <<
" ref "
365 for (
int i = 0; i <
m_nUser; i++)
370 " Unfair Throughput!");
435 lteHelper->SetAttribute(
"PathlossModel",
StringValue(
"ns3::FriisSpectrumPropagationLossModel"));
445 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
446 mobility.Install(enbNodes);
447 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
448 mobility.Install(ueNodes);
453 lteHelper->SetSchedulerType(
"ns3::TdBetFfMacScheduler");
455 enbDevs = lteHelper->InstallEnbDevice(enbNodes);
456 ueDevs = lteHelper->InstallUeDevice(ueNodes);
459 lteHelper->Attach(ueDevs, enbDevs.
Get(0));
464 lteHelper->ActivateDataRadioBearer(ueDevs, bearer);
468 enbPhy->SetAttribute(
"TxPower",
DoubleValue(30.0));
469 enbPhy->SetAttribute(
"NoiseFigure",
DoubleValue(5.0));
472 for (
int i = 0; i <
m_nUser; i++)
476 mm->SetPosition(Vector(
m_dist.at(i), 0.0, 0.0));
480 uePhy->SetAttribute(
"NoiseFigure",
DoubleValue(9.0));
483 double statsStartTime = 0.300;
484 double statsDuration = 0.4;
485 double tolerance = 0.1;
488 lteHelper->EnableMacTraces();
489 lteHelper->EnableRlcTraces();
497 std::vector<uint64_t> dlDataRxed;
498 double totalData = 0;
499 double estTotalThr = 0;
501 for (
int i = 0; i <
m_nUser; i++)
507 dlDataRxed.push_back(rlcStats->GetDlRxData(imsi, lcId));
508 totalData += (
double)dlDataRxed.at(i);
510 NS_LOG_INFO(
"\tUser " << i <<
" dist " <<
m_dist.at(i) <<
" imsi " << imsi <<
" bytes rxed "
511 << (
double)dlDataRxed.at(i) <<
" thr "
512 << (
double)dlDataRxed.at(i) / statsDuration <<
" ref " <<
m_nUser);
515 estTotalThr =
m_nUser * (1 / estTotalThr);
516 estUeThr = estTotalThr /
m_nUser;
521 for (
int i = 0; i <
m_nUser; i++)
523 double thrRatio = 1.0 /
m_nUser;
524 double estThrRatio = (
double)dlDataRxed.at(i) / totalData;
525 NS_LOG_INFO(
"\tUser " << i <<
" thrRatio " << thrRatio <<
" estThrRatio " << estThrRatio);
529 estUeThr * tolerance,
530 " Unfair Throughput!");
538 std::vector<uint64_t> ulDataRxed;
539 for (
int i = 0; i <
m_nUser; i++)
545 ulDataRxed.push_back(rlcStats->GetUlRxData(imsi, lcId));
547 << (
double)ulDataRxed.at(i) <<
" thr "
548 << (
double)ulDataRxed.at(i) / statsDuration <<
" ref "
553 " Unfair Throughput!");