10#include "ns3/callback.h"
11#include "ns3/constant-position-mobility-model.h"
13#include "ns3/lte-helper.h"
14#include "ns3/lte-spectrum-value-helper.h"
15#include "ns3/lte-ue-rrc.h"
16#include "ns3/mobility-helper.h"
17#include "ns3/net-device-container.h"
18#include "ns3/node-container.h"
19#include "ns3/object.h"
21#include "ns3/simulator.h"
96 void DoRun()
override;
120 std::list<LteRrcSap::SCellToAddMod> sCellToAddModList);
130 std::vector<ConfigToCheck>
134 std::vector<std::map<uint16_t, ConfigToCheck>>
145 std::ostringstream
oss;
151std::vector<std::map<uint16_t, ConfigToCheck>>
158 std::map<uint16_t, ConfigToCheck>
ccmap;
182 cc.m_ulBandwidth =
it.m_ulBandwidth;
185 ccmap.insert(std::pair<uint16_t, ConfigToCheck>(
i,
cc));
187 NS_LOG_INFO(
"UL BW: " <<
it.m_ulBandwidth <<
", DL BW: " <<
it.m_dlBandwidth
209 std::list<LteRrcSap::SCellToAddMod> sCellToAddModList)
213 uint16_t cellId =
ueRrc->GetCellId();
233 <<
static_cast<uint16_t
>(
ueRrc->GetUlBandwidth())
234 <<
", DL BW: " <<
static_cast<uint16_t
>(
ueRrc->GetDlBandwidth()) <<
", UL Earfcn: "
235 <<
ueRrc->GetUlEarfcn() <<
", DL Earfcn: " <<
ueRrc->GetDlEarfcn());
237 for (
auto scell : sCellToAddModList)
240 <<
static_cast<uint16_t
>(
scell.radioResourceConfigCommonSCell.ulConfiguration
241 .ulFreqInfo.ulBandwidth)
243 <<
static_cast<uint16_t
>(
244 scell.radioResourceConfigCommonSCell.nonUlConfiguration.dlBandwidth)
246 <<
scell.radioResourceConfigCommonSCell.ulConfiguration.ulFreqInfo.ulCarrierFreq
247 <<
", DL Earfcn: " <<
scell.cellIdentification.dlCarrierFreq);
254 static_cast<uint16_t
>(
ueRrc->GetDlBandwidth()),
255 "Primary Carrier DL bandwidth configuration failed");
257 static_cast<uint16_t
>(
ueRrc->GetUlBandwidth()),
258 "Primary Carrier UL bandwidth configuration failed");
260 ueRrc->GetDlEarfcn(),
261 "Primary Carrier DL EARFCN configuration failed");
263 ueRrc->GetUlEarfcn(),
264 "Primary Carrier UL EARFCN configuration failed");
268 for (
auto scell : sCellToAddModList)
274 static_cast<uint16_t
>(
275 scell.radioResourceConfigCommonSCell.nonUlConfiguration.dlBandwidth),
276 "Secondary Carrier DL bandwidth configuration failed");
279 static_cast<uint16_t
>(
280 scell.radioResourceConfigCommonSCell.ulConfiguration.ulFreqInfo.ulBandwidth),
281 "Secondary Carrier UL bandwidth configuration failed");
283 scell.cellIdentification.dlCarrierFreq,
284 "Secondary Carrier DL EARFCN configuration failed");
287 scell.radioResourceConfigCommonSCell.ulConfiguration.ulFreqInfo.ulCarrierFreq,
288 "Secondary Carrier UL EARFCN configuration failed");
322 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
328 mobility.Install(
ueNodes.Get(n));
366 Config::Connect(
"/NodeList/*/DeviceList/*/LteUeRrc/SCarrierConfigured",
389 :
TestSuite(
"lte-carrier-aggregation-configuration",
Type::SYSTEM)
411 TestCase::Duration::QUICK);
438 TestCase::Duration::QUICK);
Carrier aggregation configuration test case.
CarrierAggregationConfigTestCase(uint32_t numberOfNodes, uint16_t numberOfComponentCarriers, std::vector< ConfigToCheck > configToCheck, Time simulationDuration)
Constructor.
Time m_simulationDuration
Simulation duration.
uint32_t m_numberOfNodes
Number of nodes.
uint16_t m_numberOfComponentCarriers
Number of component carriers.
void Evaluate(std::string context, Ptr< LteUeRrc > ueRrc, std::list< LteRrcSap::SCellToAddMod > sCellToAddModList)
Evaluate function.
uint32_t m_connectionCounter
Connection counter.
std::vector< std::map< uint16_t, ConfigToCheck > > m_configToCheckContainer
Vector of maps containing the per component carrier configuration.
std::vector< ConfigToCheck > m_configToCheck
Vector containing all the configurations to check.
std::string BuildNameString(uint32_t numberOfNodes, uint16_t numberOfComponentCarriers, std::vector< ConfigToCheck > configToCheck, Time simulationDuration)
Build name string function.
void DoRun() override
Implementation to actually run this TestCase.
std::vector< std::map< uint16_t, ConfigToCheck > > EquallySpacedCcs()
Equally spaced component carriers function.
Carrier aggregation configuration test suite.
CarrierAggregationConfigTestSuite()
AttributeValue implementation for Boolean.
This class contains the specification of EPS Bearers.
@ GBR_CONV_VOICE
GBR Conversational Voice.
static uint16_t GetUplinkCarrierBand(uint32_t nUl)
Converts uplink EARFCN to corresponding LTE frequency band number.
static uint16_t GetDownlinkCarrierBand(uint32_t nDl)
Converts downlink EARFCN to corresponding LTE frequency band number.
static double GetChannelBandwidth(uint16_t txBandwidthConf)
Helper class used to assign positions and mobility models to nodes.
holds a vector of ns3::NetDevice pointers
void Add(NetDeviceContainer other)
Append the contents of another NetDeviceContainer to the end of this container.
keep track of a set of node pointers.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
Smart pointer class similar to boost::intrusive_ptr.
static void Destroy()
Execute the events scheduled with ScheduleDestroy().
static void Run()
Run the simulation.
static void Stop()
Tell the Simulator the calling event should be the last one executed.
Hold variables of type string.
void AddTestCase(TestCase *testCase, Duration duration=Duration::QUICK)
Add an individual child TestCase to this test suite.
Simulation virtual time values and global simulation resolution.
Hold an unsigned integer type.
void SetDefault(std::string name, const AttributeValue &value)
void Connect(std::string path, const CallbackBase &cb)
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
static CarrierAggregationConfigTestSuite g_carrierAggregationConfigTestSuite
Static variable for test initialization.
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
#define NS_TEST_ASSERT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report and abort if not.
Time Seconds(double value)
Construct a Time in the indicated unit.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Callback< R, Args... > MakeCallback(R(T::*memPtr)(Args...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...
This test suite verifies following two things:
uint16_t m_ulBandwidth
Uplink bandwidth.
uint32_t m_dlEarfcn
Downlink EARFCN.
uint32_t m_ulEarfcn
Uplink EARFCN.
uint16_t m_dlBandwidth
Downlink bandwidth.