addressed code review comments
authorgauravsathe
Tue, 23 Dec 2014 16:17:53 +0530
changeset 11171 9674d2e4eeb2
parent 11170 e1da5648e87a
child 11172 d2c2b7934927
addressed code review comments
src/lte/bindings/modulegen__gcc_ILP32.py
src/lte/doc/source/lte-testing.rst
src/lte/examples/lena-deactivate-bearer.cc
src/lte/helper/emu-epc-helper.cc
src/lte/helper/emu-epc-helper.h
src/lte/helper/epc-helper.h
src/lte/helper/lte-helper.cc
src/lte/helper/lte-helper.h
src/lte/helper/point-to-point-epc-helper.cc
src/lte/helper/point-to-point-epc-helper.h
src/lte/model/epc-mme.cc
src/lte/model/epc-mme.h
src/lte/model/epc-s1ap-sap.h
src/lte/test/lte-test-deactivate-bearer.cc
src/lte/test/lte-test-deactivate-bearer.h
--- a/src/lte/bindings/modulegen__gcc_ILP32.py	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/bindings/modulegen__gcc_ILP32.py	Tue Dec 23 16:17:53 2014 +0530
@@ -12845,9 +12845,9 @@
     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 @@
     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 @@
     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 @@
     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]
--- a/src/lte/doc/source/lte-testing.rst	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/doc/source/lte-testing.rst	Tue Dec 23 16:17:53 2014 +0530
@@ -122,6 +122,34 @@
 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
--- a/src/lte/examples/lena-deactivate-bearer.cc	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/examples/lena-deactivate-bearer.cc	Tue Dec 23 16:17:53 2014 +0530
@@ -213,12 +213,16 @@
   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));
--- a/src/lte/helper/emu-epc-helper.cc	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/helper/emu-epc-helper.cc	Tue Dec 23 16:17:53 2014 +0530
@@ -311,7 +311,7 @@
   
 }
 
-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 @@
   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;
 }
 
 
--- a/src/lte/helper/emu-epc-helper.h	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/helper/emu-epc-helper.h	Tue Dec 23 16:17:53 2014 +0530
@@ -71,7 +71,7 @@
   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 ();
--- a/src/lte/helper/epc-helper.h	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/helper/epc-helper.h	Tue Dec 23 16:17:53 2014 +0530
@@ -101,7 +101,7 @@
    * \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;
 
 
   /** 
--- a/src/lte/helper/lte-helper.cc	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/helper/lte-helper.cc	Tue Dec 23 16:17:53 2014 +0530
@@ -813,18 +813,20 @@
   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 @@
   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 @@
 }
 
 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
--- a/src/lte/helper/lte-helper.h	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/helper/lte-helper.h	Tue Dec 23 16:17:53 2014 +0530
@@ -397,7 +397,7 @@
    * \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 @@
    * \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 @@
    *  \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.
    *
--- a/src/lte/helper/point-to-point-epc-helper.cc	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/helper/point-to-point-epc-helper.cc	Tue Dec 23 16:17:53 2014 +0530
@@ -292,7 +292,7 @@
 
 }
 
-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 @@
   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;
 }
 
 
--- a/src/lte/helper/point-to-point-epc-helper.h	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/helper/point-to-point-epc-helper.h	Tue Dec 23 16:17:53 2014 +0530
@@ -69,7 +69,7 @@
   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 ();
--- a/src/lte/model/epc-mme.cc	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/model/epc-mme.cc	Tue Dec 23 16:17:53 2014 +0530
@@ -104,7 +104,7 @@
   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 @@
   bearerInfo.tft = tft;
   bearerInfo.bearer = bearer;  
   it->second->bearersToBeActivated.push_back (bearerInfo);
+  return bearerInfo.bearerId;
 }
 
 
--- a/src/lte/model/epc-mme.h	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/model/epc-mme.h	Tue Dec 23 16:17:53 2014 +0530
@@ -106,7 +106,7 @@
    * \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:
--- a/src/lte/model/epc-s1ap-sap.h	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/model/epc-s1ap-sap.h	Tue Dec 23 16:17:53 2014 +0530
@@ -71,6 +71,7 @@
 
   /**
     * \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
--- a/src/lte/test/lte-test-deactivate-bearer.cc	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/test/lte-test-deactivate-bearer.cc	Tue Dec 23 16:17:53 2014 +0530
@@ -91,7 +91,7 @@
   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 @@
   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 @@
   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));
--- a/src/lte/test/lte-test-deactivate-bearer.h	Fri Nov 28 17:10:09 2014 +0100
+++ b/src/lte/test/lte-test-deactivate-bearer.h	Tue Dec 23 16:17:53 2014 +0530
@@ -10,7 +10,7 @@
 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 @@
   uint16_t m_interval;    // ms
   std::vector<uint32_t> m_estThrPssDl;
   bool m_errorModelEnabled;
+  bool m_useIdealRrc;
 };