22 #include <ns3/object.h>
23 #include <ns3/spectrum-interference.h>
24 #include <ns3/spectrum-error-model.h>
27 #include <ns3/simulator.h>
28 #include <ns3/packet.h>
31 #include "ns3/radio-bearer-stats-calculator.h"
32 #include <ns3/constant-position-mobility-model.h>
33 #include "ns3/ff-mac-scheduler.h"
34 #include <ns3/eps-bearer.h>
35 #include <ns3/node-container.h>
36 #include <ns3/mobility-helper.h>
37 #include <ns3/net-device-container.h>
38 #include <ns3/lte-ue-net-device.h>
39 #include <ns3/lte-enb-net-device.h>
40 #include <ns3/lte-ue-rrc.h>
41 #include <ns3/lte-helper.h>
42 #include "ns3/string.h"
43 #include "ns3/double.h"
44 #include <ns3/lte-enb-phy.h>
45 #include <ns3/lte-ue-phy.h>
46 #include <ns3/boolean.h>
48 #include <ns3/config-store-module.h>
70 uint32_t frameNo, uint32_t subframeNo, uint16_t rnti,
71 uint8_t mcs, uint16_t sizeTb, uint8_t ccId)
73 testcase->
UlScheduling (frameNo, subframeNo, rnti, mcs, sizeTb, ccId);
78 :
TestSuite (
"lte-carrier-aggregation", SYSTEM)
80 NS_LOG_INFO (
"creating CarrierAggregationTestCase");
84 std::cout<<
"\n Running TestCarrierAggregationSuite with activated option to write results to files."
91 std::cout<<
"\nResults file "<<
dlResultsFileName<<
" already exists. Move it out of the way or specify another downlink results file name."<<std::endl;
96 std::cout<<
"\nResults file "<<
ulResultsFileName<<
" already exists. Move it out of the way or specify another uplink results file name."<<std::endl;
250 std::ostringstream oss;
251 oss << nUser <<
" UEs, distance " << dist <<
" m"<<
" dlBandwidth "<< dlBandwidth <<
" ulBandwidth "<< ulBandwidth <<
" number of carriers "<<numberOfComponentCarriers;
256 :
TestCase (BuildNameString (nUser, dist, dlbandwidth, ulBandwidth, numberOfComponentCarriers)),
259 m_dlBandwidth (dlbandwidth),
260 m_ulBandwidth (ulBandwidth),
261 m_numberOfComponentCarriers(numberOfComponentCarriers)
319 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
321 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
333 lteHelper->
Attach (ueDevs, enbDevs.
Get (0));
343 enbPhy->SetAttribute (
"TxPower",
DoubleValue (30.0));
344 enbPhy->SetAttribute (
"NoiseFigure",
DoubleValue (5.0));
347 for (
int i = 0; i <
m_nUser; i++)
353 uePhy->SetAttribute (
"TxPower",
DoubleValue (23.0));
354 uePhy->SetAttribute (
"NoiseFigure",
DoubleValue (9.0));
358 double statsStartTime = 0.300;
362 Config::Connect (
"/NodeList/*/DeviceList/*/ComponentCarrierMap/*/LteEnbMac/DlScheduling",
365 Config::Connect (
"/NodeList/*/DeviceList/*/ComponentCarrierMap/*/LteEnbMac/UlScheduling",
376 std::vector <uint64_t> dlDataRxed;
381 bool testDownlinkShare =
true;
388 NS_LOG_INFO (
"Downlink traffic per carrier:"<<itDownlink->second);
394 testDownlinkShare =
false;
400 bool testUplinkShare =
true;
406 NS_LOG_INFO (
"Uplink traffic per carrier:"<<itUplink->second);
412 testUplinkShare =
false;
421 NS_TEST_ASSERT_MSG_EQ (testDownlinkShare,
true,
" Downlink traffic not split equally between carriers!");
422 NS_TEST_ASSERT_MSG_EQ (testUplinkShare,
true ,
" Uplink traffic not split equally between carriers");
427 Simulator::Destroy ();
452 uint8_t mcs, uint16_t sizeTb, uint8_t componentCarrierId)
460 m_ccUplinkTraffic.insert (std::pair<uint8_t, uint32_t> (componentCarrierId, sizeTb));
474 std::ofstream dlOutFile;
475 dlOutFile.open (
dlResultsFileName.c_str(), std::ofstream::out | std::ofstream::app);
476 dlOutFile.setf (std::ios_base::fixed);
478 if (!dlOutFile.is_open ())
486 std::ofstream ulOutFile;
487 ulOutFile.open (
ulResultsFileName.c_str(), std::ofstream::out | std::ofstream::app);
488 ulOutFile.setf (std::ios_base::fixed);
490 if (!ulOutFile.is_open ())