addressed code review comments
This commit is contained in:
@@ -12845,9 +12845,9 @@ def register_Ns3EpcHelper_methods(root_module, cls):
|
||||
cls.add_constructor([param('ns3::EpcHelper const &', 'arg0')])
|
||||
## epc-helper.h (module 'lte'): ns3::EpcHelper::EpcHelper() [constructor]
|
||||
cls.add_constructor([])
|
||||
## epc-helper.h (module 'lte'): void ns3::EpcHelper::ActivateEpsBearer(ns3::Ptr<ns3::NetDevice> ueLteDevice, uint64_t imsi, ns3::Ptr<ns3::EpcTft> tft, ns3::EpsBearer bearer) [member function]
|
||||
## epc-helper.h (module 'lte'): uint8_t ns3::EpcHelper::ActivateEpsBearer(ns3::Ptr<ns3::NetDevice> ueLteDevice, uint64_t imsi, ns3::Ptr<ns3::EpcTft> tft, ns3::EpsBearer bearer) [member function]
|
||||
cls.add_method('ActivateEpsBearer',
|
||||
'void',
|
||||
'uint8_t',
|
||||
[param('ns3::Ptr< ns3::NetDevice >', 'ueLteDevice'), param('uint64_t', 'imsi'), param('ns3::Ptr< ns3::EpcTft >', 'tft'), param('ns3::EpsBearer', 'bearer')],
|
||||
is_pure_virtual=True, is_virtual=True)
|
||||
## epc-helper.h (module 'lte'): void ns3::EpcHelper::AddEnb(ns3::Ptr<ns3::Node> enbNode, ns3::Ptr<ns3::NetDevice> lteEnbNetDevice, uint16_t cellId) [member function]
|
||||
@@ -15979,13 +15979,13 @@ def register_Ns3LteHelper_methods(root_module, cls):
|
||||
cls.add_method('ActivateDataRadioBearer',
|
||||
'void',
|
||||
[param('ns3::Ptr< ns3::NetDevice >', 'ueDevice'), param('ns3::EpsBearer', 'bearer')])
|
||||
## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::NetDeviceContainer ueDevices, ns3::EpsBearer bearer, ns3::Ptr<ns3::EpcTft> tft) [member function]
|
||||
## lte-helper.h (module 'lte'): uint8_t ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::NetDeviceContainer ueDevices, ns3::EpsBearer bearer, ns3::Ptr<ns3::EpcTft> tft) [member function]
|
||||
cls.add_method('ActivateDedicatedEpsBearer',
|
||||
'void',
|
||||
'uint8_t',
|
||||
[param('ns3::NetDeviceContainer', 'ueDevices'), param('ns3::EpsBearer', 'bearer'), param('ns3::Ptr< ns3::EpcTft >', 'tft')])
|
||||
## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::Ptr<ns3::NetDevice> ueDevice, ns3::EpsBearer bearer, ns3::Ptr<ns3::EpcTft> tft) [member function]
|
||||
## lte-helper.h (module 'lte'): uint8_t ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::Ptr<ns3::NetDevice> ueDevice, ns3::EpsBearer bearer, ns3::Ptr<ns3::EpcTft> tft) [member function]
|
||||
cls.add_method('ActivateDedicatedEpsBearer',
|
||||
'void',
|
||||
'uint8_t',
|
||||
[param('ns3::Ptr< ns3::NetDevice >', 'ueDevice'), param('ns3::EpsBearer', 'bearer'), param('ns3::Ptr< ns3::EpcTft >', 'tft')])
|
||||
## lte-helper.h (module 'lte'): void ns3::LteHelper::AddX2Interface(ns3::NodeContainer enbNodes) [member function]
|
||||
cls.add_method('AddX2Interface',
|
||||
@@ -18512,9 +18512,9 @@ def register_Ns3PointToPointEpcHelper_methods(root_module, cls):
|
||||
cls.add_constructor([param('ns3::PointToPointEpcHelper const &', 'arg0')])
|
||||
## point-to-point-epc-helper.h (module 'lte'): ns3::PointToPointEpcHelper::PointToPointEpcHelper() [constructor]
|
||||
cls.add_constructor([])
|
||||
## point-to-point-epc-helper.h (module 'lte'): void ns3::PointToPointEpcHelper::ActivateEpsBearer(ns3::Ptr<ns3::NetDevice> ueLteDevice, uint64_t imsi, ns3::Ptr<ns3::EpcTft> tft, ns3::EpsBearer bearer) [member function]
|
||||
## point-to-point-epc-helper.h (module 'lte'): uint8_t ns3::PointToPointEpcHelper::ActivateEpsBearer(ns3::Ptr<ns3::NetDevice> ueLteDevice, uint64_t imsi, ns3::Ptr<ns3::EpcTft> tft, ns3::EpsBearer bearer) [member function]
|
||||
cls.add_method('ActivateEpsBearer',
|
||||
'void',
|
||||
'uint8_t',
|
||||
[param('ns3::Ptr< ns3::NetDevice >', 'ueLteDevice'), param('uint64_t', 'imsi'), param('ns3::Ptr< ns3::EpcTft >', 'tft'), param('ns3::EpsBearer', 'bearer')],
|
||||
is_virtual=True)
|
||||
## point-to-point-epc-helper.h (module 'lte'): void ns3::PointToPointEpcHelper::AddEnb(ns3::Ptr<ns3::Node> enbNode, ns3::Ptr<ns3::NetDevice> lteEnbNetDevice, uint16_t cellId) [member function]
|
||||
@@ -20202,9 +20202,9 @@ def register_Ns3EmuEpcHelper_methods(root_module, cls):
|
||||
cls.add_constructor([param('ns3::EmuEpcHelper const &', 'arg0')])
|
||||
## emu-epc-helper.h (module 'lte'): ns3::EmuEpcHelper::EmuEpcHelper() [constructor]
|
||||
cls.add_constructor([])
|
||||
## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::ActivateEpsBearer(ns3::Ptr<ns3::NetDevice> ueLteDevice, uint64_t imsi, ns3::Ptr<ns3::EpcTft> tft, ns3::EpsBearer bearer) [member function]
|
||||
## emu-epc-helper.h (module 'lte'): uint8_t ns3::EmuEpcHelper::ActivateEpsBearer(ns3::Ptr<ns3::NetDevice> ueLteDevice, uint64_t imsi, ns3::Ptr<ns3::EpcTft> tft, ns3::EpsBearer bearer) [member function]
|
||||
cls.add_method('ActivateEpsBearer',
|
||||
'void',
|
||||
'uint8_t',
|
||||
[param('ns3::Ptr< ns3::NetDevice >', 'ueLteDevice'), param('uint64_t', 'imsi'), param('ns3::Ptr< ns3::EpcTft >', 'tft'), param('ns3::EpsBearer', 'bearer')],
|
||||
is_virtual=True)
|
||||
## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::AddEnb(ns3::Ptr<ns3::Node> enbNode, ns3::Ptr<ns3::NetDevice> lteEnbNetDevice, uint16_t cellId) [member function]
|
||||
|
||||
@@ -122,6 +122,34 @@ each element in the test vector.
|
||||
System Tests
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Dedicated Bearer Deactivation Tests
|
||||
-----------------------------------
|
||||
The test suite ‘lte-test-deactivate-bearer’ creates test case with single EnodeB and Three UE’s.
|
||||
Each UE consists of one Default and one Dedicated EPS bearer with same bearer specification but with different ARP.
|
||||
Test Case Flow is as follows:
|
||||
Attach UE -> Create Default+Dedicated Bearer -> Deactivate one of the Dedicated bearer
|
||||
|
||||
Test case further deactivates dedicated bearer having bearer ID 2(LCID=BearerId+2) of First UE (UE_ID=1)
|
||||
User can schedule bearer deactivation after specific time delay using Simulator::Schedule () method.
|
||||
|
||||
Once the test case execution ends it will create DlRlcStats.txt and UlRlcStats.txt.
|
||||
Key fields that need to be checked in statistics are:
|
||||
|Start | end | Cell ID | IMSI | RNTI | LCID | TxBytes | RxBytes |
|
||||
|
||||
Test case executes in three epoch’s.
|
||||
1) In first Epoch (0.04s-1.04s) All UE’s and corresponding bearers gets attached
|
||||
and packet flow over the dedicated bearers activated.
|
||||
2) In second Epoch (1.04s-2.04s), bearer deactivation is instantiated, hence User can see
|
||||
relatively less number of TxBytes on UE_ID=1 and LCID=4 as compared to other bearers.
|
||||
3) In third Epoch (2.04s-3.04s) since bearer deactivation of UE_ID=1 and LCID=4 is completed,
|
||||
user will not see any logging related to LCID=4.
|
||||
|
||||
Test case passes if and only if
|
||||
1) IMSI=1 and LCID=4 completely removed in third epoch
|
||||
2) No packets seen in TxBytes and RxBytes corresponding to IMSI=1 and LCID=4
|
||||
If above criterion does not match test case considered to be failed
|
||||
|
||||
|
||||
.. _sec-lte-amc-tests:
|
||||
|
||||
Adaptive Modulation and Coding Tests
|
||||
|
||||
@@ -213,12 +213,16 @@ main (int argc, char *argv[])
|
||||
rlcStats->SetAttribute ("StartTime", TimeValue (Seconds (statsStartTime)));
|
||||
rlcStats->SetAttribute ("EpochDuration", TimeValue (Seconds (statsDuration)));
|
||||
|
||||
//get ue device pointer for UE-ID 0 IMSI 1 and enb device pointer
|
||||
Ptr<NetDevice> ueDevice = ueLteDevs.Get (0);
|
||||
Ptr<NetDevice> enbDevice = enbLteDevs.Get (0);
|
||||
|
||||
/*
|
||||
* Schedule dedicated bearer de-activation at 'deActivateTime'
|
||||
* Instantiate De-activation in sequence (Time deActivateTime, Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice, uint8_t bearerId)
|
||||
* Instantiate De-activation using Simulator::Schedule() method which will initiate bearer de-activation after deActivateTime
|
||||
* Instantiate De-activation in sequence (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3)
|
||||
*/
|
||||
Time deActivateTime (Seconds (1.5));
|
||||
lteHelper->DeActivateDedicatedEpsBearer (deActivateTime,ueLteDevs.Get (0),enbLteDevs.Get (0), 2);
|
||||
Simulator::Schedule (deActivateTime, &LteHelper::DeActivateDedicatedEpsBearer, lteHelper, ueDevice, enbDevice, 2);
|
||||
|
||||
//stop simulation after 3 seconds
|
||||
Simulator::Stop (Seconds (3.0));
|
||||
|
||||
@@ -311,7 +311,7 @@ EmuEpcHelper::AddUe (Ptr<NetDevice> ueDevice, uint64_t imsi)
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
uint8_t
|
||||
EmuEpcHelper::ActivateEpsBearer (Ptr<NetDevice> ueDevice, uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << ueDevice << imsi);
|
||||
@@ -328,12 +328,13 @@ EmuEpcHelper::ActivateEpsBearer (Ptr<NetDevice> ueDevice, uint64_t imsi, Ptr<Epc
|
||||
Ipv4Address ueAddr = ueIpv4->GetAddress (interface, 0).GetLocal ();
|
||||
NS_LOG_LOGIC (" UE IP address: " << ueAddr); m_sgwPgwApp->SetUeAddress (imsi, ueAddr);
|
||||
|
||||
m_mme->AddBearer (imsi, tft, bearer);
|
||||
uint8_t bearerId = m_mme->AddBearer (imsi, tft, bearer);
|
||||
Ptr<LteUeNetDevice> ueLteDevice = ueDevice->GetObject<LteUeNetDevice> ();
|
||||
if (ueLteDevice)
|
||||
{
|
||||
Simulator::ScheduleNow (&EpcUeNas::ActivateEpsBearer, ueLteDevice->GetNas (), bearer, tft);
|
||||
}
|
||||
return bearerId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ public:
|
||||
virtual void AddEnb (Ptr<Node> enbNode, Ptr<NetDevice> lteEnbNetDevice, uint16_t cellId);
|
||||
virtual void AddUe (Ptr<NetDevice> ueLteDevice, uint64_t imsi);
|
||||
virtual void AddX2Interface (Ptr<Node> enbNode1, Ptr<Node> enbNode2);
|
||||
virtual void ActivateEpsBearer (Ptr<NetDevice> ueLteDevice, uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer);
|
||||
virtual uint8_t ActivateEpsBearer (Ptr<NetDevice> ueLteDevice, uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer);
|
||||
virtual Ptr<Node> GetPgwNode ();
|
||||
virtual Ipv4InterfaceContainer AssignUeIpv4Address (NetDeviceContainer ueDevices);
|
||||
virtual Ipv4Address GetUeDefaultGatewayAddress ();
|
||||
|
||||
@@ -101,7 +101,7 @@ public:
|
||||
* \param tft the Traffic Flow Template of the new bearer
|
||||
* \param bearer struct describing the characteristics of the EPS bearer to be activated
|
||||
*/
|
||||
virtual void ActivateEpsBearer (Ptr<NetDevice> ueLteDevice, uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer) = 0;
|
||||
virtual uint8_t ActivateEpsBearer (Ptr<NetDevice> ueLteDevice, uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer) = 0;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -813,18 +813,20 @@ LteHelper::AttachToClosestEnb (Ptr<NetDevice> ueDevice, NetDeviceContainer enbDe
|
||||
Attach (ueDevice, closestEnbDevice);
|
||||
}
|
||||
|
||||
void
|
||||
uint8_t
|
||||
LteHelper::ActivateDedicatedEpsBearer (NetDeviceContainer ueDevices, EpsBearer bearer, Ptr<EpcTft> tft)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
for (NetDeviceContainer::Iterator i = ueDevices.Begin (); i != ueDevices.End (); ++i)
|
||||
{
|
||||
ActivateDedicatedEpsBearer (*i, bearer, tft);
|
||||
uint8_t bearerId = ActivateDedicatedEpsBearer (*i, bearer, tft);
|
||||
return bearerId;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
uint8_t
|
||||
LteHelper::ActivateDedicatedEpsBearer (Ptr<NetDevice> ueDevice, EpsBearer bearer, Ptr<EpcTft> tft)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
@@ -832,7 +834,8 @@ LteHelper::ActivateDedicatedEpsBearer (Ptr<NetDevice> ueDevice, EpsBearer bearer
|
||||
NS_ASSERT_MSG (m_epcHelper != 0, "dedicated EPS bearers cannot be set up when the EPC is not used");
|
||||
|
||||
uint64_t imsi = ueDevice->GetObject<LteUeNetDevice> ()->GetImsi ();
|
||||
m_epcHelper->ActivateEpsBearer (ueDevice, imsi, tft, bearer);
|
||||
uint8_t bearerId = m_epcHelper->ActivateEpsBearer (ueDevice, imsi, tft, bearer);
|
||||
return bearerId;
|
||||
}
|
||||
|
||||
class DrbActivator : public SimpleRefCount<DrbActivator>
|
||||
@@ -956,13 +959,13 @@ LteHelper::DoHandoverRequest (Ptr<NetDevice> ueDev, Ptr<NetDevice> sourceEnbDev,
|
||||
}
|
||||
|
||||
void
|
||||
LteHelper::DeActivateDedicatedEpsBearer (Time deActivateTime, Ptr<NetDevice> ueDevice,Ptr<NetDevice> enbDevice, uint8_t bearerId)
|
||||
LteHelper::DeActivateDedicatedEpsBearer (Ptr<NetDevice> ueDevice,Ptr<NetDevice> enbDevice, uint8_t bearerId)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << ueDevice << bearerId);
|
||||
NS_ASSERT_MSG (m_epcHelper != 0, "Dedicated EPS bearers cannot be de-activated when the EPC is not used");
|
||||
NS_ASSERT_MSG (bearerId != 1, "Default bearer cannot be de-activated until and unless and UE is released");
|
||||
|
||||
Simulator::Schedule (deActivateTime, &LteHelper::DoDeActivateDedicatedEpsBearer, this, ueDevice, enbDevice, bearerId);
|
||||
DoDeActivateDedicatedEpsBearer (ueDevice, enbDevice, bearerId);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -397,7 +397,7 @@ public:
|
||||
* \param bearer the characteristics of the bearer to be activated
|
||||
* \param tft the Traffic Flow Template that identifies the traffic to go on this bearer
|
||||
*/
|
||||
void ActivateDedicatedEpsBearer (NetDeviceContainer ueDevices, EpsBearer bearer, Ptr<EpcTft> tft);
|
||||
uint8_t ActivateDedicatedEpsBearer (NetDeviceContainer ueDevices, EpsBearer bearer, Ptr<EpcTft> tft);
|
||||
|
||||
/**
|
||||
* Activate a dedicated EPS bearer on a given UE device.
|
||||
@@ -406,11 +406,10 @@ public:
|
||||
* \param bearer the characteristics of the bearer to be activated
|
||||
* \param tft the Traffic Flow Template that identifies the traffic to go on this bearer.
|
||||
*/
|
||||
void ActivateDedicatedEpsBearer (Ptr<NetDevice> ueDevice, EpsBearer bearer, Ptr<EpcTft> tft);
|
||||
uint8_t ActivateDedicatedEpsBearer (Ptr<NetDevice> ueDevice, EpsBearer bearer, Ptr<EpcTft> tft);
|
||||
|
||||
/**
|
||||
* \brief Manually trigger dedicated bearer de-activation at specific simulation time
|
||||
* \param deActivateTime when the dedicated bearer de-activation to be initiated
|
||||
* \param ueDevice the UE on which dedicated bearer to be de-activated must be of the type LteUeNetDevice
|
||||
* \param enbDevice eNB, must be of the type LteEnbNetDevice
|
||||
* \param bearerId Bearer Identity which is to be de-activated
|
||||
@@ -418,7 +417,7 @@ public:
|
||||
* \warning Requires the use of EPC mode. See SetEpcHelper() method.
|
||||
*/
|
||||
|
||||
void DeActivateDedicatedEpsBearer (Time deActivateTime, Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice, uint8_t bearerId);
|
||||
void DeActivateDedicatedEpsBearer (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice, uint8_t bearerId);
|
||||
/**
|
||||
* Create an X2 interface between all the eNBs in a given set.
|
||||
*
|
||||
|
||||
@@ -292,7 +292,7 @@ PointToPointEpcHelper::AddUe (Ptr<NetDevice> ueDevice, uint64_t imsi)
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
uint8_t
|
||||
PointToPointEpcHelper::ActivateEpsBearer (Ptr<NetDevice> ueDevice, uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << ueDevice << imsi);
|
||||
@@ -309,12 +309,13 @@ PointToPointEpcHelper::ActivateEpsBearer (Ptr<NetDevice> ueDevice, uint64_t imsi
|
||||
Ipv4Address ueAddr = ueIpv4->GetAddress (interface, 0).GetLocal ();
|
||||
NS_LOG_LOGIC (" UE IP address: " << ueAddr); m_sgwPgwApp->SetUeAddress (imsi, ueAddr);
|
||||
|
||||
m_mme->AddBearer (imsi, tft, bearer);
|
||||
uint8_t bearerId = m_mme->AddBearer (imsi, tft, bearer);
|
||||
Ptr<LteUeNetDevice> ueLteDevice = ueDevice->GetObject<LteUeNetDevice> ();
|
||||
if (ueLteDevice)
|
||||
{
|
||||
ueLteDevice->GetNas ()->ActivateEpsBearer (bearer, tft);
|
||||
}
|
||||
return bearerId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ public:
|
||||
virtual void AddEnb (Ptr<Node> enbNode, Ptr<NetDevice> lteEnbNetDevice, uint16_t cellId);
|
||||
virtual void AddUe (Ptr<NetDevice> ueLteDevice, uint64_t imsi);
|
||||
virtual void AddX2Interface (Ptr<Node> enbNode1, Ptr<Node> enbNode2);
|
||||
virtual void ActivateEpsBearer (Ptr<NetDevice> ueLteDevice, uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer);
|
||||
virtual uint8_t ActivateEpsBearer (Ptr<NetDevice> ueLteDevice, uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer);
|
||||
virtual Ptr<Node> GetPgwNode ();
|
||||
virtual Ipv4InterfaceContainer AssignUeIpv4Address (NetDeviceContainer ueDevices);
|
||||
virtual Ipv4Address GetUeDefaultGatewayAddress ();
|
||||
|
||||
@@ -104,7 +104,7 @@ EpcMme::AddUe (uint64_t imsi)
|
||||
ueInfo->bearerCounter = 0;
|
||||
}
|
||||
|
||||
void
|
||||
uint8_t
|
||||
EpcMme::AddBearer (uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << imsi);
|
||||
@@ -116,6 +116,7 @@ EpcMme::AddBearer (uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer)
|
||||
bearerInfo.tft = tft;
|
||||
bearerInfo.bearer = bearer;
|
||||
it->second->bearersToBeActivated.push_back (bearerInfo);
|
||||
return bearerInfo.bearerId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ public:
|
||||
* \param tft traffic flow template of the bearer
|
||||
* \param bearer QoS characteristics of the bearer
|
||||
*/
|
||||
void AddBearer (uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer);
|
||||
uint8_t AddBearer (uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer);
|
||||
|
||||
|
||||
private:
|
||||
|
||||
@@ -71,6 +71,7 @@ public:
|
||||
|
||||
/**
|
||||
* \brief As per 3GPP TS 23.401 Release 9 V9.5.0 Figure 5.4.4.2-1 eNB sends indication of Bearer Release to MME
|
||||
* \brief As per 3GPP TS version 9.8.0 section 8.2.3.2.2, the eNB initiates the procedure by sending an E-RAB RELEASE INDICATION message towards MME
|
||||
* \param mmeUeS1Id in practice, we use the IMSI
|
||||
* \param enbUeS1Id in practice, we use the RNTI
|
||||
* \param erabToBeReleaseIndication, List of bearers to be deactivated
|
||||
|
||||
@@ -91,7 +91,7 @@ LenaTestBearerDeactivateSuite::LenaTestBearerDeactivateSuite ()
|
||||
estThrPssDl_1.push_back (132000); // User 1 estimated TTI throughput from PSS
|
||||
estThrPssDl_1.push_back (132000); // User 2 estimated TTI throughput from PSS
|
||||
|
||||
AddTestCase (new LenaDeactivateBearerTestCase (dist_1,estThrPssDl_1,packetSize_1,1,errorModel), TestCase::QUICK);
|
||||
AddTestCase (new LenaDeactivateBearerTestCase (dist_1,estThrPssDl_1,packetSize_1,1,errorModel,true), TestCase::QUICK);
|
||||
}
|
||||
|
||||
static LenaTestBearerDeactivateSuite lenaTestBearerDeactivateSuite;
|
||||
@@ -110,14 +110,15 @@ LenaDeactivateBearerTestCase::BuildNameString (uint16_t nUser, std::vector<uint1
|
||||
return oss.str ();
|
||||
}
|
||||
|
||||
LenaDeactivateBearerTestCase::LenaDeactivateBearerTestCase (std::vector<uint16_t> dist, std::vector<uint32_t> estThrPssDl, std::vector<uint16_t> packetSize, uint16_t interval,bool errorModelEnabled)
|
||||
LenaDeactivateBearerTestCase::LenaDeactivateBearerTestCase (std::vector<uint16_t> dist, std::vector<uint32_t> estThrPssDl, std::vector<uint16_t> packetSize, uint16_t interval,bool errorModelEnabled, bool useIdealRrc)
|
||||
: TestCase (BuildNameString (dist.size (), dist)),
|
||||
m_nUser (dist.size ()),
|
||||
m_dist (dist),
|
||||
m_packetSize (packetSize),
|
||||
m_interval (interval),
|
||||
m_estThrPssDl (estThrPssDl),
|
||||
m_errorModelEnabled (errorModelEnabled)
|
||||
m_errorModelEnabled (errorModelEnabled),
|
||||
m_useIdealRrc (useIdealRrc)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -292,16 +293,16 @@ LenaDeactivateBearerTestCase::DoRun (void)
|
||||
rlcStats->SetAttribute ("EpochDuration", TimeValue (Seconds (statsDuration)));
|
||||
|
||||
|
||||
//get ue device pointer for UE-ID 0 IMSI 1
|
||||
//get ue device pointer for UE-ID 0 IMSI 1 and enb device pointer
|
||||
Ptr<NetDevice> ueDevice = ueDevs.Get (0);
|
||||
Time deActivateTime (Seconds (1.5));
|
||||
Ptr<NetDevice> enbDevice = enbDevs.Get (0);
|
||||
|
||||
/*
|
||||
* Schedule dedicated bearer de-activation at 'deActivateTime'
|
||||
* Instantiate De-activation in sequence (Time deActivateTime, Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice, uint8_t bearerId)
|
||||
* Instantiate De-activation using Simulator::Schedule() method which will initiate bearer de-activation after deActivateTime
|
||||
* Instantiate De-activation in sequence (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3)
|
||||
*/
|
||||
|
||||
lteHelper->DeActivateDedicatedEpsBearer (deActivateTime,ueDevice,enbDevs.Get (0), 2);
|
||||
Time deActivateTime (Seconds (1.5));
|
||||
Simulator::Schedule (deActivateTime, &LteHelper::DeActivateDedicatedEpsBearer, lteHelper, ueDevice, enbDevice, 2);
|
||||
|
||||
//stop simulation after 3 seconds
|
||||
Simulator::Stop (Seconds (3.0));
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace ns3 {
|
||||
class LenaDeactivateBearerTestCase : public TestCase
|
||||
{
|
||||
public:
|
||||
LenaDeactivateBearerTestCase (std::vector<uint16_t> dist, std::vector<uint32_t> estThrPssDl, std::vector<uint16_t> packetSize, uint16_t interval, bool errorModelEnabled);
|
||||
LenaDeactivateBearerTestCase (std::vector<uint16_t> dist, std::vector<uint32_t> estThrPssDl, std::vector<uint16_t> packetSize, uint16_t interval, bool errorModelEnabled, bool useIdealRrc);
|
||||
virtual ~LenaDeactivateBearerTestCase ();
|
||||
|
||||
private:
|
||||
@@ -22,6 +22,7 @@ private:
|
||||
uint16_t m_interval; // ms
|
||||
std::vector<uint32_t> m_estThrPssDl;
|
||||
bool m_errorModelEnabled;
|
||||
bool m_useIdealRrc;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user