telephonyserverplugins/common_tsy/test/integration/src/cctsyintegrationtestpacketcontext.cpp
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
child 26 8767c6acf334
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/test/integration/src/cctsyintegrationtestpacketcontext.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,14451 @@
+/*
+* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ * Test step definitions for the PacketContext functional unit.
+ * @internalTechnology
+ */
+
+#include <etelmm.h>
+#include <etelpckt.h>
+#include <pcktcs.h>
+#include "cctsyintegrationtestpacketcontext.h"
+#include "chttpdownload.h"
+
+	
+CCTSYIntegrationTestPacketContextBase::CCTSYIntegrationTestPacketContextBase(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestSuiteStepBase(aEtelSessionMgr), iPacketServiceTestHelper(*this), iNetworkTestHelper(*this)
+/**
+ * Constructor
+ */
+	{
+	}
+
+CCTSYIntegrationTestPacketContextBase::~CCTSYIntegrationTestPacketContextBase()
+/*
+ * Destructor
+ */
+	{
+	}
+
+
+void CCTSYIntegrationTestPacketContextBase::SetAttachModeToWhenPossibleAndWaitForAttachL(RPacketService& aPacketService)
+/**
+ * Attaches the phone to the packet service by setting the
+ * attach mode to RPacketService::EAttachWhenPossible. Requests
+ * that the phone attaches to the packet service and waits for
+ * attach to complete.
+ * 
+ * @param aPacketService Reference to packet service subsession.
+ */
+    {
+    RPacketService::TAttachMode attachMode;
+    CHECK_EQUALS_L(aPacketService.GetAttachMode(attachMode), KErrNone, _L("RPacketService::GetAttachMode returned with an error."));
+
+    TExtEtelRequestStatus notifyServiceStatusChStatus(aPacketService, EPacketNotifyStatusChange);
+    CleanupStack::PushL(notifyServiceStatusChStatus);
+    RPacketService::TStatus packetServiceStatus;
+    aPacketService.NotifyStatusChange(notifyServiceStatusChStatus, packetServiceStatus);
+
+    if(attachMode != RPacketService::EAttachWhenPossible)
+		{
+		CHECK_EQUALS_L(aPacketService.SetAttachMode(RPacketService::EAttachWhenPossible), KErrNone,
+					 _L("RPacketService::SetAttachMode returned with an error."));
+		}
+
+    CHECK_EQUALS_L(aPacketService.GetAttachMode(attachMode), KErrNone, _L("RPacketService::GetAttachMode returned with an error."));
+    CHECK_EQUALS_L(attachMode, RPacketService::EAttachWhenPossible, _L("RPacketService::GetAttachMode did not return EAttachWhenPossible."));
+
+    // Ensure phone is attached to the packet service (RPacketService::GetStatus returns EStatusAttached).
+	RPacketService::TStatus packetStatus;
+	CHECK_EQUALS_L(aPacketService.GetStatus(packetStatus), KErrNone, _L("RPacketService::GetStatus returned with an error"));
+	
+	// Wait for phone to attach to packet service if it is not attached.
+	if (packetStatus != RPacketService::EStatusAttached)
+		{
+        iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+				aPacketService,
+				notifyServiceStatusChStatus,
+				packetServiceStatus, 
+				RPacketService::EStatusAttached,
+				KErrNone);
+        CHECK_EQUALS_L(aPacketService.GetStatus(packetStatus), KErrNone, _L("RPacketService::GetStatus returned with an error"));
+        CHECK_EQUALS_L(packetStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus did not return EStatusAttached"));
+		}
+
+    CleanupStack::PopAndDestroy(1, &notifyServiceStatusChStatus);
+    }
+
+
+TInt CCTSYIntegrationTestPacketContextBase::AddPacketFilterV2ToContextL(RPacketContext& aPacketContext, TInt aId, TInt aErrCode)
+/**
+ * Adds a packet filter to context.
+ * 
+ * @param aPacketContext Reference to packet context subsession.
+ * @param aId the id of the filter to set, which is also an identifyer to one of three predefined filters
+ * @param aErrCode  the error code that the AddPacketFilter should return, default KErrNone.
+ * 
+ * @return Request status value returned by
+ *         RPacketContext::AddPacketFilter call.
+ */
+    {
+    RPacketContext::TPacketFilterV2 packetFilterV2;
+    FillPacketFilter(packetFilterV2,aId);
+    
+	RPacketContext::TPacketFilterV2Pckg packetFilterV2pckg(packetFilterV2);
+	
+	TExtEtelRequestStatus addFilterStatus(aPacketContext, EPacketContextAddPacketFilter); 
+    CleanupStack::PushL(addFilterStatus);
+	aPacketContext.AddPacketFilter(addFilterStatus, packetFilterV2pckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(addFilterStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::AddPacketFilter timed out"))
+    ASSERT_EQUALS(addFilterStatus.Int(), aErrCode,
+                  _L("RPacketContext::AddPacketFilter did returned the expected value"))
+
+    TInt ret = addFilterStatus.Int();
+    CleanupStack::PopAndDestroy(&addFilterStatus);
+	return ret;
+    }
+
+// Helper macro, same as ASSERT_EQUALS but also change a local parameter (ret) to EFalse if the parameters are not equal
+// One should define the variable TBool ret before calling this macro, and then one can use this variable  to know if any of the local macros failed.
+#define LOCAL_ASSERT_EQUALS(result,expected,msg)  \
+    { \
+    TBool tempLocalAssertEqualsRet = ((result)==(expected)); \
+    ASSERT_TRUE(tempLocalAssertEqualsRet,msg); \
+    if(!tempLocalAssertEqualsRet)   \
+        { \
+        ret=EFalse; \
+        }  \
+    }
+
+// Helper macro, same as ASSERT_TRUE but also change a local parameter (ret) to EFalse if the parameters are not equal
+// One should define the variable TBool ret before calling this macro, and then one can use this variable  to know if any of the local macros failed.
+#define LOCAL_ASSERT_TRUE(value,msg) LOCAL_ASSERT_EQUALS((TBool)(value),(TBool)ETrue,msg);
+
+
+TUint CCTSYIntegrationTestPacketContextBase::FindLSB(TUint aNumber)
+/**
+ * Finds the least significant bit in a number
+ * 
+ * @param aNumber The number
+ * @return The LSB of aNumber
+ */
+	{
+	if(aNumber==0)
+		{
+		return 0;
+		}
+	TUint bit=1;
+	while(ETrue)
+		{
+		if((aNumber&bit)!=0)
+			{
+			return bit;
+			}
+		bit=bit*2;
+		}
+	}
+
+TUint CCTSYIntegrationTestPacketContextBase::FindMSB(TUint aNumber)
+/**
+ * Finds the most significant bit in a number
+ * 
+ * @param aNumber The number
+ * @return The MSB of aNumber
+ */
+	{
+	if(aNumber==0)
+		{
+		return 0;
+		}
+	TUint bit=1;
+	while(ETrue)
+		{
+		if((aNumber&bit)!=0)
+			{
+			aNumber=(aNumber^bit);
+			if(aNumber==0)
+				{
+				return bit;
+				}
+			}
+		bit=bit*2;
+		}
+	}
+
+void CCTSYIntegrationTestPacketContextBase::FillPacketFilter(RPacketContext::TPacketFilterV2 &aFilter, TInt aId)
+/**
+ * Fill a packet filter object with actual values.
+ * 
+ * @param aFilter Reference to the structure to fill.
+ * @param aId the id of the filter to set, which is also an identifyer to one of three predefined filters
+ * 
+ */
+    {
+	aFilter.iId = aId;
+    switch(aId)
+        {
+        case 1:
+        {
+        aFilter.iEvaluationPrecedenceIndex = 0;
+        aFilter.iSrcAddr[0] = 0xCF;
+        aFilter.iSrcAddr[1] = 0xFF;
+        aFilter.iSrcAddr[2] = 0xFF;
+        aFilter.iSrcAddr[3] = 0x11;
+        aFilter.iSrcAddrSubnetMask[0] = 0xC0;
+        aFilter.iSrcAddrSubnetMask[1] = 0xC1;
+        aFilter.iSrcAddrSubnetMask[2] = 0xF2;
+        aFilter.iSrcAddrSubnetMask[3] = 0x51;
+        aFilter.iProtocolNumberOrNextHeader = 6;
+        aFilter.iSrcPortMin = 2;
+        aFilter.iSrcPortMax = 65000;
+        aFilter.iDestPortMin = 8;
+        aFilter.iDestPortMax = 65100;
+        aFilter.iTOSorTrafficClass = 0x3F8C;
+        aFilter.iFlowLabel = 0;
+        aFilter.iIPSecSPI = 0;
+        break;
+        }
+        case 2:
+        {
+        aFilter.iEvaluationPrecedenceIndex = 255;
+        aFilter.iSrcAddr[0] = 0x21;
+        aFilter.iSrcAddr[1] = 0xD2;
+        aFilter.iSrcAddr[2] = 0x3F;
+        aFilter.iSrcAddr[3] = 0x1A;
+        aFilter.iSrcAddrSubnetMask[0] = 0x2A;
+        aFilter.iSrcAddrSubnetMask[1] = 0x2B;
+        aFilter.iSrcAddrSubnetMask[2] = 0xFF;
+        aFilter.iSrcAddrSubnetMask[3] = 0x3F;
+        aFilter.iProtocolNumberOrNextHeader = 8;
+        aFilter.iIPSecSPI = 0x0F88F000;
+        aFilter.iTOSorTrafficClass = 0x2F77;
+        aFilter.iDestPortMax = 0;
+        aFilter.iDestPortMin = 0;
+        aFilter.iFlowLabel = 0;
+        aFilter.iSrcPortMax = 0;
+        aFilter.iSrcPortMin = 0;        
+        break;
+        }
+        case 3:
+        {
+        aFilter.iEvaluationPrecedenceIndex = 127;
+        aFilter.iSrcAddr[0] = 0xEF;
+        aFilter.iSrcAddr[1] = 0xAF;
+        aFilter.iSrcAddr[2] = 0xBF;
+        aFilter.iSrcAddr[3] = 0x21;
+        aFilter.iSrcAddrSubnetMask[0] = 0x10;
+        aFilter.iSrcAddrSubnetMask[1] = 0x21;
+        aFilter.iSrcAddrSubnetMask[2] = 0x32;
+        aFilter.iSrcAddrSubnetMask[3] = 0x41;
+        aFilter.iProtocolNumberOrNextHeader = 10;
+        aFilter.iSrcPortMin = 0;
+        aFilter.iSrcPortMax = 0;
+        aFilter.iDestPortMin = 0;
+        aFilter.iDestPortMax = 0;
+        aFilter.iTOSorTrafficClass = 0x4F8C;
+        aFilter.iFlowLabel = 0;
+        aFilter.iIPSecSPI = 0;
+        }
+         case 4:
+        {
+        aFilter.iEvaluationPrecedenceIndex = 0;
+        aFilter.iSrcAddr[0] = 0xD0;
+        aFilter.iSrcAddr[1] = 0xFF;
+        aFilter.iSrcAddr[2] = 0xFF;
+        aFilter.iSrcAddr[3] = 0x11;
+        aFilter.iSrcAddrSubnetMask[0] = 0xC1;
+        aFilter.iSrcAddrSubnetMask[1] = 0xC1;
+        aFilter.iSrcAddrSubnetMask[2] = 0xF2;
+        aFilter.iSrcAddrSubnetMask[3] = 0x51;
+        aFilter.iProtocolNumberOrNextHeader = 12;
+        aFilter.iSrcPortMin = 2;
+        aFilter.iSrcPortMax = 65000;
+        aFilter.iDestPortMin = 8;
+        aFilter.iDestPortMax = 65100;
+        aFilter.iTOSorTrafficClass = 0x3F8C;
+        aFilter.iFlowLabel = 0;
+        aFilter.iIPSecSPI = 0;
+        break;
+		}
+         case 5:
+        {
+        aFilter.iEvaluationPrecedenceIndex = 127;
+        aFilter.iSrcAddr[0] = 0xD1;
+        aFilter.iSrcAddr[1] = 0xFF;
+        aFilter.iSrcAddr[2] = 0xFF;
+        aFilter.iSrcAddr[3] = 0x11;
+        aFilter.iSrcAddrSubnetMask[0] = 0xC2;
+        aFilter.iSrcAddrSubnetMask[1] = 0xC1;
+        aFilter.iSrcAddrSubnetMask[2] = 0xF2;
+        aFilter.iSrcAddrSubnetMask[3] = 0x51;
+        aFilter.iProtocolNumberOrNextHeader = 14;
+        aFilter.iSrcPortMin = 2;
+        aFilter.iSrcPortMax = 65000;
+        aFilter.iDestPortMin = 8;
+        aFilter.iDestPortMax = 65100;
+        aFilter.iTOSorTrafficClass = 0x3F8C;
+        aFilter.iFlowLabel = 0;
+        aFilter.iIPSecSPI = 0;
+        break;
+        }
+        case 6:
+        {
+        aFilter.iEvaluationPrecedenceIndex = 255;
+        aFilter.iSrcAddr[0] = 0xD2;
+        aFilter.iSrcAddr[1] = 0xFF;
+        aFilter.iSrcAddr[2] = 0xFF;
+        aFilter.iSrcAddr[3] = 0x11;
+        aFilter.iSrcAddrSubnetMask[0] = 0xC3;
+        aFilter.iSrcAddrSubnetMask[1] = 0xC1;
+        aFilter.iSrcAddrSubnetMask[2] = 0xF2;
+        aFilter.iSrcAddrSubnetMask[3] = 0x51;
+        aFilter.iProtocolNumberOrNextHeader = 16;
+        aFilter.iSrcPortMin = 2;
+        aFilter.iSrcPortMax = 65000;
+        aFilter.iDestPortMin = 8;
+        aFilter.iDestPortMax = 65100;
+        aFilter.iTOSorTrafficClass = 0x3F8C;
+        aFilter.iFlowLabel = 0;
+        aFilter.iIPSecSPI = 0;
+        break;
+        }
+        case 7:
+        {
+        aFilter.iEvaluationPrecedenceIndex = 0;
+        aFilter.iSrcAddr[0] = 0xD3;
+        aFilter.iSrcAddr[1] = 0xFF;
+        aFilter.iSrcAddr[2] = 0xFF;
+        aFilter.iSrcAddr[3] = 0x11;
+        aFilter.iSrcAddrSubnetMask[0] = 0xC4;
+        aFilter.iSrcAddrSubnetMask[1] = 0xC1;
+        aFilter.iSrcAddrSubnetMask[2] = 0xF2;
+        aFilter.iSrcAddrSubnetMask[3] = 0x51;
+        aFilter.iProtocolNumberOrNextHeader = 18;
+        aFilter.iSrcPortMin = 2;
+        aFilter.iSrcPortMax = 65000;
+        aFilter.iDestPortMin = 8;
+        aFilter.iDestPortMax = 65100;
+        aFilter.iTOSorTrafficClass = 0x3F8C;
+        aFilter.iFlowLabel = 0;
+        aFilter.iIPSecSPI = 0;
+        break;
+        }
+        case 8:
+        default:
+        {
+        aFilter.iEvaluationPrecedenceIndex = 127;
+        aFilter.iSrcAddr[0] = 0xD4;
+        aFilter.iSrcAddr[1] = 0xFF;
+        aFilter.iSrcAddr[2] = 0xFF;
+        aFilter.iSrcAddr[3] = 0x11;
+        aFilter.iSrcAddrSubnetMask[0] = 0xC5;
+        aFilter.iSrcAddrSubnetMask[1] = 0xC1;
+        aFilter.iSrcAddrSubnetMask[2] = 0xF2;
+        aFilter.iSrcAddrSubnetMask[3] = 0x51;
+        aFilter.iProtocolNumberOrNextHeader = 18;
+        aFilter.iSrcPortMin = 2;
+        aFilter.iSrcPortMax = 65000;
+        aFilter.iDestPortMin = 8;
+        aFilter.iDestPortMax = 65100;
+        aFilter.iTOSorTrafficClass = 0x3F8C;
+        aFilter.iFlowLabel = 0;
+        aFilter.iIPSecSPI = 0;
+        break;
+        }
+        }
+    }
+
+
+TBool CCTSYIntegrationTestPacketContextBase::CompareFilters(const RPacketContext::TPacketFilterV2 &aFilterOne,
+                                                            const RPacketContext::TPacketFilterV2 &aFilterTwo)
+/**
+ * Compare two packet filter objects.
+ * 
+ * @param aFilterOne Reference to the structure with the first filter.
+ * @param aFilterOne Reference to the structure with the second filter.
+ *
+ * @return ETrue if both filters are the same
+ * 
+ */
+    {
+    TBool ret = ETrue;
+
+    LOCAL_ASSERT_EQUALS(aFilterOne.ExtensionId(), aFilterTwo.ExtensionId() ,_L("RPacketContext::GetPacketFilterInfo returned wrong iExtensionId"));
+    LOCAL_ASSERT_EQUALS(aFilterOne.iId, aFilterTwo.iId ,_L("RPacketContext::GetPacketFilterInfo returned wrong iId"));
+    LOCAL_ASSERT_EQUALS(aFilterOne.iEvaluationPrecedenceIndex, aFilterTwo.iEvaluationPrecedenceIndex ,_L("RPacketContext::GetPacketFilterInfo returned wrong iEvaluationPrecedenceIndex"));
+    for(TInt i=0;i<RPacketContext::KIPAddressSize;++i)
+        {
+        LOCAL_ASSERT_EQUALS(aFilterOne.iSrcAddr[i], aFilterTwo.iSrcAddr[i] ,_L("RPacketContext::GetPacketFilterInfo returned wrong iSrcAddr"));
+        LOCAL_ASSERT_EQUALS(aFilterOne.iSrcAddrSubnetMask[i], aFilterTwo.iSrcAddrSubnetMask[i] ,_L("RPacketContext::GetPacketFilterInfo returned wrong iSrcAddrSubnetMask"));
+        }
+    LOCAL_ASSERT_EQUALS(aFilterOne.iProtocolNumberOrNextHeader, aFilterTwo.iProtocolNumberOrNextHeader ,_L("RPacketContext::GetPacketFilterInfo returned wrong iProtocolNumberOrNextHeader"));
+    LOCAL_ASSERT_EQUALS(aFilterOne.iSrcPortMin, aFilterTwo.iSrcPortMin ,_L("RPacketContext::GetPacketFilterInfo returned wrong iSrcPortMin"));
+    LOCAL_ASSERT_EQUALS(aFilterOne.iSrcPortMax, aFilterTwo.iSrcPortMax ,_L("RPacketContext::GetPacketFilterInfo returned wrong iSrcPortMax"));
+    LOCAL_ASSERT_EQUALS(aFilterOne.iDestPortMin, aFilterTwo.iDestPortMin ,_L("RPacketContext::GetPacketFilterInfo returned wrong iDestPortMin"));
+    LOCAL_ASSERT_EQUALS(aFilterOne.iDestPortMax, aFilterTwo.iDestPortMax ,_L("RPacketContext::GetPacketFilterInfo returned wrong iDestPortMax"));
+    LOCAL_ASSERT_EQUALS(aFilterOne.iIPSecSPI, aFilterTwo.iIPSecSPI ,_L("RPacketContext::GetPacketFilterInfo returned wrong iIPSecSPI"));
+    LOCAL_ASSERT_EQUALS(aFilterOne.iTOSorTrafficClass, aFilterTwo.iTOSorTrafficClass ,_L("RPacketContext::GetPacketFilterInfo returned wrong iTOSorTrafficClass"));
+    LOCAL_ASSERT_EQUALS(aFilterOne.iFlowLabel, aFilterTwo.iFlowLabel ,_L("RPacketContext::GetPacketFilterInfo returned wrong iFlowLabel"));
+
+
+    return ret;
+    }
+
+template<>
+void CCTSYIntegrationTestPacketContextBase::FillParametersFromCapabilities(RPacketQoS::TQoSGPRSRequested &aParameters,
+                                                                           const RPacketQoS::TQoSCapsGPRS &aCapabilities)
+/**
+ * fill a RPacketQoS::TQoSGPRSRequested object from a given RPacketQoS::TQoSCapsGPRS capabilities
+ * 
+ * @param aParameters Reference to the structure of the parameters to fill.
+ * @param aCapabilities Reference to the structure with the capabilities to use.
+ *
+ */
+    {
+    aParameters.iMinDelay = static_cast<RPacketQoS::TQoSDelay>(FindMSB(aCapabilities.iDelay));
+	aParameters.iReqDelay = static_cast<RPacketQoS::TQoSDelay>(FindLSB(aCapabilities.iDelay));
+	aParameters.iMinMeanThroughput = static_cast<RPacketQoS::TQoSMeanThroughput>(FindMSB(aCapabilities.iMean));
+	aParameters.iReqMeanThroughput = static_cast<RPacketQoS::TQoSMeanThroughput>(FindLSB(aCapabilities.iMean));
+	aParameters.iMinPeakThroughput = static_cast<RPacketQoS::TQoSPeakThroughput>(FindMSB(aCapabilities.iPeak));
+	aParameters.iReqPeakThroughput = static_cast<RPacketQoS::TQoSPeakThroughput>(FindLSB(aCapabilities.iPeak));
+	aParameters.iMinReliability = static_cast<RPacketQoS::TQoSReliability>(FindMSB(aCapabilities.iReliability));
+	aParameters.iReqReliability = static_cast<RPacketQoS::TQoSReliability>(FindLSB(aCapabilities.iReliability));
+	aParameters.iReqPrecedence = static_cast<RPacketQoS::TQoSPrecedence>(FindMSB(aCapabilities.iPrecedence));
+	aParameters.iMinPrecedence = static_cast<RPacketQoS::TQoSPrecedence>(FindLSB(aCapabilities.iPrecedence));
+    
+    }
+
+
+template<>
+void CCTSYIntegrationTestPacketContextBase::FillParametersFromCapabilities(RPacketQoS::TQoSR99_R4Requested &aParameters,
+                                                                           const RPacketQoS::TQoSCapsR99_R4 &aCapabilities)
+/**
+ * fill a RPacketQoS::TQoSR99_R4Requested object from a given RPacketQoS::TQoSCapsR99_R4 capabilities
+ * 
+ * @param aParameters Reference to the structure of the parameters to fill.
+ * @param aCapabilities Reference to the structure with the capabilities to use.
+ *
+ */
+    {
+    aParameters.iReqTrafficClass = static_cast<RPacketQoS::TTrafficClass>(FindLSB(aCapabilities.iTrafficClass));
+    aParameters.iMinTrafficClass = static_cast<RPacketQoS::TTrafficClass>(FindMSB(aCapabilities.iTrafficClass));
+    aParameters.iReqDeliveryOrderReqd = static_cast<RPacketQoS::TDeliveryOrder>(FindLSB(aCapabilities.iDeliveryOrderReqd));
+    aParameters.iMinDeliveryOrderReqd = static_cast<RPacketQoS::TDeliveryOrder>(FindMSB(aCapabilities.iDeliveryOrderReqd));
+    aParameters.iReqDeliverErroneousSDU = static_cast<RPacketQoS::TErroneousSDUDelivery>(FindLSB(aCapabilities.iDeliverErroneousSDU));
+    aParameters.iMinDeliverErroneousSDU = static_cast<RPacketQoS::TErroneousSDUDelivery>(FindMSB(aCapabilities.iDeliverErroneousSDU));
+    aParameters.iReqMaxSDUSize = 1500; //NOT SURE
+    aParameters.iMinAcceptableMaxSDUSize = 100; //NOT SURE
+    aParameters.iReqMaxRate.iUplinkRate = 1000; //NOT SURE
+    aParameters.iReqMaxRate.iDownlinkRate  = 1000; //NOT SURE
+    aParameters.iMinAcceptableMaxRate.iUplinkRate = 500; //NOT SURE
+    aParameters.iMinAcceptableMaxRate.iDownlinkRate = 500; //NOT SURE
+    aParameters.iReqBER = static_cast<RPacketQoS::TBitErrorRatio>(FindLSB(aCapabilities.iBER));
+    aParameters.iMaxBER = static_cast<RPacketQoS::TBitErrorRatio>(FindMSB(aCapabilities.iBER));
+    aParameters.iReqSDUErrorRatio = static_cast<RPacketQoS::TSDUErrorRatio>(FindLSB(aCapabilities.iSDUErrorRatio));
+    aParameters.iMaxSDUErrorRatio = static_cast<RPacketQoS::TSDUErrorRatio>(FindMSB(aCapabilities.iSDUErrorRatio));
+    aParameters.iReqTrafficHandlingPriority = static_cast<RPacketQoS::TTrafficHandlingPriority>(FindLSB(aCapabilities.iTrafficHandlingPriority));
+    aParameters.iMinTrafficHandlingPriority = static_cast<RPacketQoS::TTrafficHandlingPriority>(FindMSB(aCapabilities.iTrafficHandlingPriority));
+    aParameters.iReqTransferDelay = 1000; //NOT SURE
+    aParameters.iMaxTransferDelay = 100; //NOT SURE
+    aParameters.iReqGuaranteedRate.iUplinkRate = 1000; //NOT SURE
+    aParameters.iReqGuaranteedRate.iDownlinkRate  = 1000; //NOT SURE
+    aParameters.iMinGuaranteedRate.iUplinkRate = 500; //NOT SURE
+    aParameters.iMinGuaranteedRate.iDownlinkRate  = 500; //NOT SURE
+    }
+
+template<>
+void CCTSYIntegrationTestPacketContextBase::FillParametersFromCapabilities(RPacketQoS::TQoSR5Requested &aParameters,
+                                                                           const RPacketQoS::TQoSCapsR5 &aCapabilities)
+/**
+ * fill a RPacketQoS::TQoSR5Requested object from a given RPacketQoS::TQoSCapsR5 capabilities
+ * 
+ * @param aParameters Reference to the structure of the parameters to fill.
+ * @param aCapabilities Reference to the structure with the capabilities to use.
+ *
+ */
+    {
+    FillParametersFromCapabilities((RPacketQoS::TQoSR99_R4Requested&)aParameters,(const RPacketQoS::TQoSCapsR99_R4 &)aCapabilities);
+    aParameters.iSignallingIndication = static_cast<TBool>(aCapabilities.iSignallingIndication);
+    aParameters.iSourceStatisticsDescriptor = static_cast<RPacketQoS::TSourceStatisticsDescriptor>(aCapabilities.iSourceStatisticsDescriptor);
+    }
+
+
+template<class QOSCAPS>
+void CCTSYIntegrationTestPacketContextBase::GetProfileCapsL(RPacketQoS& aContextQoS, QOSCAPS& aCapabilities)
+/**
+ * Get QoS profile capabilities
+ * 
+ * @param aContextQoS Reference RPacketQoS object.
+ * @param aCapabilities Reference to QoS capabilities.
+ *
+ */
+    {
+	TPckg<QOSCAPS> qosCapsPckg(aCapabilities);
+	TExtEtelRequestStatus reqQoSProfileCaps(aContextQoS,EPacketQoSGetProfileCaps);
+	CleanupStack::PushL(reqQoSProfileCaps);		
+	aContextQoS.GetProfileCapabilities(reqQoSProfileCaps, qosCapsPckg);	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqQoSProfileCaps, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out."));	
+	ASSERT_EQUALS(reqQoSProfileCaps.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status."));
+	CleanupStack::PopAndDestroy(1, &reqQoSProfileCaps);	
+    }
+
+
+TBool CCTSYIntegrationTestPacketContextBase::ActivateSecondaryPacketContextL(RPacketContext& aSecondaryPacketContext, TPrimaryPacketContextId aPrimaryPacketContextId, TSecondaryPacketContextId aSecondaryPacketContextId)
+/**
+ * Activate a secondary packet context
+ *
+ * @param aSecondaryPacketContext a reference to a context session to activate.
+ *
+ * @return ETrue if everything is OK, EFalse in any other case
+ */
+    {
+    TBool ret = ETrue;
+
+	// Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter
+	LOCAL_ASSERT_EQUALS(AddPacketFilterV2ToContextL(aSecondaryPacketContext,1), KErrNone,
+                       _L("RPacketContext::AddPacketFilter returned with error status"));
+
+	// Open a new QoS from the secondary context
+	RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												aPrimaryPacketContextId,
+												aSecondaryPacketContextId);
+
+	// Get QoS profile capabilities with RPacketQoS::GetProfileCapabilities
+	TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps);
+	CleanupStack::PushL(getProfileCapStatus);
+	RPacketQoS::TQoSCapsGPRS qosCapGprs;
+	TPckg<RPacketQoS::TQoSCapsGPRS> qosCapsGprsPckg(qosCapGprs);
+	packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, 
+                        _L("RPacketQoS::GetProfileCapabilities timed out."));
+    LOCAL_ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone,
+                        _L("RPacketQoS::GetProfileCapabilities returned with error status."));
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities	
+    RPacketQoS::TQoSGPRSRequested qosGprsRequested;
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosGprsReqPckg(qosGprsRequested);
+    FillParametersFromCapabilities(qosGprsRequested,qosCapGprs);    
+	TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams);
+	CleanupStack::PushL(setProfileParamStatus);
+	packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, 
+                  _L("RPacketQoS::SetProfileParameters timed out."));
+	LOCAL_ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone,
+                   _L("RPacketQoS::SetProfileParameters returned with error status."));
+
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(aSecondaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	aSecondaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+
+	// Activate packet context with RPacketContext::Activate
+	TExtEtelRequestStatus contextActivateStatus(aSecondaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	aSecondaryPacketContext.Activate(contextActivateStatus);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, 
+                        _L("RPacketContext::Activate timed out."));
+	LOCAL_ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone,
+                        _L("RPacketContext::Activate returned with error status."));
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActive
+    RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActive;
+    iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				aSecondaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+    // Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+	ASSERT_EQUALS(aSecondaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+    LOCAL_ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("Packet Context's status expected to be EStatusActive but is not."));
+
+	// Pop:
+	//	contextActivateStatus
+	//	notifyContextStChStatus
+	//	setProfileParamStatus
+	//	getProfileCapStatus
+	CleanupStack::PopAndDestroy(4,&getProfileCapStatus);
+    return ret;
+    
+    }
+
+CCTSYIntegrationTestPacketContext0001::CCTSYIntegrationTestPacketContext0001(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0001::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0001::~CCTSYIntegrationTestPacketContext0001()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0001::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0001
+ * @SYMFssID BA/CTSY/PKTC-0001
+ * @SYMTestCaseDesc Activate and deactivate a primary PDP context.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::Activate, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyContextAdded, RPacketService::NotifyDynamicCapsChange, RPacketService::GetDynamicCaps, RPacketContext::GetConfig, RPacketContext::Deactivate, RPacketContext::GetDnsInfo
+ * @SYMTestExpectedResults Pass - Activation and deactivation succeeds. Packet service and context statuses are correct.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify packet service status, packet context statuses, dynamic caps.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+    // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+    // Get the attach mode so that it can be restored at the end of the test
+    RPacketService::TAttachMode attachMode;
+    CHECK_EQUALS_L(packetService.GetAttachMode(attachMode), KErrNone, _L("RPacketService::GetAttachMode returned with an error."));
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	// Get network info from phone
+	TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork);
+	CleanupStack::PushL(getNetworkStatus);
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info);
+	phone.GetCurrentNetwork(getNetworkStatus, infopckg);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong),
+				  						    KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out"));
+	ASSERT_EQUALS(getNetworkStatus.Int(),
+				  KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error"));
+
+	// Currenlty there are three context configs types: TContextConfigGPRS, TContextConfigCDMA, TContextConfigR99_R4
+	// A suitable config should be chosen accoriding to the baseband's capability.
+	
+	// Get the context config using network info
+	// Using Gprs config for now...
+	RPacketContext::TContextConfigGPRS config;
+	TPtrC apn, user, pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd);
+	config.iAccessPointName.Copy(apn);
+	config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user);
+	config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd);
+	TPckg<RPacketContext::TContextConfigGPRS> configPk(config);
+
+	// Set the context.
+
+	// Post notification for the RPacketService::NotifyContextAdded
+	TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatus);
+	TName contextId;
+	packetService.NotifyContextAdded(notifyContextStatus, contextId);
+	
+	RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	TExtEtelRequestStatus setConfigStatus(packetContext, EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus);
+	packetContext.SetConfig(setConfigStatus, configPk);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::SetConfig timed out"));
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone,
+					_L("RPacketContext::SetConfig returned with error status."));
+
+	// Check RPacketService::NotifyContextAdded completes with a valid context name
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone,
+				  _L("RPacketService::NotifyContextAdded did not complete."));
+    ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, 
+    			_L("RPacketService::NotifyContextAdded returned with error status."));
+    ASSERT_TRUE(contextId.Length() > 0,
+    			_L("Packet context config has zero length contextId."));
+
+	// ===  Activate packet context  ===
+	// ===  Check context and service statuses and notifications  ===
+
+	// Post notification for service's status change
+	TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange);
+	CleanupStack::PushL(notifyServiceStChStatus);
+	RPacketService::TStatus packetServiceStatus;
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+
+	// Post notification for service's dynamic caps change
+    RPacketService::TDynamicCapsFlags dynCaps;
+	TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange);
+	CleanupStack::PushL(notifyServiceDynCapsStatus);
+	packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps);
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(packetContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+
+	// Activate packet context with RPacketContext::Activate
+	DEBUG_PRINTF1(_L("Activating packet context"));
+	TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	packetContext.Activate(contextActivateStatus);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone,
+					_L("RPacketContext::Activate returned with error status."));
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+	RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+				packetService,
+				notifyServiceStChStatus,
+				packetServiceStatus, 
+				expectedPacketServiceStatus,
+				KErrNone);
+
+	// Check RPacketService::GetStatus returns EStatusActive
+	RPacketService::TStatus pckSrvcStatus;
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+    RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				packetContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+    ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActivating, _L("Packet Context's status expected to be EStatusActivating but is not."));
+    packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+
+    expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				packetContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+	ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// ===  Check dynamic caps ===
+	DEBUG_PRINTF1(_L("Checking Dynamic Caps"));
+	
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer.
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach
+    TInt wantedDynCapBits = RPacketService::KCapsRxCSCall | RPacketService::KCapsRxContextActivationReq | RPacketService::KCapsSMSTransfer;
+	TInt unWantedDynCapBits = RPacketService::KCapsManualAttach;
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10060 );
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyDynamicCapsChange( 
+				packetService,
+				notifyServiceDynCapsStatus,
+				dynCaps, 
+				wantedDynCapBits,
+				unWantedDynCapBits,
+				KErrNone);
+
+	// Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer
+	// Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach
+	ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+	ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("Packet service's KCapsActivate flag not set"));
+
+	// ===  Get context information ===
+
+	// Check RPacketContext::GetConfig returns same config as that set
+	DEBUG_PRINTF1(_L("Get config information"));
+	TExtEtelRequestStatus contextConfigStatus(packetContext, EPacketContextGetConfig);
+	CleanupStack::PushL(contextConfigStatus);
+	RPacketContext::TContextConfigGPRS getConfig;
+	TPckg<RPacketContext::TContextConfigGPRS> getConfigPk(getConfig);
+	packetContext.GetConfig(contextConfigStatus, getConfigPk);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextConfigStatus, ETimeMedium), KErrNone, 
+											  _L("RPacketContext::GetConfig timed out."))
+	ASSERT_EQUALS(contextConfigStatus.Int(), KErrNone,
+					_L("RPacketContext::GetConfig returned an error."));
+
+	ASSERT_EQUALS_DES8(getConfig.iAccessPointName, config.iAccessPointName, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iUsername, config.iProtocolConfigOption.iAuthInfo.iUsername, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iPassword, config.iProtocolConfigOption.iAuthInfo.iPassword, _L("RPacketContext::GetConfig returns incorrect config data."));
+
+	// Check RPacketContext::GetDnsInfo returns valid primary and secondary DNS ip addresses
+	RPacketContext::TDnsInfoV2 dnsInfo;
+	RPacketContext::TTDnsInfoV2Pckg dnsInfoPkg(dnsInfo);
+	TExtEtelRequestStatus dnsInfoStatus(packetContext, EPacketContextGetDNSInfo);
+	CleanupStack::PushL(dnsInfoStatus);
+	packetContext.GetDnsInfo(dnsInfoStatus, dnsInfoPkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(dnsInfoStatus, ETimeMedium), KErrNone, 
+											  _L("RPacketContext::GetDnsInfo timed out."));
+
+	ASSERT_EQUALS(dnsInfoStatus.Int(), KErrNone,
+					_L("RPacketContext::GetDnsInfo returned an error."));
+	ASSERT_TRUE(dnsInfo.iPrimaryDns.Length() > 0,
+				  _L("RPacketContext::GetDnsInfo returned with zero length PrimaryDns."));
+	ASSERT_TRUE(dnsInfo.iSecondaryDns.Length() > 0,
+				  _L("RPacketContext::GetDnsInfo returned with zero length SecondaryDns."));
+
+	// ===  Check context and service statuses on Deactivating packect context ===
+
+	// Post notification for context's status change
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	// Post notification for service's status change
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+
+	// Deactivate the context with RPacketContext::Deactivate
+	TExtEtelRequestStatus contextDeactivateStatus(packetContext, EPacketContextDeactivate);
+	CleanupStack::PushL(contextDeactivateStatus);
+	packetContext.Deactivate(contextDeactivateStatus);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::Deactivate timed out."));					
+	ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone,
+					_L("RPacketContext::Deactivate returned with error status."));
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive
+    expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				packetContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+    ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusDeactivating, _L("Packet Context's status expected to be EStatusDeactivating but is not."));
+    packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+
+    expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				packetContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("Packet Context's status did not return EStatusInactive."));
+	
+	// Check RPacketContext::GetStatus returns EStatusInactive
+	ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusAttached
+	expectedPacketServiceStatus = RPacketService::EStatusAttached;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+				packetService,
+				notifyServiceStChStatus,
+				packetServiceStatus, 
+				expectedPacketServiceStatus,
+				KErrNone);
+
+	// Check RPacketService::GetStatus returns EStatusAttached
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus return error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status."));
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+	
+    StartCleanup();
+
+    // Return packet service's attach mode to original setting
+	ASSERT_EQUALS(packetService.SetAttachMode(attachMode), KErrNone, _L("RPacketService::SetAttachMode returned with an error."));
+
+	CleanupStack::Pop(10, &getNetworkStatus);	
+                            // contextDeactivateStatus
+							// dnsInfoStatus
+							// contextConfigStatus
+							// contextActivateStatus, 
+							// notifyContextStChStatus,
+							// notifyServiceDynCapsStatus
+							// notifyServiceStChStatus,
+							// setConfigStatus,
+							// notifyContextStatus,
+							// getNetworkStatus
+
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0001::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0001");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0002::CCTSYIntegrationTestPacketContext0002(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0002::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0002::~CCTSYIntegrationTestPacketContext0002()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0002::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0002
+ * @SYMFssID BA/CTSY/PKTC-0002
+ * @SYMTestCaseDesc Activate and deactivate a primary PDP context.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::SetConfig, RPacketContext::Activate, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::EnumerateNifs, RPacketService::GetContextNameInNif, RPacketService::GetNifInfo, RPacketService::EnumerateContextsInNif, RPacketContext::Deactivate
+ * @SYMTestExpectedResults Pass - Activation succeeds. NIF info correct.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify NIF related info from RPacketService correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+    // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+	// Get the attach mode so that it can be restored at the end of the test
+    RPacketService::TAttachMode attachMode;
+    CHECK_EQUALS_L(packetService.GetAttachMode(attachMode), KErrNone, _L("RPacketService::GetAttachMode returned with an error."));
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+	// Ensure RPacketService::GetDynamicCaps returns caps in set of KCapsActivate.
+
+	// $CTSYProblem.
+	// GetDynamicCaps does not return 0x1(KCapsActivate), because KCapsActivate flag is not set yet. 
+	// CTSY sets KCapsActivate flag during context initialisation.
+
+	// Check for the CAPS being returned
+	RPacketService::TDynamicCapsFlags dynCaps;
+	CHECK_EQUALS_L(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+
+	// RPacketService::TDynamicCapsFlags wantedDynCapBits = RPacketService::KCapsActivate;	
+	//CHECK_BITS_SET_L(dynCaps, wantedDynCapBits, KNoUnwantedBits, _L("Packet service's KCapsActivate flag not set"));
+	
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+
+	StartTest();
+
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+
+	
+	// Get network info from phone
+	TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork);
+	CleanupStack::PushL(getNetworkStatus);
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info);
+	phone.GetCurrentNetwork(getNetworkStatus, infopckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out"));
+	ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error"));
+
+	// Get the context config using network info
+	RPacketContext::TContextConfigGPRS config;
+	TPtrC apn, user, pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd);
+	config.iAccessPointName.Copy(apn);
+	config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user);
+	config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd);
+	TPckg<RPacketContext::TContextConfigGPRS> configPk(config);	
+
+	// Post notification for the RPacketService::NotifyContextAdded
+	TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatus);
+	TName contextId;
+	packetService.NotifyContextAdded(notifyContextStatus, contextId);
+
+	// Open a new primary context.	
+	RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService,
+												KPrimaryPacketContext1);
+
+	// Set a valid context config with RPacketContext::SetConfig
+	TExtEtelRequestStatus setConfigStatus(packetContext, EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus);
+	packetContext.SetConfig(setConfigStatus, configPk);	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out"));
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned with error status."));
+
+	// Check RPacketService::NotifyContextAdded completes with a valid context name
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete."));
+	ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone,	_L("RPacketService::NotifyContextAdded returned with error status."));
+	ASSERT_TRUE(contextId.Length() > 0, _L("Packet context config has zero length contextId."));
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(packetContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+
+	// Activate packet context with RPacketContext::Activate 
+	TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	packetContext.Activate(contextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+
+	expectedPacketContextStatus = RPacketContext::EStatusActive;
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+					
+	// Check RPacketContext::GetStatus returns EStatusActive
+	ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// ===  Check that there is one NIF with one primary context belonging to it ===
+
+	// Get context info	
+	TExtEtelRequestStatus getContextInfo(packetService, EPacketGetContextInfo);
+	CleanupStack::PushL(getContextInfo);
+	RPacketService::TContextInfo contextInfo;
+	const TInt index = 0;
+	packetService.GetContextInfo(getContextInfo, index, contextInfo);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfo, ETimeLong), KErrNone, _L("RPacketService::GetContextInfo timed out"));
+	ASSERT_TRUE(contextInfo.iName.Length() > 0, _L("RPacketService::GetContextInfo returned with zero length context name"));
+
+	// Check RPacketService::EnumerateNifs returns aCount = 1
+	TExtEtelRequestStatus nifsStatus(packetService, EPacketEnumerateNifs);
+	CleanupStack::PushL(nifsStatus);
+	TInt nifCount = 0;
+	const TInt wantedCount = 1;
+	packetService.EnumerateNifs(nifsStatus, nifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out."));
+	ASSERT_EQUALS(nifCount, wantedCount, _L("RPacketService::EnumerateNifs returned with an error."));
+
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing context name returns aCount = 1
+	TExtEtelRequestStatus enumerateContextsInNifStatus(packetService, EPacketEnumerateContextsInNif);
+	CleanupStack::PushL(enumerateContextsInNifStatus);
+	TInt contextsInNifCount;
+	packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, contextInfo.iName, contextsInNifCount);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out"));
+	ASSERT_EQUALS(nifCount, wantedCount, _L("RPacketService::EnumerateContextsInNif returned wrong number of contexts sharing a NIF"));	
+
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = existing context name and aIndex = 0 returns aContextName which is same as aExistingContextName
+	TExtEtelRequestStatus contextNameNifsStatus(packetService, EPacketGetContextNameInNif);
+	CleanupStack::PushL(contextNameNifsStatus);
+	TInt iIndex = 0;
+	TName contextName;
+	packetService.GetContextNameInNif(contextNameNifsStatus, contextInfo.iName, iIndex, contextName );
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out."));
+	ASSERT_EQUALS_DES16(contextInfo.iName, contextName, _L("RPacketContext::GetContextNameInNif with aExistingContextName = existing context name returned with an error"));	
+	ASSERT_EQUALS(iIndex, KErrNone, _L("RPacketContext::GetContextNameInNif with aIndex returned with an error"));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 1
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress
+	// Check RPacketService::GetNifInfo with aCount = 0 returns EInternalContext
+
+	TExtEtelRequestStatus nifInfoStatus(packetService, EPacketGetNifInfo);
+	CleanupStack::PushL(nifInfoStatus);
+	const TInt nifInfoCount = 0;
+	RPacketService::TNifInfoV2 nifInfoV2;
+	RPacketService::TNifInfoV2Pckg nifInfoV2Pkg(nifInfoV2);
+	packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoV2Pkg);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeLong), KErrNone, _L("RPacketService::GetNifInfo returned an error"));
+	ASSERT_EQUALS_DES16(nifInfoV2.iContextName, contextName, _L("RPacketService::GetNifInfo with valid name  returned with an error"));
+	ASSERT_EQUALS(nifInfoV2.iNumberOfContexts, 1, _L("RPacketService::GetNifInfo with iNumberOfContexts returned with an error"));
+	ASSERT_EQUALS(nifInfoV2.iNifStatus, RPacketContext::EStatusActive, _L("RPacketSerivce::GetNifInfo with iNifStatus returned with an error"));
+ 	ASSERT_TRUE(nifInfoV2.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid pdp address"));
+
+ 	// $CTSYProblem:RPacketService::GetNifInfo always returns EInternalContext
+ 	// Changed test procedure to check for EInternalContext instead of EExternalContext
+ 	ASSERT_EQUALS(nifInfoV2.iContextType, RPacketService::EInternalContext, _L("RPacketService::GetNifInfo returned wrong context type"));
+
+	// Post notification for context's status change
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+
+	// Deactivate the context with RPacketContext::Deactivate 
+	TExtEtelRequestStatus contextDeactivateStatus(packetContext, EPacketContextDeactivate);
+	CleanupStack::PushL(contextDeactivateStatus);
+	packetContext.Deactivate(contextDeactivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Deactivate timed out."));					
+	ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned with error status."));
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive
+	expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusDeactivating, _L("RPacketContext::GetStatus returns incorrect status."));
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+
+	expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+				
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+				
+	// Check RPacketContext::GetStatus returns EStatusInactive
+	ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketService::EnumerateNifs returns aCount = 0
+	TExtEtelRequestStatus enumerateNifsStatus(packetService, EPacketEnumerateNifs);
+	CleanupStack::PushL(enumerateNifsStatus);
+	nifCount = 0;
+	const TInt wantedEnumerateNifsCount = 1;
+	packetService.EnumerateNifs(enumerateNifsStatus, nifCount);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateNifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out"));
+	ASSERT_EQUALS(nifCount, wantedEnumerateNifsCount, _L("RPacketService::EnumerateNifs returned wrong NIF count."));
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+
+	// pop
+	// getNetworkStatus
+	// setConfigStatus
+	// notifyContextStatus
+	// contextActivateStatus
+	// notifyContextStatus
+	// notifyContextStChStatus
+	// nifsStatus
+	// ContextNifsStatus
+	// ContextNameNifsStatus
+	// nifInfoStatus
+	// contextDeactivateStatus
+	// enumerateNifsStatus
+	CleanupStack::PopAndDestroy(12, &getNetworkStatus);
+
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0002::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0002");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0003::CCTSYIntegrationTestPacketContext0003(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0003::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0003::~CCTSYIntegrationTestPacketContext0003()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0003::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0003
+ * @SYMFssID BA/CTSY/PKTC-0003
+ * @SYMTestCaseDesc Activate and deactivate a primary context (roaming).
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::SetConfig, RPacketContext::Activate, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyContextAdded, RPacketService::NotifyDynamicCapsChange, RPacketService::GetDynamicCaps, RPacketContext::GetConfig, RPacketContext::Deactivate, RPacketContext::GetDnsInfo
+ * @SYMTestExpectedResults Pass - Primary context is activated then deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/manual
+ *
+ * Reason for test: Verify packet service status, packet context statuses, dynamic caps.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Get the registration status and ensure that the phone is camped on a valid cell. 
+
+	// Ensure phone is attached to packet service. 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Check RPacketService::GetNtwkRegStatus returns ERegisteredRoaming
+
+	// Set a valid context config with RPacketContext::SetConfig 
+
+	// Check RPacketService::NotifyContextAdded completes with a valid context name
+
+	// Activate packet context with RPacketContext::Activate 
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+
+	// Check RPacketService::GetStatus returns EStatusActive
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+
+	// ===  Check dynamic caps ===
+
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer.
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach
+
+	// Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer
+	// Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach
+
+	// ===  Get context information ===
+
+	// Check RPacketContext::GetConfig returns same config as that set
+
+	// Check RPacketContext::GetDnsInfo returns valid primary and secondary DNS ip addresses
+
+	// Deactivate the context with RPacketContext::Deactivate 
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive
+
+	// Check RPacketContext::GetStatus returns EStatusInactive
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusAttached
+
+	// Check RPacketService::GetStatus returns EStatusAttached
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0003::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0003");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0004::CCTSYIntegrationTestPacketContext0004(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0004::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0004::~CCTSYIntegrationTestPacketContext0004()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0004::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0004
+ * @SYMFssID BA/CTSY/PKTC-0004
+ * @SYMTestCaseDesc Activate and deactivate a primary context (roaming).
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::SetConfig, RPacketContext::Activate, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::EnumerateNifs, RPacketService::GetContextNameInNif, RPacketService::GetNifInfo, RPacketService::EnumerateContextsInNif, RPacketContext::Deactivate, RPacketService::EnumerateContextsInNif, RPacketContext::Deactivate
+ * @SYMTestExpectedResults Pass - Context activated and deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/manual
+ *
+ * Reason for test: Verify NIF related info from RPacketService correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Check RPacketService::GetNtwkRegStatus returns ERegisteredRoaming
+
+	// Set a valid context config with RPacketContext::SetConfig 
+
+	// Check RPacketService::NotifyContextAdded completes with a valid context name
+
+	// Activate packet context with RPacketContext::Activate 
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+
+	// ===  Check that there is one NIF with one primary context belonging to it ===
+
+	// Check RPacketService::EnumerateNifs returns aCount = 1
+
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing context name returns aCount = 1
+
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = existing context name and aIndex = 0 returns aContextName which is same as aExistingContextName
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 1
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress
+	// Check RPacketService::GetNifInfo with aCount = 0 returns EExternalContext
+
+	// Deactivate the context with RPacketContext::Deactivate 
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive
+
+	// Check RPacketContext::GetStatus returns EStatusInactive
+
+	// Check RPacketService::EnumerateNifs returns aCount = 0
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0004::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0004");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0005::CCTSYIntegrationTestPacketContext0005(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0005::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0005::~CCTSYIntegrationTestPacketContext0005()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0005::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0005
+ * @SYMFssID BA/CTSY/PKTC-0005
+ * @SYMTestCaseDesc Activate and deactivate an HSDPA context.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::GetConfig, RPacketContext::Activate, RPacketContext::Deactivate, RPacketService::NotifyContextAdded, RPacketContext::GetStatus, RPacketContext::NotifyStatusChange, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketService::NotifyDynamicCapsChange, RPacketContext::SetConfig, RPacketContext::GetDnsInfo
+ * @SYMTestExpectedResults Pass - Context activated and deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify packet service status, packet context statuses, dynamic caps has KCapsHSDPA and static caps are correct. 
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+	
+	//Check if we are  on a simulated network
+
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYProblem: defect id = %d</font>"), 10083);
+	User::Leave(KErrNone);		
+	
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+ 	iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+ 	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+	// Ensure RPacketService::GetStaticCaps returns caps in set of KCapsHSDPASupported 
+	TUint staticCaps = 0;
+	TUint expectedCaps = RPacketService::KCapsHSDPASupported;
+	CHECK_EQUALS_L(packetService.GetStaticCaps(staticCaps, RPacketContext::EPdpTypeIPv4), KErrNone, _L("RPacketService::GetStaticCaps returned an error"));
+	CHECK_BITS_SET_L(staticCaps, expectedCaps, KNoUnwantedBits, _L("RPacketService::GetStaticCaps did not return correct static caps"));
+			
+	// Ensure phone is attached to the packet service in an HSDPA enabled cell. 
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+
+
+	// Post notification for the RPacketService::NotifyContextAdded
+	TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatus);
+	TName contextId;
+	packetService.NotifyContextAdded(notifyContextStatus, contextId);
+	
+	// Open a primary context. 
+	RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+												
+	// Check RPacketService::NotifyContextAdded completes with a valid context name
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete."));
+	ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone,	_L("RPacketService::NotifyContextAdded returned with error status."));
+	ASSERT_TRUE(contextId.Length() > 0, _L("Packet context config has zero length contextId."));
+
+	// Set a valid context config with RPacketContext::SetConfig 
+	//Get network info from phone
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info);
+	TExtEtelRequestStatus getNetworkStatus (phone,EMobilePhoneGetCurrentNetwork);
+	CleanupStack::PushL(getNetworkStatus);
+	phone.GetCurrentNetwork(getNetworkStatus, infopckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeMedium), KErrNone, _L("MobilePhone::GetCurrentNetwork timed out"))
+	ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("MobilePhone::GetCurrentNetwork returned an error"))	
+	
+	// Get the context config using network info
+	RPacketContext::TContextConfigGPRS config;
+	TPtrC apn,user,pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info,apn,user,pwd);
+	config.iAccessPointName.Copy(apn);
+	config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user);
+	config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd);
+	TPckg<RPacketContext::TContextConfigGPRS> configPk(config);
+	
+	// set the context using network info
+	TExtEtelRequestStatus setConfigStatus (packetContext,EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus); 
+	packetContext.SetConfig(setConfigStatus,configPk);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("PacketContext::SetConfig timed out"))								
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("PacketContext::SetConfig returned an error."))	
+	
+	// Post notification for service's status change
+	TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange);
+	CleanupStack::PushL(notifyServiceStChStatus);
+	RPacketService::TStatus packetServiceStatus;
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+	
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(packetContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	// Post notification for service's dynamic caps change
+    RPacketService::TDynamicCapsFlags dynCaps;
+	TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange);
+	CleanupStack::PushL(notifyServiceDynCapsStatus);
+	packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps);
+	
+	// Activate packet context with RPacketContext::Activate 
+	TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	packetContext.Activate(contextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+	
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+	RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+					packetService,
+					notifyServiceStChStatus,
+					packetServiceStatus, 
+					expectedPacketServiceStatus,
+					KErrNone);
+					
+	// Check RPacketService::GetStatus returns EStatusActive
+	RPacketService::TStatus pckSrvcStatus;
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+					
+	// Check RPacketContext::GetStatus returns EStatusActive
+	ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// ===  Check dynamic caps ===
+
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsHSDPA.
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach
+    TInt wantedDynCapBits = RPacketService::KCapsRxCSCall | RPacketService::KCapsRxContextActivationReq | RPacketService::KCapsSMSTransfer | RPacketService::KCapsHSDPA;
+	TInt unWantedDynCapBits = RPacketService::KCapsManualAttach;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyDynamicCapsChange( 
+				packetService,
+				notifyServiceDynCapsStatus,
+				dynCaps, 
+				wantedDynCapBits,
+				unWantedDynCapBits,
+				KErrNone);
+				
+	// Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsHSDPA
+	// Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach
+	ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+	ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("RPacketService::GetDynamicCaps did not return correct dynamic caps"));
+
+	// ===  Get context information ===
+
+	// Check RPacketContext::GetConfig returns same config as that set
+	TExtEtelRequestStatus contextConfigStatus(packetContext, EPacketContextGetConfig);
+	CleanupStack::PushL(contextConfigStatus);
+	RPacketContext::TContextConfigGPRS getConfig;
+	TPckg<RPacketContext::TContextConfigGPRS> getConfigPk(getConfig);
+	packetContext.GetConfig(contextConfigStatus, getConfigPk);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextConfigStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConfig timed out."))
+	ASSERT_EQUALS(contextConfigStatus.Int(), KErrNone, _L("RPacketContext::GetConfig returned an error."));
+	ASSERT_EQUALS_DES8(getConfig.iAccessPointName, config.iAccessPointName, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iUsername, config.iProtocolConfigOption.iAuthInfo.iUsername, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iPassword, config.iProtocolConfigOption.iAuthInfo.iPassword, _L("RPacketContext::GetConfig returns incorrect config data."));
+
+	// Check RPacketContext::GetDnsInfo returns valid primary and secondary DNS ip addresses
+	RPacketContext::TDnsInfoV2 dnsInfo;
+	RPacketContext::TTDnsInfoV2Pckg dnsInfoPkg(dnsInfo);
+	TExtEtelRequestStatus dnsInfoStatus(packetContext, EPacketContextGetDNSInfo);
+	CleanupStack::PushL(dnsInfoStatus);
+	packetContext.GetDnsInfo(dnsInfoStatus, dnsInfoPkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(dnsInfoStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetDnsInfo timed out."));
+	ASSERT_EQUALS(dnsInfoStatus.Int(), KErrNone, _L("RPacketContext::GetDnsInfo returned an error."));
+	ASSERT_TRUE(dnsInfo.iPrimaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length PrimaryDns."));
+	ASSERT_TRUE(dnsInfo.iSecondaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length SecondaryDns."));
+	
+	// Post notification for context's status change
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	// Post notification for service's status change
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+
+	// Deactivate the context with RPacketContext::Deactivate 
+	TExtEtelRequestStatus contextDeactivateStatus(packetContext, EPacketContextDeactivate);
+	CleanupStack::PushL(contextDeactivateStatus);
+	packetContext.Deactivate(contextDeactivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Deactivate timed out."));					
+	ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned with error status."));
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive
+	expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+					
+	// Check RPacketContext::GetStatus returns EStatusInactive
+	ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusAttached
+	expectedPacketServiceStatus = RPacketService::EStatusAttached;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+				packetService,
+				notifyServiceStChStatus,
+				packetServiceStatus, 
+				expectedPacketServiceStatus,
+				KErrNone);
+				
+	// Check RPacketService::GetStatus returns EStatusAttached
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus return error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status."));
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// pop
+	// getNetworkStatus
+	// setConfigStatus
+	// notifyContextStatus
+	// notifyServiceStChStatus
+	// notifyContextStChStatus
+	// notifyServiceDynCapsStatus
+	// contextActivateStatus
+	// contextConfigStatus
+	// dnsInfoStatus
+	// contextDeactivateStatus
+	
+	CleanupStack::PopAndDestroy(10, &getNetworkStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0005::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0005");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0006::CCTSYIntegrationTestPacketContext0006(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0006::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0006::~CCTSYIntegrationTestPacketContext0006()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0006::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0006
+ * @SYMFssID BA/CTSY/PKTC-0006
+ * @SYMTestCaseDesc Activate and deactivate an EGPRS context.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::GetConfig, RPacketContext::Activate, RPacketContext::Deactivate, RPacketService::NotifyContextAdded, RPacketContext::GetStatus, RPacketContext::NotifyStatusChange, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketService::NotifyDynamicCapsChange, RPacketContext::SetConfig, RPacketContext::GetDnsInfo
+ * @SYMTestExpectedResults Pass - Context activated and deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify packet service status, packet context statuses, dynamic caps.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+	
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYProblem: defect id = %d</font>"), 10084);
+	User::Leave(KErrNone);	
+	
+
+    //Check if we are on a simulated network to run emergency call tests
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+    iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);	
+
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+	
+ 
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+    
+    // Ensure RPacketService::GetStaticCaps returns caps in set of KCapsEGPRSSupported 
+	TUint staticCaps = 0;
+	TUint expectedCaps = 	RPacketService::KCapsEGPRSSupported;
+	CHECK_EQUALS_L(packetService.GetStaticCaps(staticCaps, RPacketContext::EPdpTypeIPv4), KErrNone, _L("RPacketService::GetStaticCaps returned an error"));
+	CHECK_BITS_SET_L(staticCaps, expectedCaps, KNoUnwantedBits, _L("RPacketService::GetStaticCaps did not return correct static caps"));
+			
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	// Post notification for the RPacketService::NotifyContextAdded
+	TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatus);
+	TName contextId;
+	packetService.NotifyContextAdded(notifyContextStatus, contextId);
+	
+	// Open a primary context. 
+	RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	// Check RPacketService::NotifyContextAdded completes with a valid context name
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete."));
+	ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status."));
+	ASSERT_TRUE(contextId.Length() > 0, _L("RPacketService::NotifyContextAdded returned zero length contextId."));
+
+	// Set a valid context config with iUseEdge = ETrue using RPacketContext::SetConfig 
+	//Get network info from phone
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info);
+	TExtEtelRequestStatus getNetworkStatus (phone,EMobilePhoneGetCurrentNetwork);
+	CleanupStack::PushL(getNetworkStatus);
+	phone.GetCurrentNetwork(getNetworkStatus, infopckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeMedium), KErrNone, _L("MobilePhone::GetCurrentNetwork timed out"))
+	ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("MobilePhone::GetCurrentNetwork returned an error"))	
+	
+	// Get the context config using network info
+	RPacketContext::TContextConfigGPRS config;
+	TPtrC apn,user,pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info,apn,user,pwd);
+	config.iAccessPointName.Copy(apn);
+	config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user);
+	config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd);
+	TBool edge = ETrue;
+	config.iUseEdge = edge;
+	TPckg<RPacketContext::TContextConfigGPRS> configPk(config);
+	
+	// set the context using network info
+	TExtEtelRequestStatus setConfigStatus (packetContext,EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus); 
+	packetContext.SetConfig(setConfigStatus,configPk);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("PacketContext::SetConfig timed out"))								
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("PacketContext::SetConfig returned an error."))	
+
+	// Post notification for service's status change
+	TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange);
+	CleanupStack::PushL(notifyServiceStChStatus);
+	RPacketService::TStatus packetServiceStatus;
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+	
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(packetContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	// Post notification for service's dynamic caps change
+    RPacketService::TDynamicCapsFlags dynCaps;
+	TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange);
+	CleanupStack::PushL(notifyServiceDynCapsStatus);
+	packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps);
+	
+	// Activate packet context with RPacketContext::Activate 
+	TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	packetContext.Activate(contextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+	
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+	RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+					packetService,
+					notifyServiceStChStatus,
+					packetServiceStatus, 
+					expectedPacketServiceStatus,
+					KErrNone);
+					
+	// Check RPacketService::GetStatus returns EStatusActive
+	RPacketService::TStatus pckSrvcStatus;
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+	expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+					
+	// Check RPacketContext::GetStatus returns EStatusActive
+	ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// ===  Check dynamic caps ===
+
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsEGPRS.
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach
+    TInt wantedDynCapBits = RPacketService::KCapsRxCSCall | RPacketService::KCapsRxContextActivationReq | RPacketService::KCapsSMSTransfer | RPacketService::KCapsEGPRS;
+	TInt unWantedDynCapBits = RPacketService::KCapsManualAttach;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyDynamicCapsChange( 
+				packetService,
+				notifyServiceDynCapsStatus,
+				dynCaps, 
+				wantedDynCapBits,
+				unWantedDynCapBits,
+				KErrNone);
+				
+	// Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsEGPRS
+	// Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach
+	ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+	ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("Packet service's KCapsActivate flag not set"));
+
+	// ===  Get context information ===
+
+	// Get context info	
+	TExtEtelRequestStatus getContextInfo(packetService, EPacketGetContextInfo);
+	CleanupStack::PushL(getContextInfo);
+	RPacketService::TContextInfo contextInfo;
+	const TInt index = 0;
+	packetService.GetContextInfo(getContextInfo, index, contextInfo);
+		
+	// Check RPacketContext::GetConfig returns same config as that set
+	TExtEtelRequestStatus contextConfigStatus(packetContext, EPacketContextGetConfig);
+	CleanupStack::PushL(contextConfigStatus);
+	RPacketContext::TContextConfigGPRS getConfig;
+	TPckg<RPacketContext::TContextConfigGPRS> getConfigPk(getConfig);
+	packetContext.GetConfig(contextConfigStatus, getConfigPk);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextConfigStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConfig timed out."))
+	ASSERT_EQUALS(contextConfigStatus.Int(), KErrNone, _L("RPacketContext::GetConfig returned an error."));
+	ASSERT_EQUALS_DES8(getConfig.iAccessPointName, config.iAccessPointName, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iUsername, config.iProtocolConfigOption.iAuthInfo.iUsername, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iPassword, config.iProtocolConfigOption.iAuthInfo.iPassword, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS(getConfig.iUseEdge, config.iUseEdge, _L("RPacketContext::GetConfig returns incorrect config data."));
+
+	// Check RPacketContext::GetDnsInfo returns valid primary and secondary DNS ip addresses
+	RPacketContext::TDnsInfoV2 dnsInfo;
+	RPacketContext::TTDnsInfoV2Pckg dnsInfoPkg(dnsInfo);
+	TExtEtelRequestStatus dnsInfoStatus(packetContext, EPacketContextGetDNSInfo);
+	CleanupStack::PushL(dnsInfoStatus);
+	packetContext.GetDnsInfo(dnsInfoStatus, dnsInfoPkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(dnsInfoStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetDnsInfo timed out."));
+	ASSERT_EQUALS(dnsInfoStatus.Int(), KErrNone, _L("RPacketContext::GetDnsInfo returned an error."));
+	ASSERT_TRUE(dnsInfo.iPrimaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length PrimaryDns."));
+	ASSERT_TRUE(dnsInfo.iSecondaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length SecondaryDns."));
+	
+	// ===  Check that there is one NIF with one primary context belonging to it ===
+
+	// Check RPacketService::EnumerateNifs returns aCount = 1
+	TExtEtelRequestStatus nifsStatus(packetService, EPacketEnumerateNifs);
+	CleanupStack::PushL(nifsStatus);
+	TInt countValue = 0;
+	packetService.EnumerateNifs(nifsStatus, countValue);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out."));
+	ASSERT_EQUALS(countValue, 1, _L("RPacketContext::EnumerateNifs returned wrong aValue"));
+	
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing context name returns aCount = 1
+	TExtEtelRequestStatus contextNifsStatus(packetService, EPacketEnumerateContextsInNif);
+	CleanupStack::PushL(contextNifsStatus);
+	countValue = 0;	
+	packetService.EnumerateContextsInNif(contextNifsStatus, contextInfo.iName, countValue);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out."));
+	ASSERT_EQUALS(countValue, 1, _L("RPacketService::EnumerateContextsInNif returned with an error."));
+
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = existing context name and aIndex = 0 returns aContextName which is same as aExistingContextName
+	TExtEtelRequestStatus contextNameNifsStatus(packetService, EPacketGetContextNameInNif);
+	CleanupStack::PushL(contextNameNifsStatus);
+	TInt ind = 0;
+	TName contextName;
+	packetService.GetContextNameInNif(contextNameNifsStatus, contextInfo.iName, ind, contextName );
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out."));
+	ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketService::GetContextNameInNif returned an error."));
+	ASSERT_EQUALS_DES16(contextName, contextInfo.iName, _L("RPacketService::GetContextNameInNif with aExistingContextName = existing context name returned with an error"));	
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 1
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress
+	// Check RPacketService::GetNifInfo with aCount = 0 returns EExternalContext
+	TExtEtelRequestStatus nifInfoStatus(packetService, EPacketGetNifInfo);
+	CleanupStack::PushL(nifInfoStatus);
+	RPacketService::TNifInfoV2 nifInfoV2;
+	RPacketService::TNifInfoV2Pckg nifInfoV2Pkg(nifInfoV2);
+	packetService.GetNifInfo(nifInfoStatus, countValue, nifInfoV2Pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeLong), KErrNone, _L("RPacketService::GetNifInfo returned an error"));
+	ASSERT_EQUALS(nifInfoStatus.Int(), KErrNone, _L("RPacketService::GetNifInfo returned an error."));
+	ASSERT_EQUALS_DES16(nifInfoV2.iContextName, contextName, _L("RPacketService::GetNifInfo with valid name  returned with an error"));
+	ASSERT_EQUALS(nifInfoV2.iNumberOfContexts, 1, _L("RPacketService::GetNifInfo with iNumberOfContexts returned with an error"));
+	ASSERT_EQUALS(nifInfoV2.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo with iNifStatus returned with an error"));
+	ASSERT_TRUE(nifInfoV2.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo with iPdpAddress returned with an error"));
+	ASSERT_EQUALS(nifInfoV2.iContextType, RPacketService::EExternalContext, _L("RPacketService::GetNifInfo with iContextType returned with an error"));
+
+	// Post notification for context's status change
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	// Post notification for service's status change
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+	
+	// Deactivate the context with RPacketContext::Deactivate 
+	TExtEtelRequestStatus contextDeactivateStatus(packetContext, EPacketContextDeactivate);
+	CleanupStack::PushL(contextDeactivateStatus);
+	packetContext.Deactivate(contextDeactivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Deactivate timed out."));					
+	ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned with error status."));
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive
+	expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+					
+	// Check RPacketContext::GetStatus returns EStatusInactive
+	ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusAttached
+	expectedPacketServiceStatus = RPacketService::EStatusAttached;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+				packetService,
+				notifyServiceStChStatus,
+				packetServiceStatus, 
+				expectedPacketServiceStatus,
+				KErrNone);
+				
+	// Check RPacketService::GetStatus returns EStatusAttached
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus return error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status."));
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// pop
+	// notifyContextStatus
+	// getNetworkStatus
+	// setConfigStatus
+	// notifyServiceStChStatus
+	// notifyContextStChStatus
+	// notifyServiceDynCapsStatus
+	// contextActivateStatus
+	// getContextInfo
+	// contextConfigStatus
+	// dnsInfoStatus
+	// NifsStatus
+	// contextNifsStatus
+	// contextNameNifsStatus
+	// NifInfoStatus
+	// contextDeactivateStatus
+	CleanupStack::PopAndDestroy(15, &notifyContextStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0006::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0006");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0007::CCTSYIntegrationTestPacketContext0007(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0007::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0007::~CCTSYIntegrationTestPacketContext0007()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0007::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0007
+ * @SYMFssID BA/CTSY/PKTC-0007
+ * @SYMTestCaseDesc Activate and deactivate a secondary context.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::GetConfig, RPacketContext::Activate, RPacketContext::Deactivate, RPacketService::NotifyContextAdded, RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketService::NotifyStatusChange, RPacketService::NotifyDynamicCapsChange, RPacketService::GetStatus, RPacketContext::SetConfig, RPacketContext::GetDnsInfo, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters
+ * @SYMTestExpectedResults Pass - Secondary context is activated then deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify packet service status, packet context statuses, dynamic caps
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+	// wait until we are on the network
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+	//Check if we are on a simulated network 
+   iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+
+    // Ensure phone is attached to the packet service. 
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+	// Post notification for the ContextAdded
+	TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatus);
+	TName contextId;
+	packetService.NotifyContextAdded(notifyContextStatus, contextId);
+	
+	// Open a primary context. 
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	// Open a new secondary context from primary context
+    RPacketContext& secondaryPacketContext2 = iEtelSessionMgr.GetSecondaryPacketContextL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+
+    ////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+
+	// Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter
+	ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext2,1), KErrNone,
+					_L("RPacketContext::AddPacketFilter returned with error status"));
+
+	// ===  Add QoS ===
+
+	// Open a new QoS from the secondary context
+	RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+
+	// Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities
+	// Note: Using GPRS params
+	TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps);
+	CleanupStack::PushL(getProfileCapStatus);
+	RPacketQoS::TQoSCapsGPRS qosCapGprs;
+	TPckg<RPacketQoS::TQoSCapsGPRS> qosCapsGprsPckg(qosCapGprs);
+	packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, 
+					_L("RPacketQoS::GetProfileCapabilities timed out."))						
+	ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone,
+					_L("RPacketQoS::GetProfileCapabilities returned with error status."))
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities	
+	RPacketQoS::TQoSGPRSRequested qosGprsRequested;
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosGprsReqPckg(qosGprsRequested);
+    FillParametersFromCapabilities(qosGprsRequested,qosCapGprs);
+	TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams);
+	CleanupStack::PushL(setProfileParamStatus);
+	packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, 
+					_L("RPacketQoS::SetProfileParameters timed out."))						
+	ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone,
+					_L("RPacketQoS::SetProfileParameters returned with error status."))
+					
+											
+	// Check RPacketService::NotifyContextAdded completes with a valid context name
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeShort), KErrNone,
+				  _L("RPacketService::NotifyContextAdded did not complete."));
+    ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, 
+    			_L("RPacketService::NotifyContextAdded returned with error status."));
+    ASSERT_TRUE(contextId.Length() > 0,
+    			_L("RPacketService::NotifyContextAdded Packet context config has zero length contextId."));
+
+	// Post notification for service's status change
+	TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange);
+	CleanupStack::PushL(notifyServiceStChStatus);
+	RPacketService::TStatus packetServiceStatus;
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+
+	// Activate primary context with RPacketContext::Activate
+    iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext);
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+	RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+				packetService,
+				notifyServiceStChStatus,
+				packetServiceStatus, 
+				expectedPacketServiceStatus,
+				KErrNone);
+
+	// Check RPacketService::GetStatus returns EStatusActive
+	RPacketService::TStatus pckSrvcStatus;
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus return error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus did not return RPacketService::EStatusActive."));
+
+	// Check RPacketContext::GetStatus for the primary context returns EStatusActive
+	RPacketContext::TContextStatus packetContextStatus;
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusActive."));
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifySecContextStChStatus(secondaryPacketContext2, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifySecContextStChStatus);
+	RPacketContext::TContextStatus secPacketContextStatus;
+	secondaryPacketContext2.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);
+	
+	// Post notification for for service's dynamic caps change
+	RPacketService::TDynamicCapsFlags dynCaps;
+	TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange);
+	CleanupStack::PushL(notifyServiceDynCapsStatus);
+	packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps);
+
+	// Activate the secondary context.
+	TExtEtelRequestStatus secContextActivateStatus(secondaryPacketContext2, EPacketContextActivate);
+	CleanupStack::PushL(secContextActivateStatus);
+	secondaryPacketContext2.Activate(secContextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(secContextActivateStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(secContextActivateStatus.Int(), KErrNone,
+					_L("RPacketContext::Activate returned with error status."));
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive
+	RPacketContext::TContextStatus expectedSecPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext2,
+				notifySecContextStChStatus,
+				secPacketContextStatus,
+				expectedSecPacketContextStatus,
+				KErrNone);
+	secondaryPacketContext2.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);
+
+    //   -> EStatusActive
+	expectedSecPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext2,
+				notifySecContextStChStatus,
+				secPacketContextStatus,
+				expectedSecPacketContextStatus,
+				KErrNone);
+				
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+	ASSERT_EQUALS(secondaryPacketContext2.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusActive."));
+
+	// ===  Check dynamic caps ===
+	
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsHSDPA.
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach
+
+	// $CTSYProblem.
+	// GetDynamicCaps does not change since the LTSY dose not call the EPacketNotifyDynamicCapsChange when the context is activated 
+	
+	// Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsHSDPA
+	// Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach
+
+	// $CTSYProblem.
+	// GetDynamicCaps dose not change since the LTSY dose not call the EPacketNotifyDynamicCapsChange when the context is activated 
+	
+	// ===  Get context information ===
+
+   	// Get network info from phone
+	TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork);
+	CleanupStack::PushL(getNetworkStatus);
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info);
+	phone.GetCurrentNetwork(getNetworkStatus, infopckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out"));
+	ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error"));
+	
+	// Check RPacketContext::GetConfig for primary context returns same config as that set
+	TExtEtelRequestStatus contextConfigStatus(primaryPacketContext , EPacketContextGetConfig);
+	CleanupStack::PushL(contextConfigStatus);
+	RPacketContext::TContextConfigGPRS getConfig;
+	TPckg<RPacketContext::TContextConfigGPRS> getConfigPk(getConfig);
+	primaryPacketContext.GetConfig(contextConfigStatus, getConfigPk);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextConfigStatus, ETimeMedium), KErrNone, 
+											  _L("RPacketContext::GetConfig timed out."))
+	ASSERT_EQUALS(contextConfigStatus.Int(), KErrNone,
+					_L("RPacketContext::GetConfig returned an error."));
+	RPacketContext::TContextConfigGPRS config;
+	TPtrC apn, user, pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd);
+	config.iAccessPointName.Copy(apn);
+	config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user);
+	config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd);
+	ASSERT_EQUALS_DES8(getConfig.iAccessPointName,
+				  config.iAccessPointName, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iUsername,
+				  config.iProtocolConfigOption.iAuthInfo.iUsername, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iPassword,
+				 config.iProtocolConfigOption.iAuthInfo.iPassword, _L("RPacketContext::GetConfig returns incorrect config data."));
+	 
+	// Check RPacketContext::GetDnsInfo for primary context returns valid primary and secondary DNS ip addresses
+	RPacketContext::TDnsInfoV2 dnsInfoPrimary;
+	RPacketContext::TTDnsInfoV2Pckg dnsInfoPrimaryPkg(dnsInfoPrimary);
+	TExtEtelRequestStatus dnsInfoStatus(primaryPacketContext, EPacketContextGetDNSInfo);
+	CleanupStack::PushL(dnsInfoStatus);
+	primaryPacketContext.GetDnsInfo(dnsInfoStatus, dnsInfoPrimaryPkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(dnsInfoStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetDnsInfo timed out."));
+	ASSERT_EQUALS(dnsInfoStatus.Int(), KErrNone, _L("RPacketContext::GetDnsInfo returned an error."));
+	ASSERT_TRUE(dnsInfoPrimary.iPrimaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length PrimaryDns."));
+	ASSERT_TRUE(dnsInfoPrimary.iSecondaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length SecondaryDns."));
+	
+	// Check RPacketContext::GetDnsInfo for secondary context returns same primary and secondary DNS ip addresses as for the primary context
+	RPacketContext::TDnsInfoV2 dnsInfoSecondary;
+	RPacketContext::TTDnsInfoV2Pckg dnsInfoSecondaryPkg(dnsInfoSecondary);
+	TExtEtelRequestStatus dnsInfoStatus2(secondaryPacketContext2, EPacketContextGetDNSInfo);
+	CleanupStack::PushL(dnsInfoStatus2);
+	secondaryPacketContext2.GetDnsInfo(dnsInfoStatus2, dnsInfoSecondaryPkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(dnsInfoStatus2, ETimeMedium), KErrNone, _L("RPacketContext::GetDnsInfo timed out."));
+	ASSERT_EQUALS(dnsInfoStatus2.Int(), KErrNone, _L("RPacketContext::GetDnsInfo returned an error."));
+	ASSERT_TRUE(dnsInfoSecondary.iPrimaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length PrimaryDns."));
+	ASSERT_TRUE(dnsInfoSecondary.iSecondaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length SecondaryDns."));
+	
+	// Compare ip addresses
+	ASSERT_EQUALS_DES8(dnsInfoPrimary.iPrimaryDns, dnsInfoSecondary.iPrimaryDns,
+					   _L("RPacketContext::GetDnsInfo IP addresses mismatch for Primary and Secondary contexts."));
+	ASSERT_EQUALS_DES8(dnsInfoPrimary.iSecondaryDns, dnsInfoSecondary.iSecondaryDns,
+					   _L("RPacketContext::GetDnsInfo IP addresses mismatch for Primary and Secondary contexts."));
+
+	// Post notification for context's status change
+	secondaryPacketContext2.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);
+		
+	// Deactivate the secondary context with RPacketContext::Deactivate 
+	TExtEtelRequestStatus secCntxtDeactivateStatus(secondaryPacketContext2, EPacketContextDeactivate);
+	CleanupStack::PushL(secCntxtDeactivateStatus);
+	secondaryPacketContext2.Deactivate(secCntxtDeactivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(secCntxtDeactivateStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::Deactivate timed out."));					
+	ASSERT_EQUALS(secCntxtDeactivateStatus.Int(), KErrNone,
+					_L("RPacketContext::Deactivate returned with error status."));
+					
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusDeactivating -> EStatusInactive
+	expectedSecPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext2,
+				notifySecContextStChStatus,
+				secPacketContextStatus,
+				expectedSecPacketContextStatus,
+				KErrNone);
+    secondaryPacketContext2.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);
+
+    //    -> EStatusInactive
+	RPacketContext::TContextStatus expectedPacketContext2Status = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext2,
+				notifySecContextStChStatus,
+				secPacketContextStatus, 
+				expectedPacketContext2Status,
+				KErrNone);
+	
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusInactive
+	ASSERT_EQUALS(secondaryPacketContext2.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusInactive."));
+	
+	// Check RPacketContext::GetStatus for the primary context returns EStatusActive
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusActive."));
+	
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop:
+	//	secCntxtDeactivateStatus
+	//	dnsInfoStatus2
+	//	dnsInfoStatus
+	//	contextConfigStatus
+	//	getNetworkStatus
+	//	secContextActivateStatus
+	//	notifyServiceDynCapsStatus
+	//	notifySecContextStChStatus
+	//	notifyServiceStChStatus
+	//	setProfileParamStatus
+	//	getProfileCapStatus
+	//	notifyContextStatus
+	CleanupStack::PopAndDestroy(12,&notifyContextStatus);
+
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0007::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0007");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0008::CCTSYIntegrationTestPacketContext0008(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0008::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0008::~CCTSYIntegrationTestPacketContext0008()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0008::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0008
+ * @SYMFssID BA/CTSY/PKTC-0008
+ * @SYMTestCaseDesc Activate and deactivate a secondary context.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::SetConfig, RPacketContext::Activate, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::EnumerateNifs, RPacketService::EnumerateContextsInNif, RPacketService::GetNifInfo, RPacketService::GetContextNameInNif, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters
+ * @SYMTestExpectedResults Pass - Secondary context is activated then deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify NIF info from RPacketService correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+    // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+	//Check if we are on a simulated network
+ 	iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+ 	
+    // Ensure phone is attached to the packet service. 
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+	// Post notification for the RPacketService::NotifyContextAdded
+	TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatus);
+	TName primaryContextId;
+	packetService.NotifyContextAdded(notifyContextStatus, primaryContextId);
+
+	// Open a primary packet context
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	// Check RPacketService::NotifyContextAdded completes with a valid context name
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete."));
+    CHECK_EQUALS_L(notifyContextStatus.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status."));
+    CHECK_TRUE_L(primaryContextId.Length() > 0,	_L("RPacketService::NotifyContextAdded returned with zero length context name."));
+
+	// Post notification for the RPacketService::NotifyContextAdded
+	TName secondaryContextId;
+	packetService.NotifyContextAdded(notifyContextStatus, secondaryContextId);
+
+	// Open a secondary packet context
+    RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+
+	// Check RPacketService::NotifyContextAdded completes with a valid context name
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete."));
+    CHECK_EQUALS_L(notifyContextStatus.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status."));
+    CHECK_TRUE_L(secondaryContextId.Length() > 0, _L("RPacketService::NotifyContextAdded returned with zero length context name."));
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter 
+	ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 1), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); 
+
+	// ===  Add QoS ===
+
+	// Open a new QoS from the secondary context 
+	RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+
+	// Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities 
+	TExtEtelRequestStatus getQoSProfileCapsStatus(packetQoS, EPacketQoSGetProfileCaps);
+	CleanupStack::PushL(getQoSProfileCapsStatus);
+	RPacketQoS::TQoSCapsGPRS qosCaps;
+	TPckg<RPacketQoS::TQoSCapsGPRS> qosCapsPckg(qosCaps);
+    packetQoS.GetProfileCapabilities(getQoSProfileCapsStatus, qosCapsPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getQoSProfileCapsStatus, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out."))						
+	ASSERT_EQUALS(getQoSProfileCapsStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned error."))
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+	RPacketQoS::TQoSGPRSRequested qosRequested;
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosReqPckg(qosRequested);
+    FillParametersFromCapabilities(qosRequested,qosCaps);    
+	TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams);
+	CleanupStack::PushL(setProfileParamStatus);
+
+	packetQoS.SetProfileParameters(setProfileParamStatus, qosReqPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out."));
+	ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status."));
+
+	// Get network info from phone
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info);
+	TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork);
+	CleanupStack::PushL(getNetworkStatus);
+	phone.GetCurrentNetwork(getNetworkStatus, infopckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeMedium), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out"))
+	ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error"))	
+
+	// Get the context config using network info
+	RPacketContext::TContextConfigGPRS config;
+	TPtrC apn, user, pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd);
+	config.iAccessPointName.Copy(apn);
+	config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user);
+	config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd);
+
+	// Set a valid context config with RPacketContext::SetConfig 
+	TPckg<RPacketContext::TContextConfigGPRS> configPk(config);
+	TExtEtelRequestStatus setConfigStatus (primaryPacketContext, EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus);
+	primaryPacketContext.SetConfig(setConfigStatus,configPk);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out"))
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned an error."))	
+
+    // Set notify for  primary context change
+    TExtEtelRequestStatus reqPriContextChangeStatus(primaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(reqPriContextChangeStatus);
+	RPacketContext::TContextStatus primaryPacketContextStatus;
+    primaryPacketContext.NotifyStatusChange(reqPriContextChangeStatus, primaryPacketContextStatus);
+
+    
+	// Activate primary context with RPacketContext::Activate 
+	TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	primaryPacketContext.Activate(contextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+
+	// Check RPacketContext::NotifyStatusChange for the primary context completes with EStatusActivating -> EStatusActive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+            	            primaryPacketContext,
+            				reqPriContextChangeStatus,
+            				primaryPacketContextStatus, 
+            				expectedPacketContextStatus,
+            				KErrNone);
+
+    primaryPacketContext.NotifyStatusChange(reqPriContextChangeStatus, primaryPacketContextStatus);
+	expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+            	            primaryPacketContext,
+            				reqPriContextChangeStatus,
+            				primaryPacketContextStatus, 
+            				expectedPacketContextStatus,
+            				KErrNone);
+
+	// Check RPacketContext::GetStatus for the primary context returns EStatusActive
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(primaryPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned error."));
+	ASSERT_EQUALS(primaryPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusActive as expected."));
+
+
+	// Set notify for  secondary context change
+	TExtEtelRequestStatus reqSecContextChangeStatus(secondaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(reqSecContextChangeStatus);
+	RPacketContext::TContextStatus secondaryPacketContextStatus;
+    secondaryPacketContext.NotifyStatusChange(reqSecContextChangeStatus, secondaryPacketContextStatus);
+
+	// Activate the secondary context. 
+	TExtEtelRequestStatus secContextActivateStatus(secondaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(secContextActivateStatus);
+	secondaryPacketContext.Activate(secContextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(secContextActivateStatus, ETimeMedium), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(secContextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive
+	expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+            	            secondaryPacketContext,
+            				reqSecContextChangeStatus,
+            				secondaryPacketContextStatus, 
+            				expectedPacketContextStatus,
+            				KErrNone);
+    
+    secondaryPacketContext.NotifyStatusChange(reqSecContextChangeStatus, secondaryPacketContextStatus);
+	expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+            	            secondaryPacketContext,
+            				reqSecContextChangeStatus,
+            				secondaryPacketContextStatus, 
+            				expectedPacketContextStatus,
+            				KErrNone);
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+	ASSERT_EQUALS(secondaryPacketContext.GetStatus(primaryPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned error."));
+	ASSERT_EQUALS(secondaryPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusActive as expected."));
+
+	// ===  Check that there is one NIF with one primary and one secondary context belonging to it ===
+
+	// Check RPacketService::EnumerateNifs returns aCount = 1
+	TExtEtelRequestStatus reqNifStatus(packetService, EPacketEnumerateNifs);
+	CleanupStack::PushL(reqNifStatus);
+	TInt nifCount = 0;
+	packetService.EnumerateNifs(reqNifStatus, nifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out."));
+	ASSERT_EQUALS(nifCount, 1, _L("RPacketService::EnumerateNifs did not return 1 as expected"));
+
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing primary context name returns aCount = 2
+	TExtEtelRequestStatus reqContextNifStatus(packetService, EPacketEnumerateContextsInNif);
+	CleanupStack::PushL(reqContextNifStatus);
+	packetService.EnumerateContextsInNif(reqContextNifStatus, primaryContextId, nifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqContextNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out."));
+	ASSERT_EQUALS(nifCount, 2, _L("RPacketService::EnumerateContextsInNif did not return 2 as expected"));
+	
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing secondary context name returns aCount = 2
+	nifCount = 0;
+	packetService.EnumerateContextsInNif(reqContextNifStatus, secondaryContextId, nifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqContextNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out."));
+	ASSERT_EQUALS(nifCount, 2, _L("RPacketService::EnumerateContextsInNif did not return 2 as expected"));
+
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 0 returns valid context name in aContextName
+    TExtEtelRequestStatus contextNameNifsStatus(packetService, EPacketGetContextNameInNif);
+	CleanupStack::PushL(contextNameNifsStatus);
+	TInt index = 0;
+	TName returnedContextName;
+	packetService.GetContextNameInNif(contextNameNifsStatus, primaryContextId, index, returnedContextName );
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out."));
+	ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketService::GetContextNameInNif returned error"));
+	ASSERT_TRUE(returnedContextName.Length() > 0, _L("RPacketService::GetContextNameInNif with aExistingContextName = existing context name returned with an error"));
+	
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 1 returns valid context name in aContextName
+	index = 1;
+	packetService.GetContextNameInNif(contextNameNifsStatus, primaryContextId, index, returnedContextName );
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out."));
+	ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketService::GetContextNameInNif returned error"));
+	ASSERT_TRUE(returnedContextName.Length() > 0, _L("RPacketService::GetContextNameInNif with aExistingContextName = existing context name returned with an error"));
+	
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 2 returns an error != KErrNone
+	index = 2;
+	packetService.GetContextNameInNif(contextNameNifsStatus, primaryContextId, index, returnedContextName );
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out."));
+	ASSERT_TRUE(contextNameNifsStatus.Int() != KErrNone, _L("RPacketService::GetContextNameInNif did not return an error as expected"));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName
+	TExtEtelRequestStatus reqNifInfoStatus(packetService, EPacketGetNifInfo);
+	CleanupStack::PushL(reqNifInfoStatus);
+	RPacketService::TNifInfoV2 nifInfoV2;
+	RPacketService::TNifInfoV2Pckg nifInfoV2Pkg(nifInfoV2);
+	index = 0;
+	packetService.GetNifInfo(reqNifInfoStatus, index, nifInfoV2Pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqNifInfoStatus, ETimeLong), KErrNone, _L("RPacketService::GetNifInfo timed out"));
+	ASSERT_EQUALS(reqNifInfoStatus.Int(), KErrNone, _L("RPacketService::GetNifInfo returned an error"));
+	ASSERT_TRUE(nifInfoV2.iContextName.Length() > 0, _L("RPacketService::GetNifInfo with aCount = 0 returned with invalid iContextName"));
+	
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 2
+	ASSERT_EQUALS(nifInfoV2.iNumberOfContexts, 2, _L("RPacketService::GetNifInfo with iNumberOfContexts did not return 2 as expected"));
+	
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive
+	ASSERT_EQUALS(nifInfoV2.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo did not return EStatusActive as expected"));
+	
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress
+    ASSERT_TRUE(nifInfoV2.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo with iPdpAddress returned with an error"));
+    
+	// Check RPacketService::GetNifInfo with aCount = 0 returns EInternalContext
+	ASSERT_EQUALS(nifInfoV2.iContextType, RPacketService::EInternalContext, _L("RPacketService::GetNifInfo did not return EInternalContext as expected"));
+	
+	// Deactivate the secondary context with RPacketContext::Deactivate 
+	TExtEtelRequestStatus secContextDeactivateStatus(secondaryPacketContext, EPacketContextDeactivate);
+	CleanupStack::PushL(secContextDeactivateStatus);
+	secondaryPacketContext.Deactivate(secContextDeactivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(secContextDeactivateStatus, ETimeMedium), KErrNone, _L("RPacketContext::Deactivate timed out."));					
+	ASSERT_EQUALS(secContextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned error."));
+
+	//Release QoS
+	iEtelSessionMgr.ReleaseSecondaryPacketContextQoS(KMainServer,
+											KMainPhone, 
+											KMainPacketService, 
+											KPrimaryPacketContext1,
+											KSecondaryPacketContext1);
+
+	// Release packet contexts
+	iEtelSessionMgr.ReleaseSecondaryPacketContext(KMainServer,
+											KMainPhone, 
+											KMainPacketService, 
+											KPrimaryPacketContext1,
+											KSecondaryPacketContext1);
+	iEtelSessionMgr.ReleasePrimaryPacketContext(KMainServer,
+											KMainPhone, 
+											KMainPacketService, 
+											KPrimaryPacketContext1);
+
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// notifyContextStatus
+	// getQoSProfileCapsStatus
+	// setProfileParamStatus
+	// getNetworkStatus
+	// setConfigStatus
+	// reqPriContextChangeStatus
+	// contextActivateStatus
+	// reqSecContextChangeStatus
+	// secContextActivateStatus
+	// reqNifStatus
+	// reqContextNifStatus
+	// contextNameNifsStatus
+	// reqNifInfoStatus
+	// secContextDeactivateStatus
+	CleanupStack::PopAndDestroy(14, &notifyContextStatus);
+    
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0008::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0008");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0009::CCTSYIntegrationTestPacketContext0009(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0009::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0009::~CCTSYIntegrationTestPacketContext0009()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0009::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0009
+ * @SYMFssID BA/CTSY/PKTC-0009
+ * @SYMTestCaseDesc Activate and deactivate a secondary context (roaming).
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::GetConfig, RPacketContext::Activate, RPacketContext::Deactivate, RPacketService::NotifyContextAdded, RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketService::NotifyStatusChange, RPacketService::NotifyDynamicCapsChange, RPacketService::GetStatus, RPacketContext::SetConfig, RPacketContext::GetDnsInfo, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters
+ * @SYMTestExpectedResults Pass - Secondary context is activated then deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/manual
+ *
+ * Reason for test: Verify packet service status, packet context statuses, dynamic caps.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure phone is attached to packet service. 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter 
+
+	// ===  Add QoS ===
+
+	// Open a new QoS from the secondary context 
+
+	// Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities 
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+
+	// Set a valid context config with RPacketContext::SetConfig 
+
+	// Check RPacketService::NotifyContextAdded completes with a valid context name
+
+	// Activate primary context with RPacketContext::Activate 
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+
+	// Check RPacketService::GetStatus returns EStatusActive
+
+	// Check RPacketContext::NotifyStatusChange for the primary context completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus for the primary context returns EStatusActive
+
+	// Open a new secondary context from primary context  
+
+	// Activate the secondary context. 
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+
+	// ===  Check dynamic caps ===
+
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsHSDPA.
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach
+
+	// Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsHSDPA
+	// Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach
+
+	// ===  Get context information ===
+
+	// Check RPacketContext::GetConfig for primary context returns same config as that set
+
+	// Check RPacketContext::GetDnsInfo for primary context returns valid primary and secondary DNS ip addresses
+	// Check RPacketContext::GetDnsInfo for secondary context returns same primary and secondary DNS ip addresses as for the primary context
+
+	// Deactivate the secondary context with RPacketContext::Deactivate 
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusDeactivating -> EStatusInactive
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusInactive
+	// Check RPacketContext::GetStatus for the primary context returns EStatusActive
+
+	// Check RPacketService::GetStatus for the secondary context returns EStatusActive
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0009::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0009");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0010::CCTSYIntegrationTestPacketContext0010(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0010::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0010::~CCTSYIntegrationTestPacketContext0010()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0010::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0010
+ * @SYMFssID BA/CTSY/PKTC-0010
+ * @SYMTestCaseDesc Activate and deactivate a secondary context (roaming).
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::SetConfig, RPacketContext::Activate, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::EnumerateNifs, RPacketService::EnumerateContextsInNif, RPacketService::GetNifInfo, RPacketService::GetContextNameInNif, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters
+ * @SYMTestExpectedResults Pass - Secondary context is activated then deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/manual
+ *
+ * Reason for test: Verify NIF info from RPacketService correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure phone is attached to the packet service. 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter 
+
+	// ===  Add QoS ===
+
+	// Open a new QoS from the secondary context  
+
+	// Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities 
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+
+	// Set a valid context config with RPacketContext::SetConfig 
+
+	// Activate primary context with RPacketContext::Activate 
+
+	// Check RPacketContext::NotifyStatusChange for the primary context completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus for the primary context returns EStatusActive
+
+	// Open a new secondary context from primary context  
+
+	// Activate the secondary context. 
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+
+	// ===  Check that there is one NIF with one primary and one secondary context belonging to it ===
+
+	// Check RPacketService::EnumerateNifs returns aCount = 1
+
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing primary context name returns aCount = 2
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing secondary context name returns aCount = 2
+
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 0 returns valid context name in aContextName
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 1 returns valid context name in aContextName
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 2 returns an error != KErrNone
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 2
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress
+	// Check RPacketService::GetNifInfo with aCount = 0 returns EExternalContext
+
+	// Deactivate the secondary context with RPacketContext::Deactivate 
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0010::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0010");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0011::CCTSYIntegrationTestPacketContext0011(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0011::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0011::~CCTSYIntegrationTestPacketContext0011()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0011::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0011
+ * @SYMFssID BA/CTSY/PKTC-0011
+ * @SYMTestCaseDesc Activate a context when it is already active.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::Activate, RPacketContext::GetStatus
+ * @SYMTestExpectedResults Pass - Error returned on activation.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context status.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+    
+    
+    // Ensure a primary PDP context is active. 
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+    // Activate primary context.											
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext);	
+        
+    
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Activate the active context with RPacketContext::Activate. 
+	TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	primaryPacketContext.Activate(contextActivateStatus);
+
+	// Check error is returned.
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_TRUE(contextActivateStatus.Int() != KErrNone, _L("RPacketContext::Activate did not return error as expected."));
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+	RPacketContext::TContextStatus primaryPacketContextStatus;
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(primaryPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(primaryPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusActive."));
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// contextActivateStatus
+	CleanupStack::PopAndDestroy(1, &contextActivateStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0011::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0011");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0012::CCTSYIntegrationTestPacketContext0012(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0012::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0012::~CCTSYIntegrationTestPacketContext0012()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0012::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0012
+ * @SYMFssID BA/CTSY/PKTC-0012
+ * @SYMTestCaseDesc Re-activate a context after deactivation.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketService::NotifyDynamicCapsChange, RPacketService::GetDynamicCaps
+ * @SYMTestExpectedResults Pass - Context is deactivated and then reactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context and packet service status, dynamic caps.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+	// Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+    // Get the attach mode so that it can be restored at the end of the test
+    RPacketService::TAttachMode attachMode;
+    CHECK_EQUALS_L(packetService.GetAttachMode(attachMode), KErrNone, _L("RPacketService::GetAttachMode returned with an error."));
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+   	 			
+	// Ensure a PDP context is active.
+	RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+	
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,packetContext); 
+												 	
+	
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(packetContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+		
+	// Post notification for service's status change
+	TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange);
+	CleanupStack::PushL(notifyServiceStChStatus);
+	RPacketService::TStatus packetServiceStatus;
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+	
+	// Post notification for service's dynamic caps change
+    RPacketService::TDynamicCapsFlags dynCaps;
+	TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange);
+	CleanupStack::PushL(notifyServiceDynCapsStatus);
+	packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps);
+	
+	// Deactivate the PDP context with RPacketContext::Deactivate 
+	TExtEtelRequestStatus contextDeactivateStatus(packetContext, EPacketContextDeactivate);
+	CleanupStack::PushL(contextDeactivateStatus);
+	packetContext.Deactivate(contextDeactivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Deactivate timed out."));					
+	ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned with error status."));
+					
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive
+    RPacketContext::TContextStatus 	expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+					
+	// Check RPacketContext::GetStatus returns EStatusInactive
+	ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+	
+	// Check RPacketService::NotifyStatusChange completes with EStatusAttached
+	RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusAttached;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+				packetService,
+				notifyServiceStChStatus,
+				packetServiceStatus, 
+				expectedPacketServiceStatus,
+				KErrNone);
+				
+	// Check RPacketService::GetStatus returns EStatusAttached
+	RPacketService::TStatus pckSrvcStatus;
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status."));
+	
+	// ===  Check dynamic caps ===
+
+	// Check RPacketService::GetDynamicCaps returns caps in set of RPacketService::KCapsSMSTransfer | RPacketService::KCapsManualDetach  | RPacketService::KCapsRxCSCall |  RPacketService::KCapsRxContextActivationReq
+	// Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach
+  	TInt wantedDynCapBits = RPacketService::KCapsSMSTransfer | RPacketService::KCapsManualDetach |  RPacketService::KCapsRxContextActivationReq | RPacketService::KCapsRxCSCall;
+	TInt unWantedDynCapBits = RPacketService::KCapsManualAttach;
+	ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+	ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("RPacketService::GetDynamicCaps did not return correct dynamic caps"));
+	
+	// Post notification for service's status change
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+	
+	// Activate a PDP context again. 
+	// Post notification for context's status change
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+
+	// Activate packet context with RPacketContext::Activate
+	TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 50002 );
+	// CTSY doesn´t support context re-activation. See cmmpacketcontextgsmwcdmaext.cpp and CMmPacketContextGsmWcdmaExt::ActivateL()
+	// Test case is made to leave because of this.
+	CHECK_TRUE_L(EFalse, _L("This test has been made to leave intentionally - ***Send message fail, and ctsy cancel it later****"));
+	packetContext.Activate(contextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+	
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActive
+    expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				packetContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+				
+    ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("Packet Context's status expected to be EStatusActive but is not."));
+
+	// Post notification for context's status change
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+		
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+	expectedPacketServiceStatus = RPacketService::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+					packetService,
+					notifyServiceStChStatus,
+					packetServiceStatus, 
+					expectedPacketServiceStatus,
+					KErrNone);
+					
+	// Check RPacketService::GetStatus returns EStatusActive
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+	
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+	expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+	expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					packetContext,
+					notifyContextStChStatus,
+					packetContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+					
+	// Check RPacketContext::GetStatus returns EStatusActive
+	ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+	
+	// ===  Check dynamic caps ===
+
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer.
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach
+    wantedDynCapBits = RPacketService::KCapsRxCSCall | RPacketService::KCapsRxContextActivationReq | RPacketService::KCapsSMSTransfer;
+	unWantedDynCapBits = RPacketService::KCapsManualAttach;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyDynamicCapsChange( 
+				packetService,
+				notifyServiceDynCapsStatus,
+				dynCaps, 
+				wantedDynCapBits,
+				unWantedDynCapBits,
+				KErrNone);
+				
+	// Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer
+	// Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach
+	ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+	ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("Packet service's KCapsActivate flag not set"));
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Return packet service's attach mode to original setting
+	packetService.SetAttachMode(attachMode);
+
+	// pop
+	// notifyContextStChStatus
+	// notifyServiceStChStatus
+	// notifyServiceDynCapsStatus
+	// contextDeactivateStatus
+	// contextActivateStatus
+	
+	CleanupStack::PopAndDestroy(5, &notifyContextStChStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0012::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0012");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0013::CCTSYIntegrationTestPacketContext0013(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0013::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0013::~CCTSYIntegrationTestPacketContext0013()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0013::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0013
+ * @SYMFssID BA/CTSY/PKTC-0013
+ * @SYMTestCaseDesc Activate and deactivate two primary contexts.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::SetConfig, RPacketContext::Activate, RPacketContext::GetConfig, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::EnumerateContexts, RPacketService::GetContextInfo, RPacketContext::GetDnsInfo, RPacketService::EnumerateContextsInNif, RPacketService::EnumerateNifs, RPacketService::GetNifInfo, RPacketService::GetContextNameInNif, RPacketContext::Deactivate
+ * @SYMTestExpectedResults Pass - Two contexts can be simultaneously active.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify it is possible to have two active primary contexts simultaneously.
+
+Verify context and packet service status, NIF related info, DNS and context config info.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Attach to the packet service. 
+	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L( iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL( phone ), KErrNone, 
+			_L("Network is unavailable") );
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+	SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+	// Activate a primary context.
+	RPacketContext& packetContext1 = iEtelSessionMgr.GetPrimaryPacketContextL(
+			KMainServer,
+			KMainPhone,
+			KMainPacketService,
+			KPrimaryPacketContext1);
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,packetContext1);
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+    // Post notification for the RPacketService::NotifyContextAdded
+	TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatus);
+	TName contextId;
+	packetService.NotifyContextAdded(notifyContextStatus, contextId);
+	
+	// Post notification for service's status change 
+	TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange);
+	CleanupStack::PushL(notifyServiceStChStatus);
+	RPacketService::TStatus packetServiceStatus;
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+		
+	// Open another primary context (referred to in this test as "primary context 2") 
+   RPacketContext& packetContext2 = iEtelSessionMgr.GetPrimaryPacketContextL(
+			KMainServer,
+			KMainPhone,
+			KMainPacketService,
+			KPrimaryPacketContext2);
+    
+	// Set a valid context config for primary context 2 using RPacketContext::SetConfig 
+   TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork);
+	CleanupStack::PushL(getNetworkStatus);
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info);
+	phone.GetCurrentNetwork(getNetworkStatus, infopckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeMedium),
+			KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out"));
+	ASSERT_EQUALS(getNetworkStatus.Int(),
+			KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error"));
+
+	RPacketContext::TContextConfigGPRS contextConfig;
+	TPtrC apn, user, pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd, 2);
+	contextConfig.iAccessPointName.Copy(apn);
+	contextConfig.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user);
+	contextConfig.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd);
+	TPckg<RPacketContext::TContextConfigGPRS> contextConfigPckg(contextConfig);
+	TExtEtelRequestStatus setConfigStatus(packetContext2, EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus);
+    packetContext2.SetConfig(setConfigStatus, contextConfigPckg);	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, 
+                  _L("RPacketContext::SetConfig timed out"));
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone,
+                  _L("RPacketContext::SetConfig returned with error status."));
+    
+	
+	// Check RPacketService::NotifyContextAdded completes with a valid context name
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone,
+			_L("RPacketService::NotifyContextAdded did not complete."));
+	ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, 
+                  _L("RPacketService::NotifyContextAdded returned with error status."));
+    ASSERT_TRUE(contextId.Length() > 0,
+                _L("Packet context config has zero length contextId."));
+	
+
+	// Post notification for service's dynamic caps change
+    RPacketService::TDynamicCapsFlags dynCaps;
+	TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange);
+	CleanupStack::PushL(notifyServiceDynCapsStatus);
+	packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps);
+		
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(packetContext2, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	packetContext2.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+
+	// Activate primary context 2 with RPacketContext::Activate
+	TExtEtelRequestStatus contextActivateStatus(packetContext2, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	packetContext2.Activate(contextActivateStatus);
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, 
+			_L("RPacketContext::Activate timed-out"));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone,
+			_L("RPacketContext::Activate returned with error status."));
+		
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::GetStatus returns EStatusActive
+	RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+        packetService,
+        notifyServiceStChStatus,
+        packetServiceStatus, 
+        expectedPacketServiceStatus,
+        KErrNone);
+	
+	// Check RPacketContext::NotifyStatusChange for primary context 2 completes with EStatusActivating -> EStatusActive
+    RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+			packetContext2,
+			notifyContextStChStatus,
+			packetContextStatus, 
+			expectedPacketContextStatus,
+			KErrNone);
+    ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActivating, _L("Packet Context's status expected to be EStatusActivating but is not."));
+    packetContext2.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+    expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+			packetContext2,
+			notifyContextStChStatus,
+			packetContextStatus, 
+			expectedPacketContextStatus,
+			KErrNone);
+	
+	// Check RPacketContext::GetStatus for primary context 2 returns EStatusActive
+	ASSERT_EQUALS(packetContext2.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+
+    
+	// ===  Check dynamic caps ===
+
+	// Check RPacketService::NotifyDynamicCapsChange for primary context 2 completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer.
+	// Check RPacketService::NotifyDynamicCapsChange for primary context 2 completes with caps NOT in set of RPacketService::KCapsManualAttach
+    TInt wantedDynCapBits = RPacketService::KCapsRxCSCall | RPacketService::KCapsRxContextActivationReq | RPacketService::KCapsSMSTransfer;
+	TInt unWantedDynCapBits = RPacketService::KCapsManualAttach;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyDynamicCapsChange( 
+				packetService,
+				notifyServiceDynCapsStatus,
+				dynCaps, 
+				wantedDynCapBits,
+				unWantedDynCapBits,
+				KErrNone);
+	
+	// Check RPacketService::GetDynamicCaps for primary context 2 returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer
+	// Check RPacketService::GetDynamicCaps for primary context 2 returns caps NOT in set of RPacketService::KCapsManualAttach
+	ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+	ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("Packet service's KCapsActivate flag not set"));
+	
+	// ===  Get context information ===
+
+	// Check RPacketContext::GetConfig for primary context 2 returns same config as that set
+	TExtEtelRequestStatus contextConfigStatus(packetContext2, EPacketContextGetConfig);
+	CleanupStack::PushL(contextConfigStatus);
+	RPacketContext::TContextConfigGPRS getConfig;
+	TPckg<RPacketContext::TContextConfigGPRS> getConfigPk(getConfig);
+		packetContext2.GetConfig(contextConfigStatus, getConfigPk);
+		ASSERT_EQUALS(WaitForRequestWithTimeOut(contextConfigStatus, ETimeMedium), KErrNone, 
+			_L("RPacketContext::GetConfig timed out."));
+	ASSERT_EQUALS(contextConfigStatus.Int(), KErrNone,
+			_L("RPacketContext::GetConfig returned an error."));
+    ASSERT_EQUALS_DES8(getConfig.iAccessPointName, contextConfig.iAccessPointName, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iUsername, contextConfig.iProtocolConfigOption.iAuthInfo.iUsername, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iPassword, contextConfig.iProtocolConfigOption.iAuthInfo.iPassword, _L("RPacketContext::GetConfig returns incorrect config data."));
+	
+	// Check RPacketContext::GetDnsInfo for primary context 2 returns valid primary and secondary DNS ip addresses
+	RPacketContext::TDnsInfoV2 dnsInfo;
+	RPacketContext::TTDnsInfoV2Pckg dnsInfoPkg(dnsInfo);
+	TExtEtelRequestStatus dnsInfoStatus(packetContext2, EPacketContextGetDNSInfo);
+	CleanupStack::PushL(dnsInfoStatus);
+		packetContext2.GetDnsInfo(dnsInfoStatus, dnsInfoPkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(dnsInfoStatus, ETimeMedium), KErrNone, 
+			_L("RPacketContext::GetDnsInfo timed out."));
+	ASSERT_EQUALS(dnsInfoStatus.Int(), KErrNone,
+			_L("RPacketContext::GetDnsInfo returned an error."));
+    ASSERT_TRUE(dnsInfo.iPrimaryDns.Length() > 0,
+                _L("RPacketContext::GetDnsInfo returned with zero length PrimaryDns."));
+	ASSERT_TRUE(dnsInfo.iSecondaryDns.Length() > 0,
+                _L("RPacketContext::GetDnsInfo returned with zero length SecondaryDns."));
+
+	// ===  Check that there is one NIF with one primary context belonging to it ===
+
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = name of primary context 2 returns aCount = 1
+	TExtEtelRequestStatus enumContextsInfStatus(packetService, EPacketEnumerateContextsInNif);
+	CleanupStack::PushL(enumContextsInfStatus);
+	TInt count=-1;
+    packetService.EnumerateContextsInNif(enumContextsInfStatus,contextId,count);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumContextsInfStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::EnumerateContextsInNif timed out."));
+		ASSERT_EQUALS(enumContextsInfStatus.Int(), KErrNone, 
+			_L("RPacketService::EnumerateContextsInNif failed."));
+	ASSERT_EQUALS(count,1,_L("RPacketService::EnumerateContextsInNif did not return correct number of NIFs."));
+
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = name of primary context 2 and aIndex = 0 returns context name which is same as the name of primary context 2
+	TBuf<200> contextName;
+	TExtEtelRequestStatus getContextNameInNifStatus(packetService, EPacketGetContextNameInNif);
+	CleanupStack::PushL(getContextNameInNifStatus);
+		packetService.GetContextNameInNif(getContextNameInNifStatus,contextId,0,contextName);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::GetContextNameInNif timed out."));
+		ASSERT_EQUALS(getContextNameInNifStatus.Int(), KErrNone, 
+			_L("RPacketService::GetContextNameInNif failed."));
+	ASSERT_EQUALS_DES16(contextName,contextId,_L("RPacketService::GetContextNameInNif did not returned the expected value."));
+	
+	// Check RPacketService::EnumerateNifs returns aCount = 2
+	TExtEtelRequestStatus enumerateNifsStatus(packetService, EPacketEnumerateNifs);
+	CleanupStack::PushL(enumerateNifsStatus);
+	count=-1;
+    packetService.EnumerateNifs(enumerateNifsStatus,count);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateNifsStatus, ETimeMedium), KErrNone, 
+                  _L("RPacketService::EnumerateNifs timed out."));
+    ASSERT_EQUALS(enumerateNifsStatus.Int(), KErrNone, 
+                  _L("RPacketService::EnumerateNifs failed."));
+	ASSERT_EQUALS(count,2,_L("RPacketService::EnumerateNifs did not return correct number of NIFs."));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName
+	TExtEtelRequestStatus getNifInfoStatus(packetService, EPacketGetNifInfo);
+	CleanupStack::PushL(getNifInfoStatus);
+	RPacketService::TNifInfoV2 nifInfo;
+	RPacketService::TNifInfoV2Pckg nifInfoPckg(nifInfo);
+    packetService.GetNifInfo(getNifInfoStatus,0,nifInfoPckg);
+    ASSERT_EQUALS(WaitForRequestWithTimeOut(getNifInfoStatus, ETimeMedium), KErrNone, 
+                  _L("RPacketService::GetNifInfo timed out."));
+    ASSERT_EQUALS(getNifInfoStatus.Int(), KErrNone, 
+                  _L("RPacketService::GetNifInfo failed."));
+	ASSERT_TRUE(nifInfo.iContextName.Length()>0,_L("RPacketService::GetNifInfo invlaid context name"));
+	
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 1
+	ASSERT_EQUALS(nifInfo.iNumberOfContexts,1,_L("RPacketService::GetNifInfo wrong number of contexts"));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive
+	ASSERT_EQUALS(nifInfo.iNifStatus,RPacketContext::EStatusActive,_L("RPacketService::GetNifInfo wrong status"));
+	
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress
+	ASSERT_TRUE(nifInfo.iPdpAddress.Length()>0,_L("RPacketService::GetNifInfo invlaid PDP address"));
+	
+	// Check RPacketService::GetNifInfo with aCount = 0 returns EInternalContext
+	ASSERT_EQUALS(nifInfo.iContextType, RPacketService::EInternalContext,_L("RPacketService::GetNifInfo wrong type"));
+	
+	// Check RPacketService::GetNifInfo with aCount = 1 returns valid name in iContextName
+	packetService.GetNifInfo(getNifInfoStatus,1,nifInfoPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNifInfoStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::GetNifInfo timed out."));
+	ASSERT_EQUALS(getNifInfoStatus.Int(), KErrNone, 
+			_L("RPacketService::GetNifInfo failed."));
+	ASSERT_TRUE(nifInfo.iContextName.Length()>0,_L("RPacketService::GetNifInfo invlaid context name"));
+
+	// Check RPacketService::GetNifInfo with aCount = 1 returns iNumberOfContexts = 1
+	ASSERT_EQUALS(nifInfo.iNumberOfContexts,1,_L("RPacketService::GetNifInfo wrong number of contexts"));
+
+	// Check RPacketService::GetNifInfo with aCount = 1 returns iNifStatus = EStatusActive
+	ASSERT_EQUALS(nifInfo.iNifStatus,RPacketContext::EStatusActive,_L("RPacketService::GetNifInfo wrong status"));
+
+	// Check RPacketService::GetNifInfo with aCount = 1 returns valid address in iPdpAddress
+	ASSERT_TRUE(nifInfo.iPdpAddress.Length()>0,_L("RPacketService::GetNifInfo invlaid PDP address"));
+
+	// Check RPacketService::GetNifInfo with aCount = 1 returns EExternalContext
+	ASSERT_EQUALS(nifInfo.iContextType, RPacketService::EInternalContext,_L("RPacketService::GetNifInfo wrong type"));
+
+	// Post notification for context's status change
+	packetContext2.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+
+	// Deactivate primary context 2 with RPacketContext::Deactivate 
+	TExtEtelRequestStatus contextDeactivateStatus(packetContext2, EPacketContextDeactivate);
+	CleanupStack::PushL(contextDeactivateStatus);
+	packetContext2.Deactivate(contextDeactivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::Deactivate timed out."));					
+	ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone,
+					_L("RPacketContext::Deactivate returned with error status."));
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange for primary context 2 completes with EStatusDeactivating -> EStatusInactive
+    expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				packetContext2,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+    ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusDeactivating, _L("Packet Context's status expected to be EStatusActivating but is not."));
+    packetContext2.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+    expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				packetContext2,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+    ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("Packet Context's status expected to be EStatusActivating but is not."));
+
+	// Check RPacketContext::GetStatus returns for primary context 2 EStatusInactive
+	ASSERT_EQUALS(packetContext2.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketService::GetStatus returns EStatusActive
+	ASSERT_EQUALS(packetService.GetStatus(packetServiceStatus), KErrNone, _L("RPacketService::GetStatus return error."));
+	ASSERT_EQUALS(packetServiceStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+
+	// Check RPacketService::GetDynamicCaps returns caps in set of RPacketService::KCapsManualAttach | RPacketService::KCapsRxCSCall
+	// Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsSMSTransfer | RPacketService::KCapsManualDetach |  RPacketService::KCapsRxContextActivationReq
+	wantedDynCapBits=RPacketService::KCapsManualAttach | RPacketService::KCapsRxCSCall;
+	unWantedDynCapBits=RPacketService::KCapsSMSTransfer | RPacketService::KCapsManualDetach |  RPacketService::KCapsRxContextActivationReq;
+	ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+	//ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("Packet service's KCapsActivate flag not set"));
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop:
+	//	contextDeactivateStatus
+	//	getNifInfoStatus
+	//	enumerateNifsStatus
+	//	getContextNameInNifStatus
+	//	enumContextsInfStatus
+	//	dnsInfoStatus
+	//	contextConfigStatus
+	//	contextActivateStatus
+	//	notifyContextStChStatus
+	//	notifyServiceDynCapsStatus
+	//	notifyServiceStChStatus
+	//	setConfigStatus
+	//	getNetworkStatus
+	//	notifyContextStatus
+	CleanupStack::PopAndDestroy(14,&notifyContextStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0013::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0013");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0014::CCTSYIntegrationTestPacketContext0014(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0014::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0014::~CCTSYIntegrationTestPacketContext0014()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0014::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0014
+ * @SYMFssID BA/CTSY/PKTC-0014
+ * @SYMTestCaseDesc Deactivate a primary context when there is a secondary context active.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyDynamicCapsChange, RPacketService::GetDynamicCaps, RPacketService::EnumerateNifs, RPacketContext::Deactivate
+ * @SYMTestExpectedResults Pass - Primary and secondary contexts deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify secondary is also deactivated.
+
+Verify packet service status, packet context status, context info, NIF info correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+    
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    //Check if we are on a simulated network
+    iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+   	// Set the attach mode to EAttachWhenPossible. 
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+	
+	// Ensure there is a primary context active and a secondary context active. 	
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+    RPacketContext& secondaryPacketContext2 = iEtelSessionMgr.GetSecondaryPacketContextL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+	// Activate primary context.											
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,primaryPacketContext);	
+	
+	// Activate the secondary context.
+	ActivateSecondaryPacketContextL(secondaryPacketContext2);
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+		
+	
+	
+	
+	
+	// Post notification for primary context status change
+	TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	// Post notification for secondary context status change
+	TExtEtelRequestStatus notifyContext2StChStatus(secondaryPacketContext2, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContext2StChStatus);
+	RPacketContext::TContextStatus packetContextStatus2;
+	secondaryPacketContext2.NotifyStatusChange(notifyContextStChStatus, packetContextStatus2);
+
+	// Post notification for service's status change
+	TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange);
+	CleanupStack::PushL(notifyServiceStChStatus);
+	RPacketService::TStatus packetServiceStatus;
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+	
+	// Post notification for service's dynamic caps change
+    RPacketService::TDynamicCapsFlags dynCaps;
+	TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange);
+	CleanupStack::PushL(notifyServiceDynCapsStatus);
+	packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps);
+
+	// Deactivate the primary context. 
+	TExtEtelRequestStatus contextDeactivateStatus(primaryPacketContext, EPacketContextDeactivate);
+	CleanupStack::PushL(contextDeactivateStatus);
+	primaryPacketContext.Deactivate(contextDeactivateStatus);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::Deactivate timed out."));					
+	ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone,
+					_L("RPacketContext::Deactivate returned with error status."));
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange for primary context completes with EStatusDeactivating -> EStatusInactive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+				
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	expectedPacketContextStatus = RPacketContext::EStatusInactive;	
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus for primary context returns EStatusInactive
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus for primary context returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::NotifyStatusChange for secondary context completes with EStatusDeactivating -> EStatusInactive
+	expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10061 );
+   	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext2,
+				notifyContext2StChStatus,
+				packetContextStatus2, 
+				expectedPacketContextStatus,
+				KErrNone);
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10062 );
+	// Leaving since the cancellation did not work, so ETEL will panic if another notification will be send
+	CHECK_TRUE_L(EFalse, _L("This test has been made to leave intentionally - CTSY doesn't have support for Cancelation of NotifyStatusChange")); 
+	secondaryPacketContext2.NotifyStatusChange(notifyContext2StChStatus, packetContextStatus);
+	expectedPacketContextStatus = RPacketContext::EStatusInactive;	
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext2,
+				notifyContext2StChStatus,
+				packetContextStatus2, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus for secondary context returns EStatusInactive
+	ASSERT_EQUALS(secondaryPacketContext2.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus for secondary context returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketService::NotifyStatusChange for primary context completes with EStatusAttached
+	RPacketService::TStatus expectedPacketStatus = RPacketService::EStatusAttached;
+	
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( 
+				packetService,
+				notifyServiceStChStatus,
+				packetServiceStatus, 
+				expectedPacketStatus,
+				KErrNone );
+
+	// Check RPacketService::GetStatus for primary context returns EStatusAttached	
+	
+	ASSERT_EQUALS(packetService.GetStatus(packetServiceStatus), KErrNone, _L("RPacketService::GetStatus return error."));
+	ASSERT_EQUALS(packetServiceStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status."));
+
+	// Check RPacketService::NotifyDynamicCapsChange returns caps in set of RPacketService::KCapsSMSTransfer  | RPacketService::KCapsManualDetach | RPacketService::KCapsRxContextActivationReq
+	// Check RPacketService::NotifyDynamicCapsChange returns caps NOT in set of RPacketService::KCapsManualAttach | RPacketService::KCapsRxCSCall
+  	TInt wantedDynCapBits = RPacketService::KCapsSMSTransfer  | RPacketService::KCapsManualDetach | RPacketService::KCapsRxContextActivationReq;
+	TInt unWantedDynCapBits = RPacketService::KCapsManualAttach | RPacketService::KCapsRxCSCall;
+	
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyDynamicCapsChange( 
+				packetService,
+				notifyServiceDynCapsStatus,
+				dynCaps, 
+				wantedDynCapBits,
+				unWantedDynCapBits,
+				KErrNone);
+				
+	// Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach | RPacketService::KCapsRxCSCall
+	// Check RPacketService::GetDynamicCaps returns caps in set of RPacketService::KCapsSMSTransfer | RPacketService::KCapsManualDetach |  RPacketService::KCapsRxContextActivationReq
+	ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+	ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("RPacketService::GetDynamicCaps did not return correct dynamic caps"));
+
+	
+	// Check RPacketService::EnumerateNifs returns aCount = 0
+	TExtEtelRequestStatus enumerateNifsStatus(packetService, EPacketEnumerateNifs);
+	CleanupStack::PushL(enumerateNifsStatus);
+	TInt nifCount = 0;
+	const TInt wantedCount = 0;
+	packetService.EnumerateNifs(enumerateNifsStatus, nifCount);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateNifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out"));
+	ASSERT_EQUALS(nifCount, wantedCount, _L("RPacketService::EnumerateNifs returned wrong NIF count."));
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// PopAndDestroy
+	// notifyContextStChStatus
+	// notifyContext2StChStatus
+	// notifyServiceStChStatus
+	// notifyServiceDynCapsStatus
+	// contextDeactivateStatus
+	// enumerateNifsStatus
+	CleanupStack::PopAndDestroy(6, &notifyContextStChStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0014::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0014");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0015::CCTSYIntegrationTestPacketContext0015(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0015::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0015::~CCTSYIntegrationTestPacketContext0015()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0015::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0015
+ * @SYMFssID BA/CTSY/PKTC-0015
+ * @SYMTestCaseDesc Deactivate a secondary context and check that primary context is kept active.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::GetContextInfo, RPacketService::EnumerateContexts
+ * @SYMTestExpectedResults Pass - First context remains active. Second context is deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify packet service status, packet context status, context info, NIF info correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL	
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    // Check if we are on a simulated network
+    iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+	// Set the attach mode to EAttachWhenPossible. 
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+	
+	TExtEtelRequestStatus notifyContextAddedStatus(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextAddedStatus);
+	TName primaryCntxtId;
+	
+	//post notifier for RPacketService::NotifyContextAdded
+	packetService.NotifyContextAdded(notifyContextAddedStatus, primaryCntxtId);
+	
+	// Ensure there is a primary context active and a secondary context active. 
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextAddedStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded timed out"));
+	CHECK_EQUALS_L(notifyContextAddedStatus.Int(),KErrNone, _L("RPacketService::NotifyContextAdded returned an error"));
+	
+	TName secondaryCntxtId;
+	
+	//post notifier for RPacketService::NotifyContextAdded
+	packetService.NotifyContextAdded(notifyContextAddedStatus, secondaryCntxtId);
+    RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+												
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextAddedStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded timed out"));
+	CHECK_EQUALS_L(notifyContextAddedStatus.Int(),KErrNone, _L("RPacketService::NotifyContextAdded returned an error"));
+	
+	// Activate primary context.
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,primaryPacketContext);	
+	
+	// Activate the secondary context.
+	ActivateSecondaryPacketContextL(secondaryPacketContext);
+	
+	
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+
+
+	// Post notification for secondary context status change
+	TExtEtelRequestStatus notifyContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus secondaryPacketContextStatus;
+	secondaryPacketContext.NotifyStatusChange(notifyContextStChStatus, secondaryPacketContextStatus);
+	
+	// Deactivate the secondary context. 
+	TExtEtelRequestStatus contextDeactivateStatus(secondaryPacketContext, EPacketContextDeactivate);
+	CleanupStack::PushL(contextDeactivateStatus);
+	secondaryPacketContext.Deactivate(contextDeactivateStatus);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::Deactivate timed out."));					
+	ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone,
+					_L("RPacketContext::Deactivate returned with error status."));
+					
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange for secondary context completes with EStatusDeactivating -> EStatusInactive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+   	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifyContextStChStatus,
+				secondaryPacketContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+	
+	//repost notifier			
+	secondaryPacketContext.NotifyStatusChange(contextDeactivateStatus, secondaryPacketContextStatus);
+	
+	expectedPacketContextStatus = RPacketContext::EStatusInactive;	
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifyContextStChStatus,
+				secondaryPacketContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus for secondary context returns EStatusInactive
+	RPacketContext::TContextStatus getPacketContextStatus;
+	CHECK_EQUALS_L(secondaryPacketContext.GetStatus(getPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	CHECK_EQUALS_L(getPacketContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusInactive."));
+
+	// Check RPacketService::GetStatus for primary context returns EStatusActive
+	RPacketService::TStatus packetServiceStatus;		
+	ASSERT_EQUALS(packetService.GetStatus(packetServiceStatus), KErrNone, _L("RPacketService::GetStatus return error."));
+	ASSERT_EQUALS(packetServiceStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+
+	// Check RPacketService::EnumerateContexts returns aCount = 2
+	TExtEtelRequestStatus enumContextsStatus(packetService, EPacketEnumerateContexts);
+	CleanupStack::PushL(enumContextsStatus);
+	TInt count = 0;
+    TInt max = 0;
+    const TInt wantedCount = 2;
+    packetService.EnumerateContexts(enumContextsStatus, count, max);
+    
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumContextsStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::EnumerateContexts timed out."));
+    ASSERT_EQUALS(enumContextsStatus.Int(), KErrNone, 
+			_L("RPacketService::EnumerateContexts returned with an error."));
+	ASSERT_EQUALS(count, wantedCount,_L("RPacketService::EnumerateContexts did not return correct number of open contexts."));
+
+	// Check RPacketService::GetContextInfo for aIndex = 0 and 1 return the correct context name and status for the primary and secondary context.
+	TExtEtelRequestStatus getContextsInfoStatus(packetService, EPacketGetContextInfo);
+	CleanupStack::PushL(getContextsInfoStatus);
+	RPacketService::TContextInfo primaryContextInfo;
+	RPacketService::TContextInfo secondaryContextInfo;
+	packetService.GetContextInfo(getContextsInfoStatus, 0, primaryContextInfo);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextsInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetContextInfo timed out."));
+    ASSERT_EQUALS(getContextsInfoStatus.Int(), KErrNone, _L("RPacketService::GetContextInfo returned with an error."));
+    
+	ASSERT_EQUALS_DES16(primaryContextInfo.iName, primaryCntxtId, _L("RPacketService::GetContextInfo did not return correct iName"));
+	ASSERT_EQUALS(primaryContextInfo.iStatus, RPacketContext::EStatusActive, _L("RPacketService::GetContextInfo did not return iStatus EStatusActive"));
+	
+	packetService.GetContextInfo(getContextsInfoStatus, 1, secondaryContextInfo);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextsInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetContextInfo timed out."));
+    ASSERT_EQUALS(getContextsInfoStatus.Int(), KErrNone, _L("RPacketService::GetContextInfo returned with an error."));
+    
+	ASSERT_EQUALS_DES16(secondaryContextInfo.iName, secondaryCntxtId, _L("RPacketService::GetContextInfo did not return correct iName"));
+	ASSERT_EQUALS(secondaryContextInfo.iStatus, RPacketContext::EStatusInactive, _L("RPacketService::GetContextInfo did not return iStatus EStatusInactive"));
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	//--PopAndDestroy--
+	//notifyContextAddedStatus
+	//notifyContextStChStatus
+	//contextDeactivateStatus
+	//enumContextsStatus
+	//getContextsInfoStatus
+	CleanupStack::PopAndDestroy(5, &notifyContextAddedStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0015::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0015");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0016::CCTSYIntegrationTestPacketContext0016(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0016::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0016::~CCTSYIntegrationTestPacketContext0016()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0016::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0016
+ * @SYMFssID BA/CTSY/PKTC-0016
+ * @SYMTestCaseDesc Handle network initiated deactivation.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::GetStatus, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketService::GetContextInfo, RPacketService::EnumerateContexts
+ * @SYMTestExpectedResults Pass - Context 1 is deactivated. Other context is unaffected.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify packet service status, packet context status and context info.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// == Ensure there are two PDP contexts active. ==
+	
+    //Check if we are on a simulated network
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL( phone ), KErrNone, _L("Network is unavailable"));
+	iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+
+    // Ensure phone is attached to the packet service. 
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+	
+	//post notifier for RPacketService::NotifyContextAdded
+    TExtEtelRequestStatus notifyContextAddedStatus(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextAddedStatus);
+	TName contextId1;
+	packetService.NotifyContextAdded(notifyContextAddedStatus, contextId1);
+
+    // Open primary context 1
+    RPacketContext& primaryPacketContext1 = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+	
+	// Check RPacketService::NotifyContextAdded completes
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextAddedStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded timed out"));
+	CHECK_EQUALS_L(notifyContextAddedStatus.Int(),KErrNone, _L("RPacketService::NotifyContextAdded returned an error"));
+
+    // Activate primary packet context 1
+    iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext1);
+	TName contextId2;
+	
+	//post notifier for RPacketService::NotifyContextAdded
+	packetService.NotifyContextAdded(notifyContextAddedStatus, contextId2);
+
+    // Open primary context 2
+    RPacketContext& primaryPacketContext2 = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext2);
+											
+	// Check RPacketService::NotifyContextAdded completes
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextAddedStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded timed out"));
+	CHECK_EQUALS_L(notifyContextAddedStatus.Int(),KErrNone, _L("RPacketService::NotifyContextAdded returned an error"));
+
+    // Activate primary packet context 2
+    iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext2,2);
+
+    // Check that both primary contexts are active
+	RPacketContext::TContextStatus packetContextStatus;
+    CHECK_EQUALS_L(primaryPacketContext1.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+    CHECK_EQUALS_L(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+    CHECK_EQUALS_L(primaryPacketContext2.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+    CHECK_EQUALS_L(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+    
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	// Post notification for the first context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext1, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	primaryPacketContext1.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	// The simulator sends a PDP context deactivation message saying that context 1 has been deactivated.
+	DisplayUserInteractionPromptL(_L("Please send me a deactivation of a packet context request."), ETimeMedium);
+	
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange for context 1 completes with EStatusDeactivating
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10067 );
+    RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+			primaryPacketContext1,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+    ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusDeactivating, _L("RPacketContext::NotifyStatusChange did not return EStatusDeactivating"));
+
+    //                  -> EStatusInactive
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10067 );
+    primaryPacketContext1.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+    expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+			primaryPacketContext1,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::NotifyStatusChange did not return EStatusInactive"));
+
+	// Check RPacketContext::GetStatus for context 1 returns EStatusInactive
+	ASSERT_EQUALS(primaryPacketContext1.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::GetStatus for context 2 returns EStatusActive
+	ASSERT_EQUALS(primaryPacketContext2.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketService::GetStatus returns EStatusActive
+	RPacketService::TStatus pckSrvcStatus;
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus return error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+
+	// Check RPacketService::EnumerateContexts returns aCount = 2
+	TExtEtelRequestStatus enumContextsStatus(packetService, EPacketEnumerateContexts);
+	CleanupStack::PushL(enumContextsStatus);
+	TInt count=-1;
+    TInt max=-1;
+    packetService.EnumerateContexts(enumContextsStatus,count,max);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumContextsStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::EnumerateContexts timed out."));
+    ASSERT_EQUALS(enumContextsStatus.Int(), KErrNone, 
+			_L("RPacketService::EnumerateContexts failed."));
+	ASSERT_EQUALS(count,2,_L("RPacketService::EnumerateContexts returned with an error"));
+
+	// Check RPacketService::GetContextInfo for aIndex = 0 and 1 return the correct context name and status for the two contexts.
+    RPacketService::TContextInfo contextInfo;
+	TExtEtelRequestStatus getContextInfoStatus(packetService, EPacketGetContextInfo);
+	CleanupStack::PushL(enumContextsStatus);
+    packetService.GetContextInfo(getContextInfoStatus,0,contextInfo);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfoStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::GetContextInfo timed out."));
+    ASSERT_EQUALS(getContextInfoStatus.Int(), KErrNone, 
+			_L("RPacketService::GetContextInfo returned with an error"));
+    ASSERT_EQUALS_DES16(contextInfo.iName,contextId1,_L("RPacketService::GetContextInfo return wrong value in iName"));
+    ASSERT_EQUALS(contextInfo.iStatus,RPacketContext::EStatusInactive,_L("RPacketService::GetContextInfo return wrong value in iStatus"));
+    packetService.GetContextInfo(getContextInfoStatus,1,contextInfo);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfoStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::GetContextInfo timed out."));
+    ASSERT_EQUALS(getContextInfoStatus.Int(), KErrNone, 
+			_L("RPacketService::GetContextInfo returned with an error."));
+    ASSERT_EQUALS_DES16(contextInfo.iName,contextId2,_L("RPacketService::GetContextInfo return wrong value in iName"));
+    ASSERT_EQUALS(contextInfo.iStatus,RPacketContext::EStatusActive,_L("RPacketService::GetContextInfo return wrong value in iStatus"));
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop:
+	//	enumContextsStatus
+	//	enumContextsStatus
+	//	notifyContextStChStatus
+	//	notifyContextAddedStatus
+	CleanupStack::PopAndDestroy(4,&notifyContextAddedStatus);
+	
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0016::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0016");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0017::CCTSYIntegrationTestPacketContext0017(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0017::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0017::~CCTSYIntegrationTestPacketContext0017()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0017::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0017
+ * @SYMFssID BA/CTSY/PKTC-0017
+ * @SYMTestCaseDesc Deactivate a packet context when it is already inactive.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::GetStatus, RPacketService::GetStatus
+ * @SYMTestExpectedResults Pass - Error returned on deactivation.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verfiy error is returned and context stays inactive.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+    // Get the attach mode so that it can be restored at the end of the test
+    RPacketService::TAttachMode attachMode;
+    CHECK_EQUALS_L(packetService.GetAttachMode(attachMode), KErrNone, _L("RPacketService::GetAttachMode returned with an error."));
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+	
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Open a new context.	
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+											 
+	// Activate primary context.											
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,primaryPacketContext);	
+	
+	// Post notification for primary context status change
+	TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	// Deactivate the primary context. 
+	TExtEtelRequestStatus contextDeactivateStatus(primaryPacketContext, EPacketContextDeactivate);
+	CleanupStack::PushL(contextDeactivateStatus);
+	primaryPacketContext.Deactivate(contextDeactivateStatus);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::Deactivate timed out."));					
+	ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone,
+					_L("RPacketContext::Deactivate returned with error status."));
+	
+	// ===  Check context status===
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusInactive;
+   
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+				
+	// Check RPacketContext::GetStatus returns EStatusInactive
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus for primary context returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Deactivate the context.	
+ 	primaryPacketContext.Deactivate(contextDeactivateStatus);
+ 	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::Deactivate timed out."));
+					
+	ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned with error status."));
+				
+	// Check RPacketContext::GetStatus returns EStatusInactive
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus for primary context returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// notifyContextStChStatus
+	// contextDeactivateStatus
+	CleanupStack::PopAndDestroy(2,&notifyContextStChStatus);
+	
+	return TestStepResult();
+	}
+
+
+TPtrC CCTSYIntegrationTestPacketContext0017::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0017");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0018::CCTSYIntegrationTestPacketContext0018(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0018::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0018::~CCTSYIntegrationTestPacketContext0018()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0018::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0018
+ * @SYMFssID BA/CTSY/PKTC-0018
+ * @SYMTestCaseDesc Activate a PDP context with an unknown APN.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::SetConfig, RPacketContext::Activate, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::GetLastErrorCause, RPacketService::GetStatus
+ * @SYMTestExpectedResults Pass - It is not possible to activate a context with an incorrect APN.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify activation fails and  last error cause returned correctly.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+    RMobilePhone &phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+	
+	// Set attach mode to 'when possible'. 
+	TExtEtelRequestStatus setAttachModeStatus(packetService, EPacketSetAttachMode);
+	CleanupStack::PushL(setAttachModeStatus);
+	packetService.SetAttachMode(setAttachModeStatus, RPacketService::EAttachWhenPossible);
+				
+	// Ensure automatic attach completes successfully.
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(setAttachModeStatus, ETimeLong), KErrNone,
+		_L("RPacketService::SetAttachMode timed-out"));
+	CHECK_EQUALS_L(setAttachModeStatus.Int(), KErrNone,
+		_L("RPacketService::SetAttachMode returned with an error"));
+		
+	//Ensure RPacketService::GetDynamicCaps returns caps in set of KCapsActivate.
+	
+	//$CTSYProblem.
+	//GetDynamicCaps does not return 0x1(KCapsActivate), because KCapsActivate flag is not set yet. 
+	//CTSY sets KCapsActivate flag during context initialisation.
+	
+	//Check for the CAPS being returned
+	RPacketService::TDynamicCapsFlags dynCaps;
+	CHECK_EQUALS_L(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+	
+	//RPacketService::TDynamicCapsFlags wantedDynCapBits = RPacketService::KCapsActivate;	
+	//CHECK_BITS_SET_L(dynCaps, wantedDynCapBits, KNoUnwantedBits, _L("Packet service's KCapsActivate flag not set"));
+
+	
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+		
+	// Open a new primary context. 
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	RPacketService::TStatus pckSrvcStatus;
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+
+	// Set an incorrect APN when setting the config with RPacketContext::SetConfig
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RPacketContext::TContextConfigGPRS config;
+	TPtrC apn, user, pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd);
+	_LIT(KFaultApnName, "IncorrectAPNname");
+	config.iAccessPointName.Copy(KFaultApnName);
+	config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user);
+	config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd);	
+	TPckg<RPacketContext::TContextConfigGPRS> configPk(config);	
+	
+	TExtEtelRequestStatus setConfigStatus (primaryPacketContext,EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus); 
+	primaryPacketContext.SetConfig(setConfigStatus,configPk);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("PacketContext::SetConfig timed out"));								
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("PacketContext::SetConfig returned an error."));	
+
+	// Activate the context 
+	TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	primaryPacketContext.Activate(contextActivateStatus);
+		
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("PacketContext::Activate timed out"));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("PacketContext::Activate did not return KErrNone"))
+	
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusInactive.	
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+    primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+    expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+
+	// === Check the status of context is EStatusInactive and that a valid error is returned === 
+	
+	// Check RPacketContext::GetLastErrorCause returns error != KErrNone
+	TInt error;
+	ASSERT_EQUALS(primaryPacketContext.GetLastErrorCause(error), KErrNone, _L("RPacketContext::GetLastErrorCause returned with an error."));
+	ASSERT_TRUE(error != KErrNone, _L("RPacketContext::GetLastErrorCause returns incorrectly KErrNone."));
+
+	// Check RPacketContext::GetStatus returns EStatusInactive.
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketService::GetStatus returns EStatusAttached.
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status."));
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// setAttachModeStatus
+	// notifyContextStChStatus
+	// setConfigStatus
+	// contextActivateStatus
+    CleanupStack::PopAndDestroy(4, &setAttachModeStatus);
+    
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0018::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0018");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0019::CCTSYIntegrationTestPacketContext0019(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0019::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0019::~CCTSYIntegrationTestPacketContext0019()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0019::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0019
+ * @SYMFssID BA/CTSY/PKTC-0019
+ * @SYMTestCaseDesc Activate a PDP context with an incorrect password.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::SetConfig, RPacketContext::Activate, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::GetLastErrorCause, RPacketService::GetStatus
+ * @SYMTestExpectedResults Pass - Activation fails and error returned.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify activation fails and  last error cause returned correctly.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+	
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
+	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone,
+			_L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+    
+	// Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+		
+	// Set attach mode to 'when possible'. 
+	TExtEtelRequestStatus setAttachModeStatus(packetService, EPacketSetAttachMode);
+	CleanupStack::PushL(setAttachModeStatus);
+	packetService.SetAttachMode(setAttachModeStatus, RPacketService::EAttachWhenPossible);
+				
+	// Ensure automatic attach completes successfully.
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(setAttachModeStatus, ETimeLong), KErrNone,
+		_L("RPacketService::SetAttachMode timed-out"));
+	CHECK_EQUALS_L(setAttachModeStatus.Int(), KErrNone,
+		_L("RPacketService::SetAttachMode returned with an error"));
+		
+	// Ensure phone has KCapsActivate capability. 
+
+	//Check for the CAPS being returned
+	RPacketService::TDynamicCapsFlags dynCaps;
+	CHECK_EQUALS_L(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+	
+	//$CTSYProblem.
+	//GetDynamicCaps does not return 0x1(KCapsActivate) as it should, because KCapsActivate flag is not set yet. 
+	//CTSY sets KCapsActivate flag during context initialisation.
+	RPacketService::TDynamicCapsFlags wantedDynCapBits = 0x00000000;
+	CHECK_BITS_SET_L(dynCaps, wantedDynCapBits, KNoUnwantedBits, _L("Packet service's KCapsActivate flag not set"));
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	// Open a new primary context. 
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	// Set an incorrect password when setting the config with RPacketContext::SetConfig
+	RPacketContext::TContextConfigGPRS config;
+	_LIT(KFaultPwd, "IncorrectPwd");
+	config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(KFaultPwd);
+	TPckg<RPacketContext::TContextConfigGPRS> configPk(config);
+	TExtEtelRequestStatus setConfigStatus(primaryPacketContext, EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus);
+	primaryPacketContext.SetConfig(setConfigStatus, configPk);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::SetConfig timed out"));
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone,
+					_L("RPacketContext::SetConfig returned with error status."));
+	
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	RPacketService::TStatus pckSrvcStatus;
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+
+	// Activate the context 
+	TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	primaryPacketContext.Activate(contextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("PacketContext::Activate timed out"));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("PacketContext::Activate did not return KErrNone"));
+
+	// Check RPacketContext::NotifyStatusChange completes wtih EStatusActivating -> EStatusInactive.
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+	
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+	
+	// Check that the activation fails and error is returned. 
+	// Check RPacketContext::GetLastErrorCause returns error != KErrNone
+	TInt error;
+	ASSERT_EQUALS(primaryPacketContext.GetLastErrorCause(error), KErrNone, _L("RPacketContext::GetLastErrorCause returned with an error."));
+	ASSERT_TRUE(error != KErrNone, _L("RPacketContext::GetLastErrorCause returns incorrectly KErrNone."));
+
+	// Check RPacketContext::GetStatus returns EStatusInactive.
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketService::GetStatus returns EStatusAttached.
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status."));
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// setAttachModeStatus
+	// setConfigStatus
+	// notifyContextStChStatus
+	// contextActivateStatus
+    CleanupStack::PopAndDestroy(4, &setAttachModeStatus);
+    
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0019::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0019");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0020::CCTSYIntegrationTestPacketContext0020(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0020::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0020::~CCTSYIntegrationTestPacketContext0020()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0020::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0020
+ * @SYMFssID BA/CTSY/PKTC-0020
+ * @SYMTestCaseDesc Activate a context when phone is in class C operation and preferred bearer is RPacketService::EBearerPacketSwitched
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketService::GetPreferredBearer, RPacketContext::OpenNewContext, RPacketContext::SetConfig, RPacketContext::Activate, RPacketContext::Deactivate, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::GetStatus, RPacketService::NotifyStatusChange, RPacketService::GetStatus
+ * @SYMTestExpectedResults Pass - Context activated and deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context status and packet service status.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure attach mode to RPacketService::EAttachWhenPossible. 
+
+	// Ensure MS class is class RPacketService::EMSClassAlternateMode. 
+
+	// Ensure preferred bearer to  
+
+	// RPacketService::EBearerPacketSwitched 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Check RPacketService::GetPreferredBearer returns RPacketService::EBearerPacketSwitched
+
+	// Set a valid context config using RPacketContext::SetConfig 
+
+	// Activate packet context with RPacketContext::Activate 
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+
+	// Check RPacketService::GetStatus returns EStatusActive
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+
+	// Deactivate the context 
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive
+
+	// Check RPacketContext::GetStatus returns EStatusInactive
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusAttached
+
+	// Check RPacketService::GetStatus returns EStatusAttached
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0020::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0020");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0021::CCTSYIntegrationTestPacketContext0021(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0021::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0021::~CCTSYIntegrationTestPacketContext0021()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0021::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0021
+ * @SYMFssID BA/CTSY/PKTC-0021
+ * @SYMTestCaseDesc Cancel activation before activation is complete.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::SetConfig, RPacketContext::Activate, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus
+ * @SYMTestExpectedResults Pass - Activation cancelled.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context is not activated and activation cancelled successfully.
+
+Verify subsequent attempt to activate succeeds and therefore roll back from cancelling worked correctly.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+	
+    // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Get network info from phone
+	TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork);
+	CleanupStack::PushL(getNetworkStatus);
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info);
+	phone.GetCurrentNetwork(getNetworkStatus, infopckg);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out"));
+	ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error"));
+		
+	// Get the context config using network info
+	RPacketContext::TContextConfigGPRS config;
+	TPtrC apn, user, pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd);
+	config.iAccessPointName.Copy(apn);
+	config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user);
+	config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd);
+	TPckg<RPacketContext::TContextConfigGPRS> configPk(config);	
+	
+	// Post notification for the RPacketService::NotifyContextAdded
+	TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatus);
+	TName contextId;
+	packetService.NotifyContextAdded(notifyContextStatus, contextId);
+	
+	// Open a new context	
+	RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService,
+												KPrimaryPacketContext1);
+												
+	// Set a valid context config using RPacketContext::SetConfig
+	TExtEtelRequestStatus setConfigStatus(packetContext, EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus);
+	packetContext.SetConfig(setConfigStatus, configPk);	
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out"));
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned with error status."));
+
+	// Check RPacketService::NotifyContextAdded completes with a valid context name
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete."));
+	ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone,	_L("RPacketService::NotifyContextAdded returned with error status."));
+	ASSERT_TRUE(contextId.Length() > 0, _L("RPacketService::NotifyContextAdded completed with invalid context name."));
+		
+	// Post notification for service's status change
+	TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange);
+	CleanupStack::PushL(notifyServiceStChStatus);
+	RPacketService::TStatus packetServiceStatus;
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+
+	// Activate a context (don't wait for completion) 		
+	TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	packetContext.Activate(contextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+					
+	// Cancel activate with RTelSubSessionBase::CancelAsyncRequest(EPacketContextActivate)
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 50003 );
+	// When packet context is requested to be activated, there is nothing CTSY can do to cancel activation,
+	// because activation has already been sent to the network.
+	// CancelAsyncRequest(EPacketContextActivate) returns faulty with KErrNone instead of KErrNotSupported.
+	packetContext.CancelAsyncRequest(EPacketContextActivate);
+
+	// Check RTelSubSessionBase::CancelAsyncRequest(EPacketContextActivate) returns with KErrNotSupported
+	TInt error;
+	ASSERT_EQUALS(packetContext.GetLastErrorCause(error), KErrNone, _L("RPacketContext::GetLastErrorCause returned with an error."));
+	ASSERT_EQUALS(error, KErrNotSupported, _L("RPacketContext::GetLastErrorCause does not return KErrNotSupported."));
+
+    // Check RPacketService::NotifyStatusChange completes with EStatusActivating -> EStatusActive 	
+	RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+				packetService,
+				notifyServiceStChStatus,
+				packetServiceStatus, 
+				expectedPacketServiceStatus,
+				KErrNone);
+					
+	// Check RPacketService::GetStatus returns EStatusActive
+    RPacketService::TStatus pckSrvcStatus;
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+    
+    StartCleanup();
+    
+    // pop
+	// getNetworkStatus
+	// notifyContextStatus
+	// setConfigStatus
+	// notifyServicetStChStatus
+	// contextActivateStatus
+	CleanupStack::PopAndDestroy(5, &getNetworkStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0021::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0021");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0022::CCTSYIntegrationTestPacketContext0022(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0022::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0022::~CCTSYIntegrationTestPacketContext0022()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0022::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0022
+ * @SYMFssID BA/CTSY/PKTC-0022
+ * @SYMTestCaseDesc Activate context when request received from network.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::SetConfig, RPacketService::NotifyContextAdded, RPacketService::EnumerateContexts, RPacketContext::Activate, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketService::NotifyDynamicCapsChange, RPacketService::GetDynamicCaps
+ * @SYMTestExpectedResults Pass - Context activated on request from network.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify context parameters in TPacketDataConfigBase derived class received correctly.
+
+Verify context added notification produced, number of contexts, dynamic caps, packet service status are all correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure phone is attached to the packet service. 
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+ 	iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+	// Ensure RPacketService::GetDynamicCaps returns caps in set of KCapsRxContextActivationReq 
+    RPacketService::TDynamicCapsFlags dynCaps;
+    RPacketService::TDynamicCapsFlags wantedDynCapBits = RPacketService::KCapsRxContextActivationReq;
+	CHECK_EQUALS_L(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+	CHECK_BITS_SET_L(dynCaps, wantedDynCapBits , KNoUnwantedBits, _L("RPacketService::GetDynamicCaps KCapsRxContextActivationReq flag not set"));
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+
+    // Post notifications for the RPacketService::NotifyContextActivationRequested
+    TExtEtelRequestStatus notifyContextActivationRequestedStatus(packetService, EPacketNotifyContextActivationRequested);
+    CleanupStack::PushL(notifyContextActivationRequestedStatus);
+	RPacketContext::TContextConfigGPRS requestedConfig;
+	TPckg<RPacketContext::TContextConfigGPRS> requestedConfigPckg(requestedConfig);
+    packetService.NotifyContextActivationRequested(notifyContextActivationRequestedStatus,requestedConfigPckg);
+
+	// Post notification for the RPacketService::NotifyContextAdded
+	TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatus);
+	TName contextId;
+	packetService.NotifyContextAdded(notifyContextStatus, contextId);
+
+	// Post notification for service's status change
+	TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange);
+	CleanupStack::PushL(notifyServiceStChStatus);
+	RPacketService::TStatus packetServiceStatus;
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+
+	// Post notification for service's dynamic caps change
+	TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange);
+	CleanupStack::PushL(notifyServiceDynCapsStatus);
+	packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps);
+    
+	// Get network info from phone
+	TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork);
+	CleanupStack::PushL(getNetworkStatus);
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info);
+	phone.GetCurrentNetwork(getNetworkStatus, infopckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong),
+				  						    KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out"));
+	ASSERT_EQUALS(getNetworkStatus.Int(),
+				  KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error"));
+
+	// Simulator sends a context activation request to the phone.
+	RPacketContext::TContextConfigGPRS config;
+	TPtrC apn, user, pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd);
+	config.iAccessPointName.Copy(apn);
+	config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user);
+	config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd);
+    DisplayUserInteractionPromptL(_L("Please send me a context activation request."), ETimeLong);
+	 
+	 
+	// $CTSYProblem The LTSY does nothing with the context activation request.
+	ERR_PRINTF1(_L("<font color=Cyan>$CTSYProblem: The LTSY does nothing with the context activation request.<font color=Black>"));    
+	// Check RPacketService::NotifyContextActivationRequested completes.
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextActivationRequestedStatus, ETimeLong), KErrNone,
+				  _L("RPacketService::NotifyContextActivationRequested did not complete."));
+    ASSERT_EQUALS(notifyContextActivationRequestedStatus.Int(), KErrNone, 
+    			_L("RPacketService::NotifyContextActivationRequested returned with error status."));
+
+	// Open a primary context. 
+	RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+			KMainServer,
+			KMainPhone,
+			KMainPacketService,
+			KPrimaryPacketContext1);
+    
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(packetContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+
+	// Extract the context parameters received and check they are the same as that sent by the simulator.
+	ASSERT_EQUALS_DES8(requestedConfig.iAccessPointName, config.iAccessPointName, _L("RPacketService::NotifyContextActivationRequested gave incorrect config data."));
+	ASSERT_EQUALS_DES8(requestedConfig.iProtocolConfigOption.iAuthInfo.iUsername, config.iProtocolConfigOption.iAuthInfo.iUsername, _L("RPacketService::NotifyContextActivationRequested gave incorrect config data."));
+	ASSERT_EQUALS_DES8(requestedConfig.iProtocolConfigOption.iAuthInfo.iPassword, config.iProtocolConfigOption.iAuthInfo.iPassword, _L("RPacketService::NotifyContextActivationRequested gave incorrect config data."));
+
+	// Use them to set a context config with RPacketContext::SetConfig 
+	TPckg<RPacketContext::TContextConfigGPRS> configPckg(requestedConfig);
+	TExtEtelRequestStatus setConfigStatus(packetContext, EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus);
+	packetContext.SetConfig(setConfigStatus, configPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::SetConfig timed out"));
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone,
+					_L("RPacketContext::SetConfig returned with error status."));
+
+	// Check RPacketService::NotifyContextAdded completes with a valid context name
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone,
+				  _L("RPacketService::NotifyContextAdded did not complete."));
+    ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, 
+    			_L("RPacketService::NotifyContextAdded returned with error status."));
+    ASSERT_TRUE(contextId.Length() > 0,
+    			_L("Packet context config has zero length contextId."));
+
+	// Activate packet context with RPacketContext::Activate 
+	TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	packetContext.Activate(contextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone,
+					_L("RPacketContext::Activate returned with error status."));
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+	RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+				packetService,
+				notifyServiceStChStatus,
+				packetServiceStatus, 
+				expectedPacketServiceStatus,
+				KErrNone);
+
+	// Check RPacketService::GetStatus returns EStatusActive
+	RPacketService::TStatus pckSrvcStatus;
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+    RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				packetContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+    ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActivating, _L("Packet Context's status expected to be EStatusActivating but is not."));
+    
+    //   -> EStatusActive
+	packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+    expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+			packetContext,
+			notifyContextStChStatus,
+			packetContextStatus, 
+			expectedPacketContextStatus,
+			KErrNone);
+	
+	// Check RPacketContext::GetStatus returns EStatusActive
+	ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// ===  Check dynamic caps ===
+
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer.
+	// Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach
+    wantedDynCapBits = RPacketService::KCapsRxCSCall | RPacketService::KCapsRxContextActivationReq | RPacketService::KCapsSMSTransfer;
+	TInt unWantedDynCapBits = RPacketService::KCapsManualAttach;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyDynamicCapsChange( 
+				packetService,
+				notifyServiceDynCapsStatus,
+				dynCaps, 
+				wantedDynCapBits,
+				unWantedDynCapBits,
+				KErrNone);
+
+	// Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer
+	// Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach
+	ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+	ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("RPacketService::GetDynamicCaps Packet service's KCapsActivate flag not set"));
+
+	// Check RPacketService::EnumerateContexts returns 1.
+	TExtEtelRequestStatus enumContextsStatus(packetService, EPacketEnumerateContexts);
+	CleanupStack::PushL(enumContextsStatus);
+	TInt count=-1;
+    TInt max=-1;
+    packetService.EnumerateContexts(enumContextsStatus,count,max);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumContextsStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::EnumerateContexts timed out."));
+    ASSERT_EQUALS(enumContextsStatus.Int(), KErrNone, 
+			_L("RPacketService::EnumerateContexts failed."));
+	ASSERT_EQUALS(count,1,_L("RPacketService::EnumerateContexts did not returned one."));
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop:
+	//	enumContextsStatus
+	//	contextActivateStatus
+	//	setConfigStatus
+	//	notifyContextStChStatus
+	//	getNetworkStatus
+	//	notifyServiceDynCapsStatus
+	//	notifyServiceStChStatus
+	//	notifyContextStatus
+	//	notifyContextActivationRequestedStatus
+	CleanupStack::PopAndDestroy(9,&notifyContextActivationRequestedStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0022::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0022");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0023::CCTSYIntegrationTestPacketContext0023(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0023::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0023::~CCTSYIntegrationTestPacketContext0023()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0023::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0023
+ * @SYMFssID BA/CTSY/PKTC-0023
+ * @SYMTestCaseDesc Activate context when request received from network.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::Activate, RPacketService::NotifyContextAdded, RPacketContext::GetStatus, RPacketService::GetNifInfo, RPacketService::GetContextNameInNif, RPacketService::EnumerateNifs, RPacketContext::NotifyStatusChange, RPacketContext::SetConfig, RPacketService::EnumerateContextsInNif, RPacketService::NotifyContextActivationRequested, RPacketContext::GetDnsInfo
+ * @SYMTestExpectedResults Pass - Context activated on request from network.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify NIF related info correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYProblem: defect id = %d</font>"), 10085);
+	User::Leave(KErrNone);	
+	
+    // Ensure phone is attached to the packet service. 
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+	// Ensure RPacketService::GetDynamicCaps returns caps in set of KCapsRxContextActivationReq 
+	RPacketService::TDynamicCapsFlags dynCaps;
+	CHECK_EQUALS_L(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+	CHECK_BITS_SET_L(dynCaps, RPacketService::KCapsRxContextActivationReq, KNoUnwantedBits, _L("RPacketService::GetStaticCaps did not return correct dynamic caps"));
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+
+	// post notifier for RPacketService::NotifyContextActivationRequested
+	RPacketContext::TContextConfigGPRS configGPRS;
+	TPckg<RPacketContext::TContextConfigGPRS> configPkg(configGPRS);
+	TExtEtelRequestStatus notifyContextActivationRequested(packetService , EPacketNotifyContextActivationRequestedCancel);
+	CleanupStack::PushL(notifyContextActivationRequested);
+	packetService.NotifyContextActivationRequested(notifyContextActivationRequested, configPkg);
+
+    // Ask the simulator to send a context activation request
+	RPacketContext::TContextConfigGPRS configSimulator;
+	TPckg<RPacketContext::TContextConfigGPRS> configSimulatorPkg(configSimulator);
+    DisplayUserInteractionPromptL(_L("Simulator needs to send context activation request to this phone."), ETimeMedium);
+
+	// Check RPacketService::NotifyContextActivationRequested completes with valid context configuration.
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextActivationRequested, ETimeLong), KErrNone, _L("RPacketService::NotifyContextActivationRequested timed out."));
+	ASSERT_EQUALS(notifyContextActivationRequested.Int(), KErrNone, _L("RPacketService::NotifyContextActivationRequested returned with error status."));
+	ASSERT_TRUE(configGPRS.iAccessPointName.Length() > 0,_L("RPacketService::NotifyContextActivationRequested returned from Simulator with incorrect or zero length iAccessPointName."));
+	ASSERT_TRUE(configGPRS.iProtocolConfigOption.iAuthInfo.iUsername.Length() > 0, _L("RPacketService::NotifyContextActivationRequested returned from Simulator with incorrect or zero length iUsername."));
+	ASSERT_TRUE(configGPRS.iProtocolConfigOption.iAuthInfo.iPassword.Length() > 0, _L("RPacketService::NotifyContextActivationRequested returned from Simulator with incorrect or zero length iPassword."));
+
+	// Post notification for the RPacketService::NotifyContextAdded
+	TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatus);
+	TName contextId;
+	packetService.NotifyContextAdded(notifyContextStatus, contextId);
+
+	// Open a primary context. 
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	// Extract the context parameters received and check they are the same as that sent by the simulator. 
+	// ETEL PACKET API says that nw may send PDP type requested, PDP address, Access Point Name (APN)
+	ASSERT_EQUALS_DES8(configSimulator.iAccessPointName, configGPRS.iAccessPointName, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS(configSimulator.iPdpType, configGPRS.iPdpType, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS_DES8(configSimulator.iPdpAddress, configGPRS.iPdpAddress, _L("RPacketContext::GetConfig returns incorrect config data."));
+	 
+
+	// Use them to set a context config with RPacketContext::SetConfig 
+	TExtEtelRequestStatus setConfigStatus(primaryPacketContext, EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus);
+	primaryPacketContext.SetConfig(setConfigStatus, configPkg);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out"));
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned with error status."));
+
+	// Check RPacketService::NotifyContextAdded completes with a valid context name
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete."));
+    ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status."));
+    ASSERT_TRUE(contextId.Length() > 0, _L("RPacketService::NotifyContextAdded completed with invalid context name"));
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+
+	// Activate packet context with RPacketContext::Activate
+	TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	primaryPacketContext.Activate(contextActivateStatus);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+
+	// ===  Check context statuses ===
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+    RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+    ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActivating, _L("Packet Context's status expected to be EStatusActivating but is not."));
+    primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+
+    expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// ===  Get context information ===
+
+	// Check RPacketContext::GetConfig returns same config as that set
+	TExtEtelRequestStatus contextGetConfigStatus(primaryPacketContext, EPacketContextGetConfig);
+	CleanupStack::PushL(contextGetConfigStatus);
+	RPacketContext::TContextConfigGPRS getConfig;
+	TPckg<RPacketContext::TContextConfigGPRS> getConfigPkg(getConfig);
+	primaryPacketContext.GetConfig(contextGetConfigStatus, getConfigPkg);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextGetConfigStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConfig timed out."))
+	ASSERT_EQUALS(contextGetConfigStatus.Int(), KErrNone, _L("RPacketContext::GetConfig returned an error."));
+
+	ASSERT_EQUALS_DES8(getConfig.iAccessPointName, configGPRS.iAccessPointName, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iUsername, configGPRS.iProtocolConfigOption.iAuthInfo.iUsername, _L("RPacketContext::GetConfig returns incorrect config data."));
+	ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iPassword, configGPRS.iProtocolConfigOption.iAuthInfo.iPassword, _L("RPacketContext::GetConfig returns incorrect config data."));
+
+	// Check RPacketContext::GetDnsInfo returns valid primary and secondary DNS ip addresses
+	RPacketContext::TDnsInfoV2 dnsInfo;
+	RPacketContext::TTDnsInfoV2Pckg dnsInfoPkg(dnsInfo);
+	TExtEtelRequestStatus dnsInfoStatus(primaryPacketContext, EPacketContextGetDNSInfo);
+	CleanupStack::PushL(dnsInfoStatus);
+	primaryPacketContext.GetDnsInfo(dnsInfoStatus, dnsInfoPkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(dnsInfoStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetDnsInfo timed out."));
+
+	ASSERT_EQUALS(dnsInfoStatus.Int(), KErrNone, _L("RPacketContext::GetDnsInfo returned an error."));
+	ASSERT_TRUE(dnsInfo.iPrimaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length PrimaryDns."));
+	ASSERT_TRUE(dnsInfo.iSecondaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length SecondaryDns."));
+
+	// ===  Check that there is one NIF with one primary context belonging to it ===
+
+	// Check RPacketService::EnumerateNifs returns aCount = 1
+
+	TExtEtelRequestStatus enumerateNifsStatus(packetService, EPacketEnumerateNifs);
+	CleanupStack::PushL(enumerateNifsStatus);
+	TInt nifCount;
+	const TInt wantedCount = 1;
+	packetService.EnumerateNifs(enumerateNifsStatus, nifCount);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateNifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out"));
+	ASSERT_EQUALS(nifCount, wantedCount, _L("RPacketService::EnumerateNifs returned wrong NIF count."));
+
+
+	// Get context info	
+	TExtEtelRequestStatus getContextInfo(packetService, EPacketGetContextInfo);
+	CleanupStack::PushL(getContextInfo);
+	RPacketService::TContextInfo contextInfo;
+	const TInt index = 0;
+	packetService.GetContextInfo(getContextInfo, index, contextInfo);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfo, ETimeLong), KErrNone, _L("RPacketService::GetContextInfo timed out"));
+	ASSERT_TRUE(contextInfo.iName.Length() > 0, _L("RPacketService::GetContextInfo returned with zero length context name"));
+
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing context name returns aCount = 1
+	TExtEtelRequestStatus enumerateContextsInNifStatus(packetService, EPacketEnumerateContextsInNif);
+	CleanupStack::PushL(enumerateContextsInNifStatus);
+	TInt contextsInNifCount;
+	packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, contextInfo.iName, contextsInNifCount);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out"));
+	ASSERT_EQUALS(nifCount, wantedCount, _L("RPacketService::EnumerateContextsInNif returned wrong number of contexts sharing a NIF"));
+
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = existing context name and aIndex = 0 returns aContextName which is same as aExistingContextName
+	TExtEtelRequestStatus getContextNameInNifStatus(packetService, EPacketGetContextNameInNif);
+	CleanupStack::PushL(getContextNameInNifStatus);
+	TName contextName;
+	packetService.GetContextNameInNif(getContextNameInNifStatus, contextInfo.iName, index, contextName);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out"));
+	ASSERT_EQUALS_DES16(contextInfo.iName, contextName, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name"));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName
+	TExtEtelRequestStatus getNifInfoStatus(packetService, EPacketGetNifInfo);
+	CleanupStack::PushL(getNifInfoStatus);
+	const TInt nifInfoCount = 0;
+	RPacketService::TNifInfoV2 nifInfo;
+	RPacketService::TNifInfoV2Pckg nifInfoPkg(nifInfo);
+	packetService.GetNifInfo(getNifInfoStatus, nifInfoCount, nifInfoPkg);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNifInfoStatus, ETimeLong), KErrNone, _L("RPacketService::GetNifInfo timed out"));
+	ASSERT_TRUE(nifInfo.iContextName.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid context name"));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 1
+	ASSERT_EQUALS(nifInfo.iNumberOfContexts, wantedCount, _L("RPacketService::GetNifInfo returned wrong count of contexts"));
+	
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive
+	ASSERT_EQUALS(nifInfo.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo returned wrong NIF status"));
+	
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress
+	ASSERT_TRUE(nifInfo.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid pdp address"));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns EExternalContext in iContextType
+	ASSERT_EQUALS(nifInfo.iContextType, RPacketService::EExternalContext, _L("RPacketService::GetNifInfo returned wrong context type"));
+
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// notifyContextActivationRequested
+	// setConfigStatus
+	// notifyContextStatus
+	// notifyContextStChStatus
+	// contextActivateStatus
+	// contextGetConfigStatus
+	// dnsInfoStatus
+	// enumerateNifStatus
+	// getContextInfo
+	// enumerateContextsInNifStatus
+	// getContextNameInNifStatus
+	// getNifInfoStatus
+
+	CleanupStack::PopAndDestroy(12, &notifyContextActivationRequested);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0023::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0023");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0024::CCTSYIntegrationTestPacketContext0024(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0024::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0024::~CCTSYIntegrationTestPacketContext0024()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0024::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0024
+ * @SYMFssID BA/CTSY/PKTC-0024
+ * @SYMTestCaseDesc Reject network requested context activation.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketService::RejectActivationRequest, RPacketService::EnumerateContexts
+ * @SYMTestExpectedResults Pass - Context activation request rejected.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify context parameters in TPacketDataConfigBase derive class received correctly.  Verify when network repeated requests for a context activation (up to 5 times), it can be rejected.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+	
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYProblem: defect id = %d</font>"), 10086);
+	User::Leave(KErrNone);
+
+    // Check that the phone is registered with the network simulator. 
+    RMobilePhone &mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+    iNetworkTestHelper.CheckPhoneConnectedToAniteL(mobilePhone);
+
+	// Ensure phone is attached to the packet service. 
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+	// Ensure RPacketService::GetDynamicCaps returns caps in set of KCapsRxContextActivationReq 
+	RPacketService::TDynamicCapsFlags dynCaps;
+	CHECK_EQUALS_L(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error"));
+	CHECK_BITS_SET_L(dynCaps, RPacketService::KCapsRxContextActivationReq, KNoUnwantedBits, _L("RPacketService::GetDynamicCaps returned with incorrect caps"));
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// post notifier for RPacketService::NotifyContextActivationRequested
+	RPacketContext::TContextConfigGPRS configGPRS;
+	TPckg<RPacketContext::TContextConfigGPRS> configPkg(configGPRS);
+	TExtEtelRequestStatus notifyContextActivationRequested(packetService , EPacketNotifyContextActivationRequested);
+	CleanupStack::PushL(notifyContextActivationRequested);
+	packetService.NotifyContextActivationRequested(notifyContextActivationRequested, configPkg);
+
+    // Ask the simulator to send a context activation request
+    DisplayUserInteractionPromptL(_L("Simulator needs to send context activation request to this phone."), ETimeMedium);
+	
+	// Check RPacketService::NotifyContextActivationRequested completes with valid context configuration.
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyContextActivationRequested( 
+													packetService,
+													notifyContextActivationRequested,
+													configPkg,
+													KErrNone );
+
+	ASSERT_EQUALS(notifyContextActivationRequested.Int(), KErrNone, _L("RPacketService::NotifyContextActivationRequested returned with error status."));
+	ASSERT_TRUE(configGPRS.iAccessPointName.Length() > 0,_L("RPacketService::NotifyContextActivationRequested returned from Simulator with incorrect or zero length iAccessPointName."));
+	ASSERT_TRUE(configGPRS.iProtocolConfigOption.iAuthInfo.iUsername.Length() > 0, _L("RPacketService::NotifyContextActivationRequested returned from Simulator with incorrect or zero length iUsername."));
+	ASSERT_TRUE(configGPRS.iProtocolConfigOption.iAuthInfo.iPassword.Length() > 0, _L("RPacketService::NotifyContextActivationRequested returned from Simulator with incorrect or zero length iPassword."));
+	
+	// Check RPacketService::RejectActivationRequest completes with KErrNone
+	TExtEtelRequestStatus rejectActivationRequestStatus(packetService, EPacketRejectActivationRequest);	
+	CleanupStack::PushL(rejectActivationRequestStatus);
+	packetService.RejectActivationRequest(rejectActivationRequestStatus);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(rejectActivationRequestStatus, ETimeLong), KErrNone, _L("RPacketService::RejectActivationRequest timed out"));
+	ASSERT_EQUALS(rejectActivationRequestStatus.Int(), KErrNone, _L("RPacketService::RejectActivationRequest returned with error status."));
+
+	// Check RPacketService::EnumerateContexts returns 0
+	TExtEtelRequestStatus enumerateContextsStatus(packetService, EPacketEnumerateContexts);	
+	CleanupStack::PushL(enumerateContextsStatus);
+	TInt count(0);
+	TInt maxAllowed(0);
+	const TInt wantedCount = 0;
+	packetService.EnumerateContexts(enumerateContextsStatus, count, maxAllowed);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContexts timed out"));
+	ASSERT_EQUALS(enumerateContextsStatus.Int(), KErrNone, _L("RPacketService::EnumerateContexts returned with error status."));
+	ASSERT_EQUALS(count, wantedCount, _L("RPacketService::EnumerateContexts did not return context count 0 as expected"));
+
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// notifyContextActivationRequested
+	// rejectActivationRequestStatus
+	// enumerateContextsStatus
+	CleanupStack::PopAndDestroy(3, &notifyContextActivationRequested);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0024::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0024");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0025::CCTSYIntegrationTestPacketContext0025(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0025::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0025::~CCTSYIntegrationTestPacketContext0025()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0025::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0025
+ * @SYMFssID BA/CTSY/PKTC-0025
+ * @SYMTestCaseDesc Delete a context when it is active.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::Delete, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus
+ * @SYMTestExpectedResults Pass - Context is deleted and the status of the contexts reflects this status..
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context status is correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+	// === Ensure there is an active PDP context. ===
+    
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    
+    // Ensure phone is attached to the packet service. 
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+	// Open a new context.	
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	// Activate primary context.											
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext);
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Delete the context with RPacketContext::Delete 
+	TExtEtelRequestStatus deleteStatus(packetService, EPacketContextDelete);
+	CleanupStack::PushL(deleteStatus);
+	primaryPacketContext.Delete(deleteStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(deleteStatus, ETimeLong), KErrNone, _L("RPacketContext::Delete timed out"));
+
+	// Check an error is returned.
+	// $CTSYProblem Adaptation deletes context always if it's status is else than RPacketContext::EStatusUnknown.
+	// Checking is changed from NOT KErrNone to KErrNone and GetStatus() checking is changed from EStatusActive to EStatusDeleted
+	ASSERT_EQUALS(deleteStatus.Int(), KErrNone, _L("RPacketContext::Delete returned with an error"));
+
+	// Check RPacketContext::GetStatus returns EStatusDeleted
+	RPacketContext::TContextStatus packetContextStatus;
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusDeleted, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// deleteStatus
+	CleanupStack::PopAndDestroy(1, &deleteStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0025::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0025");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0026::CCTSYIntegrationTestPacketContext0026(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0026::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0026::~CCTSYIntegrationTestPacketContext0026()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0026::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0026
+ * @SYMFssID BA/CTSY/PKTC-0026
+ * @SYMTestCaseDesc Delete a context when it has been deactivated.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::Delete
+ * @SYMTestExpectedResults Pass - Context deleted.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context status is deleted.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Ensure there is an active PDP context. 
+
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+	// Open a new context.	
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+											 
+	// Activate primary context											
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,primaryPacketContext);	
+	
+	// Check RPacketContext::GetStatus returns EStatusActive
+	RPacketContext::TContextStatus packetContextStatus;
+	CHECK_EQUALS_L(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus for primary context returned with an error."));
+	CHECK_EQUALS_L(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////	
+	
+	
+	//Post notifier for packet context status change
+	TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	// Deactivate the context. 
+	TExtEtelRequestStatus contextDeactivateStatus(primaryPacketContext, EPacketContextDeactivate);
+	CleanupStack::PushL(contextDeactivateStatus);
+	primaryPacketContext.Deactivate(contextDeactivateStatus);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::Deactivate timed out."));					
+	ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone,
+					_L("RPacketContext::Deactivate returned with error status."));
+	
+	// Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive				
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating;  
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+    expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus returns EStatusInactive
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Delete the context with RPacketContext::Delete 	
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+	TExtEtelRequestStatus contextDeleteStatus(primaryPacketContext, EPacketContextDelete);
+	CleanupStack::PushL(contextDeleteStatus);
+	primaryPacketContext.Delete(contextDeleteStatus);	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeleteStatus, ETimeLong), KErrNone, _L("RPacketContext::Delete timed out"));
+	ASSERT_EQUALS(contextDeleteStatus.Int(), KErrNone, _L("RPacketContext::Delete returned an error"));
+	
+	// Check RPacketContext::NotifyStatusChange completes with EStatusDeleted
+	expectedPacketContextStatus = RPacketContext::EStatusDeleted;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus returns EStatusDeleted
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusDeleted, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// notifyContextStChStatus
+	// contextDeactivateStatus
+	// contextDeleteStatus
+	CleanupStack::PopAndDestroy(3, &notifyContextStChStatus);	
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0026::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0026");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0027::CCTSYIntegrationTestPacketContext0027(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0027::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0027::~CCTSYIntegrationTestPacketContext0027()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0027::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0027
+ * @SYMFssID BA/CTSY/PKTC-0027
+ * @SYMTestCaseDesc Dial a voice call while context is active in class B operation.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RCall::Dial, RCall::HangUp, RCall::GetStatus, RCall::NotifyStatusChange, RPacketService::NotifyStatusChange, RPacketService::GetStatus
+ * @SYMTestExpectedResults Pass - Packet service suspends when CS call is made.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context and packet service are suspended when voice call is initiated whilst context is activated
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure MS class is EMSClassSuspensionRequired 
+
+	// Ensure there is an active PDP context. 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Check RPacketService::GetMSClass returns EMSClassSuspensionRequired
+
+	// Dial a number that answers. 
+
+	// ===  Check call status ===
+
+	// Check RCall::NotifyStatusChange completes with EStatusConnected.
+
+	// Check RCall::GetStatus returns EStatusConnected.
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusSuspended
+
+	// Check RPacketService::GetStatus returns EStatusSuspended
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusSuspended
+
+	// Check RPacketContext::GetStatus returns EStatusSuspended
+
+	// Hang up call. 
+
+	// Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle.
+
+	// Check RCall::GetStatus returns EStatusIdle.
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+
+	// Check RPacketService::GetStatus returns EStatusActive
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActive
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0027::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0027");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0028::CCTSYIntegrationTestPacketContext0028(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0028::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0028::~CCTSYIntegrationTestPacketContext0028()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0028::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0028
+ * @SYMFssID BA/CTSY/PKTC-0028
+ * @SYMTestCaseDesc Get default context params.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::Activate, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::GetConfig, RPacketService::SetDefaultContextParams, RPacketService::GetContextInfo
+ * @SYMTestExpectedResults Pass - Context activated with default params.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context activated without specific config has default context params.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+    // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+	
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+
+	const TInt gprs = 1;
+	const TInt r99 = 2;
+	const TInt r5 = 3;
+
+   	// Get network info from phone
+	TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork);
+	CleanupStack::PushL(getNetworkStatus);
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info);
+	phone.GetCurrentNetwork(getNetworkStatus, infopckg);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out"));
+	ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error"));
+
+	TPtrC apn, user, pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd);
+
+	// Activate context using RPacketContext::TContextConfigGPRS
+	DoTest0028L(packetService, apn, user, pwd, gprs);
+
+	// Repeat test with RPacketContext::TContextConfigR99_R4
+	DoTest0028L(packetService, apn, user, pwd, r99);
+
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 50004 );
+	// Test case is made to leave because CTSY doesn't have support for TContextConfig_R5.
+	CHECK_TRUE_L(EFalse, _L("This test has been made to leave intentionally - CTSY doesn't have support for TContextConfig_R5")); 
+
+	// Repeat test with RPacketContext::TContextConfig_R5
+	DoTest0028L(packetService, apn, user, pwd, r5);
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// getNetworkStatus
+	CleanupStack::PopAndDestroy(1, &getNetworkStatus);
+	
+	return TestStepResult();
+	}
+
+
+void CCTSYIntegrationTestPacketContext0028::DoTest0028L(RPacketService& aPacketService, TPtrC aApn, TPtrC aUser, TPtrC aPwd, TInt aNWType)
+/**
+ * Activates primary packet context with default context parameters.
+ * @param aPacketService Reference to packet service.
+ * @param aNWType Gprs / R99_R4 / R5.
+ */
+	{
+	TExtEtelRequestStatus reqSetDefaultContextParams(aPacketService, EPacketSetDefaultContextParams);	
+	CleanupStack::PushL(reqSetDefaultContextParams);
+	RPacketContext::TContextConfigGPRS setConfigGprs;
+	TPckg<RPacketContext::TContextConfigGPRS> setConfigPkgGprs(setConfigGprs);
+	RPacketContext::TContextConfigR99_R4 setConfigR99;
+	TPckg<RPacketContext::TContextConfigR99_R4> setConfigPkgR99(setConfigR99);
+	RPacketContext::TContextConfig_R5 setConfigR5;
+	TPckg<RPacketContext::TContextConfig_R5> setConfigPkgR5(setConfigR5);
+
+	switch(aNWType)
+		{
+		case 1: // GPRS
+			// Set valid context params with RPacketService::SetDefaultContextParams and using RPacketContext::TContextConfigGPRS
+			setConfigGprs.iAccessPointName.Copy(aApn);
+			setConfigGprs.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser);
+			setConfigGprs.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd);
+			aPacketService.SetDefaultContextParams(reqSetDefaultContextParams, setConfigPkgGprs);
+			break;
+		
+		case 2: // R99_R4
+			// Set valid context params with RPacketService::SetDefaultContextParams and using RPacketContext::TContextConfigR99_R4
+			setConfigR99.iAccessPointName.Copy(aApn);
+			setConfigR99.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser);
+			setConfigR99.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd);
+			aPacketService.SetDefaultContextParams(reqSetDefaultContextParams, setConfigPkgR99);
+			break;
+
+		case 3: // R5
+			// Set valid context params with RPacketService::SetDefaultContextParams and using RPacketContext::TContextConfig_R5
+			setConfigR5.iAccessPointName.Copy(aApn);
+			setConfigR5.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser);
+			setConfigR5.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd);
+			aPacketService.SetDefaultContextParams(reqSetDefaultContextParams, setConfigPkgR5);
+			break;
+		}
+		
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqSetDefaultContextParams, ETimeLong), KErrNone, _L("RPacketService::SetDefaultContextParams timed out"));
+	ASSERT_EQUALS(reqSetDefaultContextParams.Int(), KErrNone, _L("RPacketService::SetDefaultContextParams returned with an error"));
+
+	// Check RPacketService::GetDefaultContextParams returns same params as that set
+	TExtEtelRequestStatus reqGetDefaultContextParams(aPacketService, EPacketGetDefaultContextParams);	
+	CleanupStack::PushL(reqGetDefaultContextParams);
+	RPacketContext::TContextConfigGPRS getConfigGprs;
+	TPckg<RPacketContext::TContextConfigGPRS> getConfigPkgGprs(getConfigGprs);
+	RPacketContext::TContextConfigR99_R4 getConfigR99;
+	TPckg<RPacketContext::TContextConfigR99_R4> getConfigPkgR99(getConfigR99);
+	RPacketContext::TContextConfig_R5 getConfigR5;
+	TPckg<RPacketContext::TContextConfig_R5> getConfigPkgR5(getConfigR5);
+
+	switch(aNWType)
+		{
+		case 1: // GPRS
+			aPacketService.GetDefaultContextParams(reqGetDefaultContextParams, getConfigPkgGprs);
+			break;
+		
+		case 2: // R99_R4
+			aPacketService.GetDefaultContextParams(reqGetDefaultContextParams, getConfigPkgR99);
+			break;
+
+		case 3: // R5
+			aPacketService.GetDefaultContextParams(reqGetDefaultContextParams, getConfigPkgR5);
+			break;
+		}
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqGetDefaultContextParams, ETimeLong), KErrNone, _L("RPacketService::GetDefaultContextParams timed out"));
+	ASSERT_EQUALS(reqGetDefaultContextParams.Int(), KErrNone, _L("RPacketService::GetDefaultContextParams returned with an error"));
+
+	TCmpRPacketContextTContextConfigGPRS contextConfigGPRSCmp(getConfigGprs, setConfigGprs, *this);
+	TCmpRPacketContextTContextConfigR99_R4 contextConfigR99Cmp(getConfigR99, setConfigR99, *this);
+	TCmpRPacketContextTContextConfig_R5 contextConfigR5Cmp(getConfigR5, setConfigR5, *this);
+
+	switch(aNWType)
+		{
+		case 1: // GPRS
+			ASSERT_TRUE(contextConfigGPRSCmp.IsEqual(ELogError), _L("RPacketService.GetDefaultContextParams did not return same params as that set"));	
+			break;
+
+		case 2: // R99_R4
+			ASSERT_TRUE(contextConfigR99Cmp.IsEqual(ELogError), _L("RPacketService.GetDefaultContextParams did not return same params as that set"));	
+			break;
+
+		case 3: // R5
+			ASSERT_TRUE(contextConfigR5Cmp.IsEqual(ELogError), _L("RPacketService.GetDefaultContextParams did not return same params as that set"));	
+			break;
+		}
+
+	// Open a new context.	
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	// Post notification for service's status change
+	TExtEtelRequestStatus notifyServiceStChStatus(aPacketService, EPacketNotifyStatusChange);
+	CleanupStack::PushL(notifyServiceStChStatus);
+	RPacketService::TStatus packetServiceStatus;
+	aPacketService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+
+	// Post notification for primary context status change
+	TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+
+	// Activate a context with RPacketContext::Activate 
+	//$CTSYProblem SetConfig is required before activation of the context. 
+	//If SetConfig is not called, Activate returns KErrTimedOut(-33). 
+	//SetDefaultContextParams sends context parameters common to all contexts to adaptation/LTSY layer.
+	//However,for some reason, adaptation does not use these params when Activate is called 
+	//and requires setting of context specific parameters with SetConfig     
+	TExtEtelRequestStatus setConfigStatus(primaryPacketContext, EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus);
+	switch(aNWType)
+		{
+		case 1: // GPRS
+			primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgGprs);
+			break;
+
+		case 2: // R99_R4
+			primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgR99);
+			break;
+
+		case 3: // R5
+			primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgR5);
+			break;
+		}
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out"));
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned with error status."));
+
+	TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	primaryPacketContext.Activate(contextActivateStatus);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+	RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+				aPacketService,
+				notifyServiceStChStatus,
+				packetServiceStatus, 
+				expectedPacketServiceStatus,
+				KErrNone);
+
+	// Check RPacketService::GetStatus returns EStatusActive
+	RPacketService::TStatus pckSrvcStatus;
+	ASSERT_EQUALS(aPacketService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// ===  Get context information ===
+
+	// Check RPacketContext::GetConfig returns same config as the default set in RPacketService::SetDefaultContextParams
+	TExtEtelRequestStatus contextConfigStatus(primaryPacketContext, EPacketContextGetConfig);
+	CleanupStack::PushL(contextConfigStatus);
+
+	switch(aNWType)
+		{
+		case 1: // GPRS
+			primaryPacketContext.GetConfig(contextConfigStatus, getConfigPkgGprs);
+			break;
+		
+		case 2: // R99_R4
+			primaryPacketContext.GetConfig(contextConfigStatus, getConfigPkgR99);
+			break;
+
+		case 3: // R5
+			primaryPacketContext.GetConfig(contextConfigStatus, getConfigPkgR5);
+			break;
+		}
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextConfigStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConfig timed out."))
+	ASSERT_EQUALS(contextConfigStatus.Int(), KErrNone, _L("RPacketContext::GetConfig returned an error."));
+	
+	TCmpRPacketContextTContextConfigGPRS contextConfigGPRSCmp2(getConfigGprs, setConfigGprs, *this);
+	TCmpRPacketContextTContextConfigR99_R4 contextConfigR99Cmp2(getConfigR99, setConfigR99, *this);
+	TCmpRPacketContextTContextConfig_R5 contextConfigR5Cmp2(getConfigR5, setConfigR5, *this);
+
+	switch(aNWType)
+		{
+		case 1: // GPRS
+			ASSERT_TRUE(contextConfigGPRSCmp2.IsEqual(ELogError), _L("RPacketService.GetConfig did not return same params as the default set in RPacketService::SetDefaultContextParams"));
+			break;
+
+		case 2: // R99_R4
+			ASSERT_TRUE(contextConfigR99Cmp2.IsEqual(ELogError), _L("RPacketService.GetConfig did not return same params as the default set in RPacketService::SetDefaultContextParams"));
+			break;
+
+		case 3: // R5
+			ASSERT_TRUE(contextConfigR5Cmp2.IsEqual(ELogError), _L("RPacketService.GetConfig did not return same params as the default set in RPacketService::SetDefaultContextParams"));
+			break;
+		}
+
+	// Check RPacketService::EnumerateContexts returns 1.
+	TExtEtelRequestStatus enumerateContextsStatus(aPacketService, EPacketEnumerateContexts);	
+	CleanupStack::PushL(enumerateContextsStatus);
+	TInt count(0);
+	TInt maxAllowed(0);
+	const TInt wantedCount = 1;
+	aPacketService.EnumerateContexts(enumerateContextsStatus, count, maxAllowed);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContexts timed out"));
+	ASSERT_EQUALS(enumerateContextsStatus.Int(), KErrNone, _L("RPacketService::EnumerateContexts returned with error status."));
+	ASSERT_EQUALS(count, wantedCount, _L("RPacketService::EnumerateContexts did not return context count 1 as expected"));
+
+	// Check RPacketService::GetContextInfo with aIndex = 0 returns correct name in iName
+	TExtEtelRequestStatus getContextInfo(aPacketService, EPacketGetContextInfo);
+	CleanupStack::PushL(getContextInfo);
+	RPacketService::TContextInfo contextInfo;
+	const TInt index = 0;
+	aPacketService.GetContextInfo(getContextInfo, index, contextInfo);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfo, ETimeLong), KErrNone, _L("RPacketService::GetContextInfo timed out"));
+	ASSERT_TRUE(contextInfo.iName.Length() > 0, _L("RPacketService::GetContextInfo returned with zero length context name"));
+
+	// Check RPacketService::GetContextInfo with aIndex = 0 returns EStatusActive in iStatus
+	ASSERT_EQUALS(contextInfo.iStatus, RPacketContext::EStatusActive, _L("RPacketService::GetContextInfo did not return iStatus RPacketContext::EStatusActive as expected"));
+
+	// Release packet context
+	iEtelSessionMgr.ReleasePrimaryPacketContext(KMainServer,
+											KMainPhone, 
+											KMainPacketService, 
+											KPrimaryPacketContext1);
+
+	// Pop
+	// reqSetDefaultContextParams
+	// reqGetDefaultContextParams
+	// notifyServiceStChStatus
+	// notifyContextStChStatus
+	// setConfigStatus
+	// contextActivateStatus
+	// contextConfigStatus
+	// enumerateContextsStatus
+	// getContextInfo
+	CleanupStack::PopAndDestroy(9, &reqSetDefaultContextParams);
+
+	}
+
+
+TPtrC CCTSYIntegrationTestPacketContext0028::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0028");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0029::CCTSYIntegrationTestPacketContext0029(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0029::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0029::~CCTSYIntegrationTestPacketContext0029()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0029::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0029
+ * @SYMFssID BA/CTSY/PKTC-0029
+ * @SYMTestCaseDesc Set default context params to unsupported type.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketService::SetDefaultContextParams, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::Activate, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::GetConfig, RPacketService::SetDefaultContextParams, RPacketService::Open
+ * @SYMTestExpectedResults Pass - Context activated with original default params.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context activated without specific config has original default context params (not ones set).
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+    // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+	
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+    
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	// Get the default context params with RPacketService::GetDefaultContextParams 	
+	RPacketContext::TContextConfigGPRS dummyConfig;
+	TPckg<RPacketContext::TContextConfigGPRS> dummyConfigPkgGprs(dummyConfig);
+	
+	TExtEtelRequestStatus reqGetDummyContextParams(packetService, EPacketGetDefaultContextParams);	
+	CleanupStack::PushL(reqGetDummyContextParams);
+	packetService.GetDefaultContextParams(reqGetDummyContextParams, dummyConfigPkgGprs);
+	
+	//Check RPacketService::GetDefaultContextParams returns with KErrNotReady
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqGetDummyContextParams, ETimeLong), KErrNone, _L("RPacketService::GetDefaultContextParams timed out"));
+	ASSERT_EQUALS(reqGetDummyContextParams.Int(), KErrNotReady, _L("RPacketService::GetDefaultContextParams did not return KErrNotReady"));
+		
+	// Get network info from phone	 
+	TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork);
+	CleanupStack::PushL(getNetworkStatus);
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info);
+	phone.GetCurrentNetwork(getNetworkStatus, infopckg);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong),
+				  						    KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out"));
+	ASSERT_EQUALS(getNetworkStatus.Int(),
+				  KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error"));
+	
+	// Get the context config using network info
+	RPacketContext::TContextConfigGPRS defaultConfig;
+	TPtrC apn, user, pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd);
+	defaultConfig.iAccessPointName.Copy(apn);
+	defaultConfig.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user);
+	defaultConfig.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd);
+	TPckg<RPacketContext::TContextConfigGPRS> defaultConfigPkgGprs(defaultConfig);
+
+	// Set the default context params with RPacketService::SetDefaultContextParams 	
+	DEBUG_PRINTF1(_L("Setting Default Context Params"));
+	TExtEtelRequestStatus regSetInitParams(packetService,EPacketSetDefaultContextParams);
+	CleanupStack::PushL(regSetInitParams);		
+	packetService.SetDefaultContextParams(regSetInitParams, defaultConfigPkgGprs);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(regSetInitParams, ETimeLong), KErrNone, _L("RPacketService::SetDefaultContextParams timed out"));
+	ASSERT_EQUALS(regSetInitParams.Int(), KErrNone, _L("RPacketService::SetDefaultContextParams returned with an error"));
+	
+	// Get the default context params with RPacketService::GetDefaultContextParams check they are the same as what was set
+	DEBUG_PRINTF1(_L("Getting Default Context Params"));
+	RPacketContext::TContextConfigGPRS getConfig;
+	TPckg<RPacketContext::TContextConfigGPRS> getConfigPkgGprs(getConfig);
+	 	
+	TExtEtelRequestStatus reqGetDefaultContextParams(packetService, EPacketGetDefaultContextParams);	
+	CleanupStack::PushL(reqGetDefaultContextParams);
+	packetService.GetDefaultContextParams(reqGetDefaultContextParams, getConfigPkgGprs);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqGetDefaultContextParams, ETimeLong), KErrNone, _L("RPacketService::GetDefaultContextParams timed out"));
+	ASSERT_EQUALS(reqGetDefaultContextParams.Int(), KErrNone, _L("RPacketService::GetDefaultContextParams returned with an error"));
+
+	DEBUG_PRINTF1(_L("Comparing default Context Params"));
+	TCmpRPacketContextTContextConfigGPRS contextParamsComparator(defaultConfig, getConfig, *this);
+	ASSERT_TRUE(contextParamsComparator.IsEqual(ELogError), _L("RPacketService::GetDefaultContextParams did not return set parameters"));
+		
+	// Set invalid context parameters using RPacketService::SetDefaultContextParams and using RPacketContext::TContextConfigGPRS 
+	RPacketContext::TContextConfigGPRS invalidConfig;
+	invalidConfig.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user);
+	invalidConfig.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd);
+	_LIT(KFaultyAPN, "Incorrect APN name");
+	invalidConfig.iAccessPointName.Copy(KFaultyAPN);
+	TPckg<RPacketContext::TContextConfigGPRS> invalidConfigPkgGprs(invalidConfig);
+	
+	TExtEtelRequestStatus reqSetDefaultContextParams(packetService, EPacketSetDefaultContextParams);	
+	CleanupStack::PushL(reqSetDefaultContextParams);
+	packetService.SetDefaultContextParams(reqSetDefaultContextParams, invalidConfigPkgGprs);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqSetDefaultContextParams, ETimeLong), KErrNone, _L("RPacketService::SetDefaultContextParams timed out"));
+	ASSERT_EQUALS(reqSetDefaultContextParams.Int(), KErrNone, _L("RPacketService::SetDefaultContextParams returned with an error"));
+
+
+	// Open a new context. 	
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);		
+
+	// Post notification for service's status change
+	TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange);
+	CleanupStack::PushL(notifyServiceStChStatus);
+	RPacketService::TStatus packetServiceStatus;
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+
+	// Post notification for primary context status change
+	TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	//$CTSYProblem
+	//SetConfig is required before activation of the context. 
+	//If SetConfig is not called, Activate returns KErrTimedOut(-33).
+	//SetDefaultContextParams sends context parameters common to all contexts to adaptation/LTSY layer.
+	//However,for some reason, adaptation does not use these params when Activate is called 
+	//and requires setting of context specific parameters with SetConfig     
+
+	TExtEtelRequestStatus setConfigStatus(primaryPacketContext, EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus);
+	primaryPacketContext.SetConfig(setConfigStatus, defaultConfigPkgGprs);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::SetConfig timed out"));
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone,
+					_L("RPacketContext::SetConfig returned with error status."));
+
+	// Activate packet context with RPacketContext::Activate	
+	TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	primaryPacketContext.Activate(contextActivateStatus);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, 
+					_L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone,
+					_L("RPacketContext::Activate returned with error status."));
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+	RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+				packetService,
+				notifyServiceStChStatus,
+				packetServiceStatus, 
+				expectedPacketServiceStatus,
+				KErrNone);
+
+	// Check RPacketService::GetStatus returns EStatusActive
+	RPacketService::TStatus pckSrvcStatus;
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+		
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+				
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::GetConfig returns same config as the default returned by RPacketService::GetDefaultContextParams
+	TExtEtelRequestStatus contextConfigStatus(primaryPacketContext, EPacketContextGetConfig);
+	CleanupStack::PushL(contextConfigStatus);
+	
+	RPacketContext::TContextConfigGPRS getConfigGprs2;
+	TPckg<RPacketContext::TContextConfigGPRS> getConfigPkgGprs2(getConfigGprs2);
+	primaryPacketContext.GetConfig(contextConfigStatus, getConfigPkgGprs2);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextConfigStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConfig timed out."));
+	
+	TCmpRPacketContextTContextConfigGPRS contextParamsComparatorNumberTwo(defaultConfig, getConfigGprs2, *this);
+	ASSERT_TRUE(contextParamsComparatorNumberTwo.IsEqual(ELogError), _L("RPacketService::GetConfig did not return same config as the default returned by RPacketService::GetDefaultContextParams"));
+
+	
+			
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// reqGetDummyContextParams
+	// getNetworkStatus
+	// regSetInitParams
+	// reqGetDefaultContextParams
+	// reqSetDefaultContextParams
+	// notifyServiceStChStatus
+	// notifyContextStChStatus
+	// setConfigStatus
+	// contextActivateStatus
+	// contextConfigStatus
+	CleanupStack::PopAndDestroy(10,&reqGetDummyContextParams);
+		
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0029::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0029");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0030::CCTSYIntegrationTestPacketContext0030(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0030::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0030::~CCTSYIntegrationTestPacketContext0030()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0030::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0030
+ * @SYMFssID BA/CTSY/PKTC-0030
+ * @SYMTestCaseDesc Deactivate NIF when there is only one NIF.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketService::GetStatus, RPacketService::EnumerateContextsInNif, RPacketService::EnumerateContexts, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::DeactivateNIF, RPacketService::GetNifInfo, RPacketService::DeactivateNIF, RPacketService::GetNifInfo, RPacketService::DeactivateNIF
+ * @SYMTestExpectedResults Pass - All contexts in NIF deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify primary and secondary contexts in NIF are deactivated when primary context name specified.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure there is an active primary and secondary context. 
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	
+    // Check if we are on a simulated network
+	CHECK_EQUALS_L( iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL( phone ), KErrNone, 
+			_L("Network is unavailable") );
+    iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+    TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatus);
+	TName contextId;
+	packetService.NotifyContextAdded(notifyContextStatus, contextId);
+    RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+    iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext);
+	TName secondaryContextId;
+	packetService.NotifyContextAdded(notifyContextStatus, secondaryContextId);
+	RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+    CHECK_TRUE_L(ActivateSecondaryPacketContextL(secondaryPacketContext),_L("Can't activate the secondary context"));
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Check RPacketService::EnumerateNifs returns aCount = 1
+	TExtEtelRequestStatus enumerateNifsStatus(packetService, EPacketEnumerateNifs);
+	CleanupStack::PushL(enumerateNifsStatus);
+	TInt count=-1;
+	packetService.EnumerateNifs(enumerateNifsStatus,count);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateNifsStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::EnumerateNifs timed out."));
+	ASSERT_EQUALS(enumerateNifsStatus.Int(), KErrNone, 
+			_L("RPacketService::EnumerateNifs failed."));
+	ASSERT_EQUALS(count,1,_L("RPacketService::EnumerateNifs did not return correct number of NIFs."));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName
+	TExtEtelRequestStatus getNifInfoStatus(packetService, EPacketGetNifInfo);
+	CleanupStack::PushL(getNifInfoStatus);
+	RPacketService::TNifInfoV2 nifInfo;
+	RPacketService::TNifInfoV2Pckg nifInfoPckg(nifInfo);
+	packetService.GetNifInfo(getNifInfoStatus,0,nifInfoPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNifInfoStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::GetNifInfo timed out."));
+	ASSERT_EQUALS(getNifInfoStatus.Int(), KErrNone, 
+			_L("RPacketService::GetNifInfo failed."));
+	ASSERT_TRUE(nifInfo.iContextName.Length()>0,_L("RPacketService::GetNifInfo invlaid context name"));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 2
+	ASSERT_EQUALS(nifInfo.iNumberOfContexts,2,_L("RPacketService::GetNifInfo wrong number of contexts"));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive
+	ASSERT_EQUALS(nifInfo.iNifStatus,RPacketContext::EStatusActive,_L("RPacketService::GetNifInfo wrong status"));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress
+	ASSERT_TRUE(nifInfo.iPdpAddress.Length()>0,_L("RPacketService::GetNifInfo invlaid PDP address"));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns EInternalContext
+	ASSERT_EQUALS(nifInfo.iContextType, RPacketService::EInternalContext,_L("RPacketService::GetNifInfo wrong type"));
+
+	// Check RPacketService::GetNifInfo with aCount = 1 returns KErrArgument
+	packetService.GetNifInfo(getNifInfoStatus,1,nifInfoPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNifInfoStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::GetNifInfo timed out."));
+	ASSERT_EQUALS(getNifInfoStatus.Int(), KErrArgument, 
+			_L("RPacketService::GetNifInfo did not failed."));
+
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing primary context name returns aCount = 2
+	TExtEtelRequestStatus enumContextsInfStatus(packetService, EPacketEnumerateContextsInNif);
+	CleanupStack::PushL(enumContextsInfStatus);
+	count=-1;
+	packetService.EnumerateContextsInNif(enumContextsInfStatus,contextId,count);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumContextsInfStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::EnumerateContextsInNif timed out."));
+	ASSERT_EQUALS(enumContextsInfStatus.Int(), KErrNone, 
+			_L("RPacketService::EnumerateContextsInNif failed."));
+	ASSERT_EQUALS(count,2,_L("RPacketService::EnumerateContextsInNif did not return correct number of NIFs."));
+
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 0 returns aContextName = name of primary context
+	TBuf<200> contextName;
+	TExtEtelRequestStatus getContextNameInNifStatus(packetService, EPacketGetContextNameInNif);
+	CleanupStack::PushL(getContextNameInNifStatus);
+	packetService.GetContextNameInNif(getContextNameInNifStatus,contextId,0,contextName);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::GetContextNameInNif timed out."));
+	ASSERT_EQUALS(getContextNameInNifStatus.Int(), KErrNone, 
+			_L("RPacketService::GetContextNameInNif failed."));
+	ASSERT_EQUALS_DES16(contextName,contextId,_L("RPacketService::GetContextNameInNif did not returned the expected value."));
+
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 1 returns aContextName = name of secondary context
+	packetService.GetContextNameInNif(getContextNameInNifStatus,contextId,1,contextName);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::GetContextNameInNif timed out."));
+	ASSERT_EQUALS(getContextNameInNifStatus.Int(), KErrNone, 
+			_L("RPacketService::GetContextNameInNif failed."));
+	ASSERT_EQUALS_DES16(contextName,secondaryContextId,_L("RPacketService::GetContextNameInNif did not returned the expected value."));
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+
+	// Post notification for secondary context's status change
+	TExtEtelRequestStatus secondaryNotifyContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(secondaryNotifyContextStChStatus);
+	RPacketContext::TContextStatus secondaryPacketContextStatus;
+    secondaryPacketContext.NotifyStatusChange(secondaryNotifyContextStChStatus, secondaryPacketContextStatus);
+
+	// Post notification for service's status change
+	TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange);
+	CleanupStack::PushL(notifyServiceStChStatus);
+	RPacketService::TStatus packetServiceStatus;
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+    
+	// Deactivate the NIF with RPacketService::DeactivateNIF and aContextName = name of primary context 
+    ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10047);
+	ASSERT_EQUALS(1,0, _L("Test leaving because it will cause TSY crash, remove this when defect is fixed"));
+	TEST_CHECK_POINT_L(_L("test leaving..."));
+	TExtEtelRequestStatus deactivateNifStatus(packetService, EPacketDeactivateNIF);
+	CleanupStack::PushL(deactivateNifStatus);
+    packetService.DeactivateNIF(deactivateNifStatus,contextId);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(deactivateNifStatus, ETimeMedium), KErrNone, 
+			_L("RPacketService::DeactivateNIF timed out."));
+	ASSERT_EQUALS(deactivateNifStatus.Int(), KErrNone, 
+			_L("RPacketService::DeactivateNIF failed."));
+    
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange for primary context completes with EStatusDeactivating -> EStatusInactive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+			    primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+	
+	//  -> EStatusInactive
+	expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+			    primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus for primary context returns EStatusInactive
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::NotifyStatusChange for secondary context completes with EStatusDeactivating -> EStatusInactive
+    expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				secondaryNotifyContextStChStatus,
+				secondaryPacketContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	//   ->  EStatusInactive
+    secondaryPacketContext.NotifyStatusChange(secondaryNotifyContextStChStatus, secondaryPacketContextStatus);
+    expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				secondaryNotifyContextStChStatus,
+				secondaryPacketContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus for secondary context returns EStatusInactive
+	ASSERT_EQUALS(secondaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusAttached
+	RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusAttached;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+				packetService,
+				notifyServiceStChStatus,
+				packetServiceStatus, 
+				expectedPacketServiceStatus,
+				KErrNone);
+
+	// Check RPacketService::GetStatus returns EStatusAttached
+	RPacketService::TStatus pckSrvcStatus;
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status."));
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+    StartCleanup();
+	
+	// Pop:
+	//	deactivateNifStatus
+	//	notifyServiceStChStatus
+	//	secondaryNotifyContextStChStatus
+	//	notifyContextStChStatus
+	//	getContextNameInNifStatus
+	//	enumContextsInfStatus
+	//	getNifInfoStatus
+	//	enumerateNifsStatus
+	//	notifyContextStatus
+	CleanupStack::PopAndDestroy(9,&notifyContextStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0030::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0030");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0031::CCTSYIntegrationTestPacketContext0031(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0031::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0031::~CCTSYIntegrationTestPacketContext0031()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0031::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0031
+ * @SYMFssID BA/CTSY/PKTC-0031
+ * @SYMTestCaseDesc Deactivate NIF when there is only one NIF.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketService::GetStatus, RPacketService::EnumerateContextsInNif, RPacketService::EnumerateContexts, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::DeactivateNIF, RPacketService::GetNifInfo, RPacketService::DeactivateNIF, RPacketService::GetNifInfo, RPacketService::DeactivateNIF
+ * @SYMTestExpectedResults Pass - All contexts in NIF deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify primary and secondary contexts in NIF are deactivated when secondary context name specified.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+    
+    //Check if we are on a simulated network
+ 	iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+
+	//  ===  Ensure there is an active primary and secondary context. ===   
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+    
+    // Open a primary PDP context
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+    // Open a secondary PDP context	
+	RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+	
+    // Activate primary context.											
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext);
+		
+	// Activate the secondary context 1.
+	ActivateSecondaryPacketContextL(secondaryPacketContext);
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+
+	// Get context info	
+	TExtEtelRequestStatus getContextInfo(packetService, EPacketGetContextInfo);
+	CleanupStack::PushL(getContextInfo);
+	RPacketService::TContextInfo contextInfo;
+	TInt index = 0;
+	packetService.GetContextInfo(getContextInfo, index, contextInfo);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfo, ETimeLong), KErrNone, _L("RPacketService::GetContextInfo timed out"));
+	ASSERT_TRUE(contextInfo.iName.Length() > 0, _L("RPacketService::GetContextInfo returned with zero length context name"));
+	index = 1;
+	RPacketService::TContextInfo contextInfo2;
+	packetService.GetContextInfo(getContextInfo, index, contextInfo2);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfo, ETimeLong), KErrNone, _L("RPacketService::GetContextInfo timed out"));
+	ASSERT_TRUE(contextInfo2.iName.Length() > 0, _L("RPacketService::GetContextInfo returned with zero length context name"));
+	
+	// Check RPacketService::EnumerateNifs returns aCount = 1
+	TExtEtelRequestStatus nifsStatus(packetService, EPacketEnumerateNifs);
+	CleanupStack::PushL(nifsStatus);
+	TInt nifCount = 0;
+	const TInt wantedCount = 1;
+	packetService.EnumerateNifs(nifsStatus, nifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out."));
+	ASSERT_EQUALS(nifCount, wantedCount, _L("RPacketService::EnumerateNifs returned with an error."));
+	
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName
+	TExtEtelRequestStatus nifInfoStatus(packetService, EPacketGetNifInfo);
+	CleanupStack::PushL(nifInfoStatus);
+	TInt nifInfoCount = 0;
+	RPacketService::TNifInfoV2 nifInfoV2;
+	RPacketService::TNifInfoV2Pckg nifInfoV2Pkg(nifInfoV2);
+	packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoV2Pkg);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeLong), KErrNone, _L("RPacketService::GetNifInfo returned an error"));
+	ASSERT_TRUE(nifInfoV2.iContextName.Length() > 0, _L("RPacketService::GetNifInfo with valid name  returned with an error"));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 2
+	ASSERT_EQUALS(nifInfoV2.iNumberOfContexts, 2, _L("RPacketService::GetNifInfo returned with incorrect number of contexts"));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive
+	ASSERT_EQUALS(nifInfoV2.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo returned with incorrect NIF status"));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress
+ 	ASSERT_TRUE(nifInfoV2.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid pdp address"));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns EExternalContext
+	// $CTSYProblem:RPacketService::GetNifInfo always returns EInternalContext
+    // Changed test procedure to check for EInternalContext instead of EExternalContext
+	ASSERT_EQUALS(nifInfoV2.iContextType, RPacketService::EInternalContext, _L("RPacketService::GetNifInfo returned wrong context type."));
+
+	// Check RPacketService::GetNifInfo with aCount = 1 returns KErrArgument
+	nifInfoCount = 1;
+	packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoV2Pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeLong), KErrNone, _L("RPacketService::GetNifInfo returned an error"));	
+	ASSERT_EQUALS(nifInfoStatus.Int(), KErrArgument, _L("RPacketService::GetNifInfo did not failed."));
+
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing primary context name returns aCount = 2
+	TExtEtelRequestStatus reqContextNifStatus(packetService, EPacketEnumerateContextsInNif);
+	CleanupStack::PushL(reqContextNifStatus);	
+	packetService.EnumerateContextsInNif(reqContextNifStatus, contextInfo.iName, nifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqContextNifStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumerateContextsInNif timed out."));
+	ASSERT_EQUALS(nifCount, 2, _L("RPacketContext::EnumerateContextsInNif did not return 2 as expected"));
+
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 0 returns aContextName = name of primary context
+	TName contextName;
+	TExtEtelRequestStatus getContextNameInNifStatus(packetService, EPacketGetContextNameInNif);
+	CleanupStack::PushL(getContextNameInNifStatus);	
+	packetService.GetContextNameInNif(getContextNameInNifStatus, contextInfo.iName, 0, contextName);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeMedium), KErrNone, _L("RPacketService::GetContextNameInNif timed out."));
+	ASSERT_EQUALS(getContextNameInNifStatus.Int(), KErrNone, _L("RPacketService::GetContextNameInNif returned with an error."));
+	ASSERT_EQUALS_DES16(contextName,contextInfo.iName,_L("RPacketService::GetContextNameInNif did not returned the expected value."));
+
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 1 returns aContextName = name of secondary context
+	packetService.GetContextNameInNif(getContextNameInNifStatus,contextInfo.iName, 1, contextName);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeMedium), KErrNone, _L("RPacketService::GetContextNameInNif timed out."));
+	ASSERT_EQUALS(getContextNameInNifStatus.Int(), KErrNone, _L("RPacketService::GetContextNameInNif returned with an error."));
+	ASSERT_EQUALS_DES16(contextName, contextInfo2.iName,_L("RPacketService::GetContextNameInNif did not returned the expected value."));
+
+	// Post notification for service's status change
+	TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange);
+	CleanupStack::PushL(notifyServiceStChStatus);
+	RPacketService::TStatus packetServiceStatus;
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+	
+	// Post notification for primary context status change
+	TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+																
+	// Post notification for secondary context status change
+	TExtEtelRequestStatus notifySecondaryContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifySecondaryContextStChStatus);
+	RPacketContext::TContextStatus secPacketContextStatus;
+	secondaryPacketContext.NotifyStatusChange(notifySecondaryContextStChStatus, secPacketContextStatus);
+
+	// Deactivate the NIF with RPacketService::DeactivateNIF and aContextName = name of secondary context 
+    ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10047);
+	ASSERT_EQUALS(1,0, _L("Test leaving because it will cause TSY crash, remove this when defect is fixed"));
+	TEST_CHECK_POINT_L(_L("test leaving..."));
+	TExtEtelRequestStatus deactivateNifStatus(packetService, EPacketDeactivateNIF);
+	CleanupStack::PushL(deactivateNifStatus);
+    packetService.DeactivateNIF(deactivateNifStatus,contextInfo2.iName);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(deactivateNifStatus, ETimeMedium), KErrNone, _L("RPacketService::DeactivateNIF timed out."));
+	ASSERT_EQUALS(deactivateNifStatus.Int(), KErrNone, _L("RPacketService::DeactivateNIF returned with an error."));
+	
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange for primary context completes with EStatusDeactivating -> EStatusInactive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+			    primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+				
+    primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+	expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+			    primaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+				
+	// Check RPacketContext::GetStatus for primary context returns EStatusInactive
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus for primary context returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::NotifyStatusChange for secondary context completes with EStatusDeactivating -> EStatusInactive
+	RPacketContext::TContextStatus expectedSecondaryPacketContextStatus = RPacketContext::EStatusDeactivating;
+   	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifySecondaryContextStChStatus,
+				secPacketContextStatus, 
+				expectedSecondaryPacketContextStatus,
+				KErrNone);
+				
+	secondaryPacketContext.NotifyStatusChange(notifySecondaryContextStChStatus, secPacketContextStatus);
+	expectedSecondaryPacketContextStatus = RPacketContext::EStatusInactive;	
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifySecondaryContextStChStatus,
+				secPacketContextStatus, 
+				expectedSecondaryPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus for secondary context returns EStatusInactive
+	ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus for secondary context returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusAttached
+	RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusAttached;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+				packetService,
+				notifyServiceStChStatus,
+				packetServiceStatus, 
+				expectedPacketServiceStatus,
+				KErrNone);
+				
+	// Check RPacketService::GetStatus returns EStatusAttached
+	ASSERT_EQUALS(packetService.GetStatus(packetServiceStatus), KErrNone, _L("RPacketService::GetStatus return error."));
+	ASSERT_EQUALS(packetServiceStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status."));
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop:
+	// notifyServiceStChStatus
+	// notifyContextStChStatus
+	// notifySecondaryContextStChStatus
+	// getContextInfo
+	// nifsStatus
+	// nifInfoStatus
+	// reqContextNifStatus
+	// getContextNameInNifStatus
+	// deactivateNifStatus	
+	CleanupStack::PopAndDestroy(9,&notifyServiceStChStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0031::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0031");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0032::CCTSYIntegrationTestPacketContext0032(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0032::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0032::~CCTSYIntegrationTestPacketContext0032()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0032::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0032
+ * @SYMFssID BA/CTSY/PKTC-0032
+ * @SYMTestCaseDesc Deactivate NIF when there is more than one NIF.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketService::EnumerateNifs, RPacketService::GetNifInfo, RPacketService::GetContextNameInNif, RPacketContext::NotifyStatusChange, RPacketService::DeactivateNIF, RPacketService::GetStatus, RPacketService::EnumerateContextsInNif
+ * @SYMTestExpectedResults Pass - All contexts in NIF deactivated. Other contexts unaffected.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify primary and secondary contexts in NIF are deactivated when primary context name specified
+
+Verify contexts in another NIF are not affected.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// === Ensure there is an 2 primary contexts active. Each of these must have an active secondary context opened from it. (Primary 1 and secondary 1 in one NIF and primary 2 and secondary 2 in the second NIF.) ===
+	
+ 	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+  
+  	//Check if we are on a simulated network
+ 	iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+ 	
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+    
+    // Post notification for the RPacketService::NotifyContextAdded
+   	TExtEtelRequestStatus notifyContextPrimary1Status(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextPrimary1Status);
+	
+    // Open a primary PDP context 1
+    TName primaryContextId1;
+    packetService.NotifyContextAdded(notifyContextPrimary1Status, primaryContextId1);
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+											
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextPrimary1Status, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete."));
+	CHECK_EQUALS_L(notifyContextPrimary1Status.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status."));										
+											
+	// Post notification for the RPacketService::NotifyContextAdded
+   	TExtEtelRequestStatus notifyContextPrimary2Status(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextPrimary2Status);
+	
+    // Open a primary PDP context 2 
+    TName primaryContextId2;
+    packetService.NotifyContextAdded(notifyContextPrimary2Status, primaryContextId2);
+	RPacketContext& primaryPacketContext2 = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext2);
+											
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextPrimary2Status, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete."));
+	CHECK_EQUALS_L(notifyContextPrimary2Status.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status."));
+		
+	// Activate primary context 1.											
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext);
+	
+	// Activate primary context 2.											
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext2, 2);
+	
+	// Post notification for the RPacketService::NotifyContextAdded
+   	TExtEtelRequestStatus notifyContextSecondary1Status(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextSecondary1Status);	
+	
+	// Open a secondary PDP context 1. 
+	TName secondaryContextId1;		
+	packetService.NotifyContextAdded(notifyContextSecondary1Status, secondaryContextId1);
+	RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+												
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextSecondary1Status, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete."));
+	CHECK_EQUALS_L(notifyContextSecondary1Status.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status."));
+																									
+	// Post notification for the RPacketService::NotifyContextAdded
+   	TExtEtelRequestStatus notifyContextSecondary2Status(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextSecondary2Status);
+													
+	// Open a secondary PDP context 2. 
+	// $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts
+
+	// Activate the secondary context 1.
+	CHECK_TRUE_L(ActivateSecondaryPacketContextL(secondaryPacketContext, KPrimaryPacketContext1, KSecondaryPacketContext1),_L("Can't activate the secondary context"));
+
+	// Activate the secondary context 2.
+	// $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Check RPacketService::EnumerateNifs returns aCount = 2
+	TExtEtelRequestStatus nifsStatus(packetService, EPacketEnumerateNifs);
+	CleanupStack::PushL(nifsStatus);
+	TInt nifCount = 0;
+	const TInt wantedCount = 2;
+	packetService.EnumerateNifs(nifsStatus, nifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out."));
+	ASSERT_EQUALS(nifCount, wantedCount, _L("RPacketService::EnumerateNifs returned with an error."));
+	
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 2
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress
+	// Check RPacketService::GetNifInfo with aCount = 0 returns EExternalContext
+	// Check RPacketService::GetNifInfo with aCount = 1 returns valid name in iContextName
+	// Check RPacketService::GetNifInfo with aCount = 1 returns iNumberOfContexts = 2
+	// Check RPacketService::GetNifInfo with aCount = 1 returns iNifStatus = EStatusActive
+	// Check RPacketService::GetNifInfo with aCount = 1 returns valid address in iPdpAddress
+	// Check RPacketService::GetNifInfo with aCount = 1 returns EExternalContext
+	// Check RPacketService::GetNifInfo with aCount = 2 returns KErrArgument
+	TExtEtelRequestStatus nifInfoStatus(packetService, EPacketGetNifInfo);
+	CleanupStack::PushL(nifInfoStatus);
+	TInt nifInfoCount = 0;
+	RPacketService::TNifInfoV2 nifInfoV2;
+	RPacketService::TNifInfoV2Pckg nifInfoV2Pkg(nifInfoV2);
+	packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoV2Pkg);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeLong), KErrNone, _L("RPacketService::GetNifInfo returned an error"));
+	ASSERT_TRUE(nifInfoV2.iContextName.Length() > 0, _L("RPacketService::GetNifInfo with aCount = 0 returned with invalid iContextName"));
+	ASSERT_EQUALS(nifInfoV2.iNumberOfContexts, 2, _L("RPacketService::GetNifInfo with iNumberOfContexts returned with an error"));
+	ASSERT_EQUALS(nifInfoV2.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo with iNifStatus returned with an error"));
+ 	ASSERT_TRUE(nifInfoV2.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid pdp address"));
+	ASSERT_EQUALS(nifInfoV2.iContextType, RPacketService::EExternalContext, _L("RPacketService::GetNifInfo with iContextType returned with an error"));
+
+	nifInfoCount = 1;
+	RPacketService::TNifInfoV2 secondNifInfoV2;
+	RPacketService::TNifInfoV2Pckg secondNifInfoV2V2Pkg(secondNifInfoV2);
+	packetService.GetNifInfo(nifInfoStatus,nifInfoCount,secondNifInfoV2V2Pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetNifInfo timed out."));
+	ASSERT_EQUALS(nifInfoStatus.Int(), KErrNone, _L("RPacketService::GetNifInfo returned with error."));
+	ASSERT_TRUE(secondNifInfoV2.iContextName.Length() > 0, _L("RPacketService::GetNifInfo with aCount = 0 returned with invalid iContextName"));
+	ASSERT_EQUALS(secondNifInfoV2.iNumberOfContexts, 2, _L("RPacketService::GetNifInfo with iNumberOfContexts returned with an error"));
+	ASSERT_EQUALS(secondNifInfoV2.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo with iNifStatus returned with an error"));
+ 	ASSERT_TRUE(secondNifInfoV2.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid pdp address"));
+	ASSERT_EQUALS(secondNifInfoV2.iContextType, RPacketService::EExternalContext, _L("RPacketService::GetNifInfo with iContextType returned with an error"));
+	
+	nifInfoCount = 2;
+	packetService.GetNifInfo(nifInfoStatus,nifInfoCount,nifInfoV2Pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetNifInfo timed out."));
+	ASSERT_EQUALS(nifInfoStatus.Int(), KErrArgument, _L("RPacketService::GetNifInfo did not returned with error."));
+	
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = primary 1 returns aCount = 2
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = primary 2 returns aCount = 2
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = secondary 1 returns aCount = 2
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = secondary 2 returns aCount = 2
+	TInt wantedNifCount = 2;
+	TExtEtelRequestStatus enumerateContextsInNifStatus(packetService, EPacketEnumerateContextsInNif);
+	CleanupStack::PushL(enumerateContextsInNifStatus);
+	packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, primaryContextId1, nifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumerateContextsInNif timed out."));
+	ASSERT_EQUALS(nifCount, wantedNifCount, _L("RPacketContext::EnumerateContextsInNif did not return 2 as expected."));
+	
+	nifCount = 0;
+	packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, primaryContextId2, nifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumerateContextsInNif timed out."));
+	ASSERT_EQUALS(nifCount, wantedNifCount, _L("RPacketContext::EnumerateContextsInNif did not return 2 as expected."));
+	
+	nifCount = 0;
+	packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, secondaryContextId1, nifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumerateContextsInNif timed out."));
+	ASSERT_EQUALS(nifCount, wantedNifCount, _L("RPacketContext::EnumerateContextsInNif did not return 2 as expected."));
+	
+	nifCount = 0;	
+	// $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts
+	
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = primary 1 and aIndex = 0 returns aContextName = name of primary context 1
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = primary 1 and aIndex = 1 returns aContextName = name of secondary context 1
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 1 and aIndex = 0 returns aContextName = name of primary context 1
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 1 and aIndex = 1 returns aContextName = name of secondary context 1
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = primary 2 and aIndex = 0 returns aContextName = name of primary context 2
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = primary 2 and aIndex = 1 returns aContextName = name of secondary context 2
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 2 and aIndex = 0 returns aContextName = name of primary context 2
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 2 and aIndex = 1 returns aContextName = name of secondary context 2
+    TExtEtelRequestStatus contextNameNifsStatus(packetService, EPacketGetContextNameInNif);
+	CleanupStack::PushL(contextNameNifsStatus);
+	TInt index = 0;	
+	TName returnedContextName;
+	packetService.GetContextNameInNif(contextNameNifsStatus, primaryContextId1, index, returnedContextName );
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out."));
+	ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketContext::GetContextNameInNif returned error"));
+	ASSERT_EQUALS_DES16(returnedContextName, primaryContextId1, _L("RPacketContext::GetContextNameInNif with aExistingContextName = existing context name returned with an error"));
+
+	index = 1;
+	packetService.GetContextNameInNif(contextNameNifsStatus, primaryContextId1, index, returnedContextName );
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out."));
+	ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketContext::GetContextNameInNif returned error"));
+	ASSERT_EQUALS_DES16(returnedContextName, secondaryContextId1, _L("RPacketContext::GetContextNameInNif with aExistingContextName = existing context name returned with an error"));	
+
+	index = 0;
+	packetService.GetContextNameInNif(contextNameNifsStatus, secondaryContextId1, index, returnedContextName );
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out."));
+	ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketContext::GetContextNameInNif returned error"));
+	ASSERT_EQUALS_DES16(returnedContextName, primaryContextId1, _L("RPacketContext::GetContextNameInNif with aExistingContextName = existing context name returned with an error"));
+
+	index = 1;
+	packetService.GetContextNameInNif(contextNameNifsStatus, secondaryContextId1, index, returnedContextName );
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out."));
+	ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketContext::GetContextNameInNif returned error"));
+	ASSERT_EQUALS_DES16(returnedContextName, secondaryContextId1, _L("RPacketContext::GetContextNameInNif with aExistingContextName = existing context name returned with an error"));
+
+	index = 0;
+	packetService.GetContextNameInNif(contextNameNifsStatus, primaryContextId2, index, returnedContextName );
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out."));
+	ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketContext::GetContextNameInNif returned error"));
+	ASSERT_EQUALS_DES16(returnedContextName, primaryContextId2, _L("RPacketContext::GetContextNameInNif with aExistingContextName = existing context name returned with an error"));
+
+	index = 1;
+	// $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts
+
+	index = 0;
+	// $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts
+
+	index = 1;
+	// $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts
+
+	// Post notifications for primary & secondary context status changes
+	// $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts
+	TExtEtelRequestStatus notifyprimaryContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyprimaryContextStChStatus);
+	RPacketContext::TContextStatus primaryPacketContextStatus;
+	primaryPacketContext.NotifyStatusChange(notifyprimaryContextStChStatus, primaryPacketContextStatus);
+
+	TExtEtelRequestStatus notifyprimary2ContextStChStatus(primaryPacketContext2, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyprimary2ContextStChStatus);
+	RPacketContext::TContextStatus primaryPacketContext2Status;
+	primaryPacketContext2.NotifyStatusChange(notifyprimary2ContextStChStatus, primaryPacketContext2Status);
+
+	TExtEtelRequestStatus notifySecondaryContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifySecondaryContextStChStatus);
+	RPacketContext::TContextStatus secPacketContextStatus;
+	secondaryPacketContext.NotifyStatusChange(notifySecondaryContextStChStatus, secPacketContextStatus);
+	
+		
+	// Deactivate the NIF with RPacketService::DeactivateNIF and aContextName = name of primary 2 
+	TExtEtelRequestStatus deactivateNifStatus(packetService, EPacketDeactivateNIF);
+	CleanupStack::PushL(deactivateNifStatus);
+    packetService.DeactivateNIF(deactivateNifStatus,primaryContextId2);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(deactivateNifStatus, ETimeMedium), KErrNone, _L("RPacketService::DeactivateNIF timed out."));
+	ASSERT_EQUALS(deactivateNifStatus.Int(), KErrNone, _L("RPacketService::DeactivateNIF returned with error."));
+	
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange for primary 2 completes with EStatusDeactivating -> EStatusInactive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+			    primaryPacketContext2,
+				notifyprimary2ContextStChStatus,
+				primaryPacketContext2Status, 
+				expectedPacketContextStatus,
+				KErrNone);
+				
+	primaryPacketContext2.NotifyStatusChange(notifyprimary2ContextStChStatus, primaryPacketContext2Status);
+	expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+			    primaryPacketContext2,
+				notifyprimary2ContextStChStatus,
+				primaryPacketContext2Status, 
+				expectedPacketContextStatus,
+				KErrNone);
+				
+	// Check RPacketContext::GetStatus for primary 2 returns EStatusInactive
+	ASSERT_EQUALS(primaryPacketContext2.GetStatus(primaryPacketContext2Status), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(primaryPacketContext2Status, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::NotifyStatusChange for secondary 2 completes with EStatusDeactivating -> EStatusInactive
+	// $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts
+				
+	// Check RPacketContext::GetStatus for secondary 2 returns EStatusInactive
+	// Check RPacketContext::GetStatus for primary 1 returns EStatusActive
+	// Check RPacketContext::GetStatus for secondary 1 returns EStatusActive
+	// $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(primaryPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(primaryPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+	ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketService::GetStatus returns EStatusActive
+	RPacketService::TStatus pckSrvcStatus;
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop:
+	//	deactivateNifStatus
+	//	notifySecondaryContextStChStatus
+	//	notifyprimary2ContextStChStatus
+	//	notifyprimaryContextStChStatus
+	//	contextNameNifsStatus
+	//	enumerateContextsInNifStatus
+	//	nifInfoStatus
+	//	nifsStatus
+	//	notifyContextSecondary2Status
+	//	notifyContextSecondary1Status
+	//	notifyContextPrimary2Status
+	//	notifyContextPrimary1Status
+	CleanupStack::PopAndDestroy(12,&notifyContextPrimary1Status);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0032::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0032");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0033::CCTSYIntegrationTestPacketContext0033(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0033::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0033::~CCTSYIntegrationTestPacketContext0033()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0033::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0033
+ * @SYMFssID BA/CTSY/PKTC-0033
+ * @SYMTestCaseDesc Deactivate NIF specifying unknown context name.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketService::DeactivateNIF, RPacketContext::GetStatus
+ * @SYMTestExpectedResults Pass - No NIFs deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context status unaffected.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure there is an active primary context. 
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(KMainServer, KMainPhone, KMainPacketService, KPrimaryPacketContext1);
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext);
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Check RPacketService::GetStatus returns EStatusActive
+	RPacketService::TStatus pckServiceStatus;
+	ASSERT_EQUALS(packetService.GetStatus(pckServiceStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckServiceStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus did not return EStatusActive as expected."));
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+	RPacketContext::TContextStatus pckContextStatus;
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(pckContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return EStatusActive as expected."));
+
+	// Deactivate the NIF with RPacketService::DeactivateNIF and aContextName = unknown context name 
+	TExtEtelRequestStatus deactiveNIFStatus(packetService, EPacketDeactivateNIF);
+	CleanupStack::PushL(deactiveNIFStatus);
+	RPacketService::TContextInfo unknownContextInfo;
+	unknownContextInfo.iName = _L("unknown123abc");
+	packetService.DeactivateNIF(deactiveNIFStatus, unknownContextInfo.iName);
+
+	// Check error is returned.
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(deactiveNIFStatus, ETimeMedium), KErrNone, _L("RPacketService::DeactivateNIF timed out."));
+	ASSERT_TRUE(deactiveNIFStatus.Int() != KErrNone, _L("RPacketService::DeactivateNIF did not return error as expected."));
+
+	// Check RPacketService::GetStatus returns EStatusActive
+	ASSERT_EQUALS(packetService.GetStatus(pckServiceStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckServiceStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus did not return EStatusActive as expected."));
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(pckContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return EStatusActive as expected."));
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// deactiveNIFStatus
+	CleanupStack::PopAndDestroy(1, &deactiveNIFStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0033::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0033");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0034::CCTSYIntegrationTestPacketContext0034(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0034::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0034::~CCTSYIntegrationTestPacketContext0034()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0034::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0034
+ * @SYMFssID BA/CTSY/PKTC-0034
+ * @SYMTestCaseDesc Deactivate NIF when there is more than one NIF.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketService::NotifyAttachModeChange, RPacketService::GetAttachMode, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::SetConfig, RPacketContext::Activate, RPacketService::EnumerateContextsInNif, RPacketService::EnumerateContexts, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::DeactivateNIF, RPacketService::GetNifInfo
+ * @SYMTestExpectedResults Pass - All contexts in NIF deactivated. Other contexts unaffected.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify primary and secondary contexts in NIF are deactivated when secondary context name specified
+
+Verify contexts in another NIF are not affected.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+	
+    //Check if we are on a simulated network 
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error."));
+    iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+	
+	// Ensure there is an 2 primary contexts active. Each of these must have an active secondary context opened from it. (Primary 1 and secondary 1 in one NIF and primary 2 and secondary 2 in the second NIF.) 
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+	TName primaryContextId1;
+	TName primaryContextId2;
+	
+	TExtEtelRequestStatus notifyContextStatusPrimary1(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatusPrimary1);
+	
+	packetService.NotifyContextAdded(notifyContextStatusPrimary1, primaryContextId1);
+	RPacketContext& primaryPacketContext1 = iEtelSessionMgr.GetPrimaryPacketContextL(
+									KMainServer,
+									KMainPhone,
+									KMainPacketService,
+									KPrimaryPacketContext1);
+									
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextStatusPrimary1, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete."));
+	CHECK_EQUALS_L(notifyContextStatusPrimary1.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status."));
+	CHECK_TRUE_L(primaryContextId1.Length() > 0, _L("RPacketService::NotifyContextAdded returned with invalid context name."));								
+												
+	TExtEtelRequestStatus notifyContextStatusPrimary2(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatusPrimary2);											
+																
+	packetService.NotifyContextAdded(notifyContextStatusPrimary2, primaryContextId2);
+	RPacketContext& primaryPacketContext2 = iEtelSessionMgr.GetPrimaryPacketContextL(
+									KMainServer,
+									KMainPhone,
+									KMainPacketService,
+									KPrimaryPacketContext2);
+									
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextStatusPrimary2, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete."));
+	CHECK_EQUALS_L(notifyContextStatusPrimary2.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status."));
+	CHECK_TRUE_L(primaryContextId2.Length() > 0, _L("RPacketService::NotifyContextAdded returned with invalid context name."));									
+
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext1);	
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext2, 2);	
+
+	TName secondaryContextId1;
+	TName secondaryContextId2;
+	TExtEtelRequestStatus notifyContextStatusSecondary1(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatusSecondary1);	
+	
+	packetService.NotifyContextAdded(notifyContextStatusSecondary1, secondaryContextId1);
+	RPacketContext& secondaryPacketContext1 = iEtelSessionMgr.GetSecondaryPacketContextL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+												
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextStatusSecondary1, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete."));
+	CHECK_EQUALS_L(notifyContextStatusSecondary1.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status."));
+	CHECK_TRUE_L(secondaryContextId1.Length() > 0, _L("RPacketService::NotifyContextAdded returned with invalid context name."));
+												
+	TExtEtelRequestStatus notifyContextStatusSecondary2(packetService, EPacketNotifyContextAdded);
+	CleanupStack::PushL(notifyContextStatusSecondary2);													
+																							
+	packetService.NotifyContextAdded(notifyContextStatusSecondary2, secondaryContextId2);
+	// $CTSYProblem This test cannot be run since LTSY does not allow us to initialise 4 packets contexts
+    CHECK_TRUE_L(EFalse,_L("$CTSYProblem This test cannot be run since LTSY does not allow us to initialise 4 packets contexts"));
+	RPacketContext& secondaryPacketContext2 = iEtelSessionMgr.GetSecondaryPacketContextL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext2,
+												KSecondaryPacketContext2);
+											
+	CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextStatusSecondary2, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete."));
+	CHECK_EQUALS_L(notifyContextStatusSecondary2.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status."));
+	CHECK_TRUE_L(secondaryContextId2.Length() > 0, _L("RPacketService::NotifyContextAdded returned with invalid context name."));
+																								
+	CHECK_TRUE_L(ActivateSecondaryPacketContextL(secondaryPacketContext1), _L("Can't activate the secondary context"));
+	CHECK_TRUE_L(ActivateSecondaryPacketContextL(secondaryPacketContext2), _L("Can't activate the secondary context"));												
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	// Check RPacketService::EnumerateNifs returns aCount = 2
+	TExtEtelRequestStatus nifsStatus(packetService, EPacketEnumerateNifs);
+	CleanupStack::PushL(nifsStatus);
+	TInt nifCount = 0;
+	TInt wantedNifCount = 2;
+	packetService.EnumerateNifs(nifsStatus, nifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out."));
+	ASSERT_EQUALS(nifsStatus.Int(), KErrNone, _L("RPacketService::EnumerateNifs returned with error."));
+	ASSERT_EQUALS(nifCount, wantedNifCount, _L("RPacketService::EnumerateNifs returned wrong NIF count."));
+
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName
+	TInt nifInfoCount = 0;
+	TExtEtelRequestStatus nifInfoStatus(packetService, EPacketGetNifInfo);
+	CleanupStack::PushL(nifInfoStatus);
+	RPacketService::TNifInfoV2 nifInfo;
+	RPacketService::TNifInfoV2Pckg nifInfoPckg(nifInfo);
+	packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetNifInfo timed out."));
+	ASSERT_EQUALS(nifInfoStatus.Int(), KErrNone, _L("RPacketService::GetNifInfo returned with error."));
+	ASSERT_EQUALS_DES16(nifInfo.iContextName, primaryContextId1, _L("RPacketService::GetNifInfo returned with invalid context name."));
+	
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 2
+	TInt wantedNumberOfContexts = 2;
+	ASSERT_EQUALS(nifInfo.iNumberOfContexts, wantedNumberOfContexts, _L("RPacketService::GetNifInfo returned wrong number of contexts."));
+	
+	// Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive
+	ASSERT_EQUALS(nifInfo.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo did not return EStatusActive as expected."));
+ 
+	// Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress
+	ASSERT_TRUE(nifInfo.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid pdp address."));
+	
+	// Check RPacketService::GetNifInfo with aCount = 0 returns EExternalContext
+	// $CTSYProblem:RPacketService::GetNifInfo always returns EInternalContext
+    // Changed test procedure to check for EInternalContext instead of EExternalContext
+	ASSERT_EQUALS(nifInfo.iContextType, RPacketService::EInternalContext, _L("RPacketService::GetNifInfo returned wrong context type."));
+
+	// Check RPacketService::GetNifInfo with aCount = 1 returns valid name in iContextName
+	nifInfoCount = 1;
+	packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetNifInfo timed out."));
+	ASSERT_EQUALS(nifInfoStatus.Int(), KErrNone, _L("RPacketService::GetNifInfo returned with error."));
+	ASSERT_EQUALS_DES16(nifInfo.iContextName, primaryContextId2, _L("RPacketService::GetNifInfo returned with invalid context name."));
+	
+	// Check RPacketService::GetNifInfo with aCount = 1 returns iNumberOfContexts = 2
+	ASSERT_EQUALS(nifInfo.iNumberOfContexts,2,_L("RPacketService::GetNifInfo wrong number of contexts."));
+	
+	// Check RPacketService::GetNifInfo with aCount = 1 returns iNifStatus = EStatusActive
+	ASSERT_EQUALS(nifInfo.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo did not return EStatusActive as expected."));
+ 
+	// Check RPacketService::GetNifInfo with aCount = 1 returns valid address in iPdpAddress
+	ASSERT_TRUE(nifInfo.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid pdp address."));
+	
+	// Check RPacketService::GetNifInfo with aCount = 1 returns EExternalContext
+	// $CTSYProblem:RPacketService::GetNifInfo always returns EInternalContext
+    // Changed test procedure to check for EInternalContext instead of EExternalContext
+	ASSERT_EQUALS(nifInfo.iContextType, RPacketService::EInternalContext, _L("RPacketService::GetNifInfo returned wrong context type."));
+	
+	// Check RPacketService::GetNifInfo with aCount = 2 returns KErrArgument
+	nifInfoCount = 2;
+	packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetNifInfo timed out."));
+	ASSERT_EQUALS(nifInfoStatus.Int(), KErrArgument, _L("RPacketService::GetNifInfo did not returned an error."));
+
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = primary 1 returns aCount = 2
+	TInt wantedCount = 2;
+	TInt contextsInNifCount = 0;
+	TExtEtelRequestStatus enumerateContextsInNifStatus(packetService, EPacketEnumerateContextsInNif);
+	CleanupStack::PushL(enumerateContextsInNifStatus);
+	packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, primaryContextId1, contextsInNifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out."));
+	ASSERT_EQUALS(enumerateContextsInNifStatus.Int(), KErrNone, _L("RPacketService::EnumerateContextsInNif returned with error."));
+	ASSERT_EQUALS(contextsInNifCount, wantedCount, _L("RPacketService::EnumerateContextsInNif did not return 2 as expected."));
+	
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = primary 2 returns aCount = 2
+	contextsInNifCount = 0;
+	packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, primaryContextId2, contextsInNifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out."));
+	ASSERT_EQUALS(enumerateContextsInNifStatus.Int(), KErrNone, _L("RPacketService::EnumerateContextsInNif returned with error."));
+	ASSERT_EQUALS(contextsInNifCount, wantedCount, _L("RPacketService::EnumerateContextsInNif did not return 2 as expected."));
+	
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = secondary 1 returns aCount = 2
+	contextsInNifCount = 0;
+	packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, secondaryContextId1, contextsInNifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out."));
+	ASSERT_EQUALS(enumerateContextsInNifStatus.Int(), KErrNone, _L("RPacketService::EnumerateContextsInNif returned with error."));
+	ASSERT_EQUALS(contextsInNifCount, wantedCount, _L("RPacketService::EnumerateContextsInNif did not return 2 as expected."));
+		
+	// Check RPacketService::EnumerateContextsInNif with aExistingContextName = secondary 2 returns aCount = 2
+    contextsInNifCount = 0;
+	packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, secondaryContextId2, contextsInNifCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out."));
+	ASSERT_EQUALS(enumerateContextsInNifStatus.Int(), KErrNone, _L("RPacketService::EnumerateContextsInNif returned with error."));
+	ASSERT_EQUALS(contextsInNifCount, wantedCount, _L("RPacketService::EnumerateContextsInNif did not return 2 as expected."));
+
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = primary 1 and aIndex = 0 returns aContextName = name of primary context 1
+	const TInt index0 = 0;
+	const TInt index1 = 1;
+	TName contextName;
+	TExtEtelRequestStatus getContextNameInNifStatus(packetService, EPacketGetContextNameInNif);
+	CleanupStack::PushL(getContextNameInNifStatus);
+	packetService.GetContextNameInNif(getContextNameInNifStatus, primaryContextId1, index0, contextName);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out."));
+	ASSERT_EQUALS_DES16(contextName, primaryContextId1, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name."));
+	
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = primary 1 and aIndex = 1 returns aContextName = name of secondary context 1
+	packetService.GetContextNameInNif(getContextNameInNifStatus, primaryContextId1, index1, contextName);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out."));
+	ASSERT_EQUALS_DES16(contextName, secondaryContextId1, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name."));
+	
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 1 and aIndex = 0 returns aContextName = name of primary context 1
+	packetService.GetContextNameInNif(getContextNameInNifStatus, secondaryContextId1, index0, contextName);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out."));
+	ASSERT_EQUALS_DES16(contextName, primaryContextId1, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name."));
+
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 1 and aIndex = 1 returns aContextName = name of secondary context 1
+	packetService.GetContextNameInNif(getContextNameInNifStatus, secondaryContextId1, index1, contextName);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out."));
+	ASSERT_EQUALS_DES16(contextName, secondaryContextId1, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name."));
+	
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = primary 2 and aIndex = 0 returns aContextName = name of primary context 2
+	packetService.GetContextNameInNif(getContextNameInNifStatus, primaryContextId2, index0, contextName);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out."));
+	ASSERT_EQUALS_DES16(contextName, primaryContextId2, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name."));
+	
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = primary 2 and aIndex = 1 returns aContextName = name of secondary context 2
+	packetService.GetContextNameInNif(getContextNameInNifStatus, primaryContextId2, index1, contextName);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out."));
+    ASSERT_EQUALS_DES16(contextName, secondaryContextId2, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name."));
+
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 2 and aIndex = 0 returns aContextName = name of primary context 2
+	packetService.GetContextNameInNif(getContextNameInNifStatus, secondaryContextId2, index0, contextName);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out."));
+	ASSERT_EQUALS_DES16(contextName, primaryContextId2, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name."));
+		
+	// Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 2 and aIndex = 1 returns aContextName = name of secondary context 2
+	packetService.GetContextNameInNif(getContextNameInNifStatus, secondaryContextId2, index1, contextName);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out."));
+	ASSERT_EQUALS_DES16(contextName, secondaryContextId2, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name."));
+	
+	// Post notifications for primary2 and secondary2 context's status change
+	TExtEtelRequestStatus notifyPrimaryContext2StChStatus(primaryPacketContext2, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyPrimaryContext2StChStatus);
+	RPacketContext::TContextStatus primaryPacketContext2Status;
+	primaryPacketContext2.NotifyStatusChange(notifyPrimaryContext2StChStatus, primaryPacketContext2Status);
+
+	TExtEtelRequestStatus notifySecondaryContext2StChStatus(secondaryPacketContext2, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifySecondaryContext2StChStatus);
+	RPacketContext::TContextStatus secondaryPacketContext2Status;
+	secondaryPacketContext2.NotifyStatusChange(notifySecondaryContext2StChStatus, secondaryPacketContext2Status);
+
+	// Post notifications for primary1 context status change
+	TExtEtelRequestStatus notifyPrimaryContext1StChStatus(primaryPacketContext1, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyPrimaryContext1StChStatus);
+	RPacketContext::TContextStatus primaryPacketContext1Status;
+	primaryPacketContext1.NotifyStatusChange(notifyPrimaryContext1StChStatus, primaryPacketContext1Status);
+
+	// Deactivate the NIF with RPacketService::DeactivateNIF and aContextName = name of secondary 2 
+	TExtEtelRequestStatus deactivateNIFStatus(packetService, EPacketDeactivateNIF);
+	CleanupStack::PushL(deactivateNIFStatus);
+	packetService.DeactivateNIF(deactivateNIFStatus, secondaryContextId2);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(deactivateNIFStatus, ETimeMedium), KErrNone, _L("RPacketService::DeactivateNIF timed out."));
+	ASSERT_EQUALS(deactivateNIFStatus.Int(), KErrNone, _L("RPacketService::DeactivateNIF returned with error.."));
+	
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange for primary 2 completes with EStatusDeactivating -> EStatusInactive
+    RPacketContext::TContextStatus 	expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					primaryPacketContext2,
+					notifyPrimaryContext2StChStatus,
+					primaryPacketContext2Status, 
+					expectedPacketContextStatus,
+					KErrNone);
+
+	primaryPacketContext2.NotifyStatusChange(notifyPrimaryContext2StChStatus, primaryPacketContext2Status);
+	expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					primaryPacketContext2,
+					notifyPrimaryContext2StChStatus,
+					primaryPacketContext2Status, 
+					expectedPacketContextStatus,
+					KErrNone);
+
+	// Check RPacketContext::GetStatus for primary 2 returns EStatusInactive
+	ASSERT_EQUALS(primaryPacketContext2.GetStatus(primaryPacketContext2Status), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(primaryPacketContext2Status, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));
+	
+	// Check RPacketContext::NotifyStatusChange for secondary 2 completes with EStatusDeactivating -> EStatusInactive
+	expectedPacketContextStatus = RPacketContext::EStatusDeactivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+			    secondaryPacketContext2,
+				notifySecondaryContext2StChStatus,
+				secondaryPacketContext2Status, 
+				expectedPacketContextStatus,
+				KErrNone);
+				
+	secondaryPacketContext2.NotifyStatusChange(notifySecondaryContext2StChStatus, secondaryPacketContext2Status);
+	expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+			    secondaryPacketContext2,
+				notifySecondaryContext2StChStatus,
+				secondaryPacketContext2Status, 
+				expectedPacketContextStatus,
+				KErrNone); 
+
+	// Check RPacketContext::GetStatus for secondary 2 returns EStatusInactive
+	ASSERT_EQUALS(secondaryPacketContext2.GetStatus(secondaryPacketContext2Status), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(secondaryPacketContext2Status, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status."));	
+	
+	// Check RPacketContext::GetStatus for primary 1 returns EStatusActive
+	ASSERT_EQUALS(primaryPacketContext1.GetStatus(primaryPacketContext1Status), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(primaryPacketContext1Status, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+	
+	// Check RPacketContext::GetStatus for secondary 1 returns EStatusActive
+	RPacketContext::TContextStatus secondaryPacketContext1Status;
+	ASSERT_EQUALS(secondaryPacketContext1.GetStatus(secondaryPacketContext1Status), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(secondaryPacketContext1Status, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+	
+	// Check RPacketService::GetStatus returns EStatusActive	
+	RPacketService::TStatus pckSrvcStatus;
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// pop
+	// notifyContextStatusPrimary1
+	// notifyContextStatusPrimary1
+	// notifyContextStatusSecondary1
+	// notifyContextStatusSecondary2
+	// nifsStatus
+	// nifInfoStatus
+	// enumerateContextsInNifStatus
+	// getContextNameInNifStatus
+	// notifyPrimaryContext1StChStatus
+	// notifySecondaryContext2StChStatus
+	// notifyPrimaryContext1StChStatus
+	// deactivateNIFStatus	
+	CleanupStack::PopAndDestroy(12,&notifyContextStatusPrimary1);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0034::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0034");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0035::CCTSYIntegrationTestPacketContext0035(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0035::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0035::~CCTSYIntegrationTestPacketContext0035()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0035::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0035
+ * @SYMFssID BA/CTSY/PKTC-0035
+ * @SYMTestCaseDesc Enumerate NIFs.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketService::EnumerateNifs, RPacketContext::NotifyStatusChange, RPacketContext::SetConfig, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters
+ * @SYMTestExpectedResults Pass - Number of NIFs correct.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify number of NIFs and NIF info correct as contexts are activated. Verify that for each primary context that is activated, number of NIFs increases by 1, if a secondary context is activated number of NIFs does not change.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure packet service is attached, 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Open a new primary context (context 1). 
+
+	// Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter 
+
+	// ===  Add QoS ===
+
+	// Open a new QoS from the secondary context  
+
+	// Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities 
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+
+	// Set a valid context config using RPacketContext::SetConfig 
+
+	// Activate packet context with RPacketContext::Activate 
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+
+	// Check RPacketService::EnumerateNifs returns aCount = 1
+
+	// Open a new primary context (context 2) 
+
+	// Add a TPacketFilterV3 packet filter to context 2 using RPacketContext::AddPacketFilter 
+
+	// Open a new QoS from context 2  
+
+	// Get R5 QoS profile capabilities with RPacketQoS::GetProfileCapabilities 
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSR5Requested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+
+	// Set a valid context config for context 2 using RPacketContext::SetConfig 
+
+	// Activate packet context for context 2 with RPacketContext::Activate 
+
+	// Check RPacketContext::NotifyStatusChange for context 2 completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus for context 2 returns EStatusActive
+
+	// Check RPacketService::EnumerateNifs returns aCount = 2
+
+	// Open a new secondary context from context 1 (this is context 3) 
+
+	// Set a valid context config for context 3 using RPacketContext::SetConfig 
+
+	// Activate packet context for context 3 with RPacketContext::Activate 
+
+	// Check RPacketContext::NotifyStatusChange for context 3 completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus for context 3 returns EStatusActive
+
+	// Check RPacketService::EnumerateNifs returns aCount = 2
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0035::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0035");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0036::CCTSYIntegrationTestPacketContext0036(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0036::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0036::~CCTSYIntegrationTestPacketContext0036()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0036::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0036
+ * @SYMFssID BA/CTSY/PKTC-0036
+ * @SYMTestCaseDesc Activate a primary context with packet filter and QoS set up.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::AddPacketFilter, RPacketContext::EnumeratePacketFilters, RPacketContext::GetPacketFilterInfo, RPacketQoS::OpenNewQoS, RPacketQoS::SetProfileParameters, RPacketQoS::GetProfileParameters, RPacketQoS::GetProfileCapabilities, RPacketContext::GetProfileName
+ * @SYMTestExpectedResults Pass - Packet filter added to context and context activated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify packet filter info and QoS profile info correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure phone is attached to the packet service 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Open a new primary context 
+
+	// Add a TPacketFilterV2 packet filter to the primary context using RPacketContext::AddPacketFilter 
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 1
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns same packet filter info added to the context
+
+	// Open a new QoS from the primary context  
+
+	// Get profile capabilities with RPacketCotnext::GetProfileCapabilities with aProfileCaps as a packaged RPacketContext::TQoSCapsGPRS  
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSR5Requested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+
+	// Check RPacketContext::GetProfileName returns QoS profile name with length > 0
+
+	// Set a valid context config using RPacketContext::SetConfig 
+
+	// Activate packet context with RPacketContext::Activate 
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 1
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns same packet filter info added to the context
+
+	// Repeat test with RPacketContext::TQoSCapsR99_R4 and RPacketContext::TQoSCapsR5 instead of RPacketContext::TQoSCapsGPRS 
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0036::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0036");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0037::CCTSYIntegrationTestPacketContext0037(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0037::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0037::~CCTSYIntegrationTestPacketContext0037()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0037::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0037
+ * @SYMFssID BA/CTSY/PKTC-0037
+ * @SYMTestCaseDesc Modify a primary context with packet filter and QoS.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::ModifyActiveContext, RPacketContext::GetProfileParameters, RPacketContext::GetProfileName, RPacketContext::RemovePacketFilter, RPacketContext::EnumeratePacketFilters, RPacketQoS::SetProfileParameters, RPacketQoS::OpenNewQoS, RPacketContext::AddPacketFilter
+ * @SYMTestExpectedResults Pass - Context is modified.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify packet filter info and QoS profile info correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure there is an active primary context. 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Add a TPacketFilterV2packet filter to the primary context using RPacketContext::AddPacketFilter 
+
+	// Open a new QoS from the primary context 
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+
+	// Check RPacketContext::GetProfileName returns QoS profile name with length > 0
+
+	// Modify the active context with RPacketContext::ModifyActiveContext 
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 1
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns same packet filter info added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns KErrArgument
+
+	// Check RPacketContext::GetProfileParameters returns TQoSGPRSNegotiated parameters.
+
+	// Remove packet filter with RPacketContext::RemovePacketFilter. 
+
+	// Modify the active context with RPacketContext::ModifyActiveContext 
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 1
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns KErrArgument
+
+	// Repeat test with TQoSR99_R4Requested and TQoSR5Requested types in  RPacketQoS::SetProfileParameters and checking for TQoSR99_R4Negotiated and TQoSR5Negotiated  in RPacketContext::GetProfileParameters respectively. 
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0037::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0037");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0038::CCTSYIntegrationTestPacketContext0038(CEtelSessionMgr& aEtelSessionMgr, const TDesC& aName)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(aName);
+	if(aName.Find(_L("GRPS")) != KErrNotFound)
+		{
+		iTestType = EQoSGPRS;
+		}
+	else if(aName.Find(_L("R4")) != KErrNotFound)
+		{
+		iTestType = EQoSR4;
+		}
+	else if(aName.Find(_L("R5")) != KErrNotFound)
+		{
+		iTestType = EQoSR5;
+		}
+	}
+
+CCTSYIntegrationTestPacketContext0038::~CCTSYIntegrationTestPacketContext0038()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+
+template<class PARAMETERS, class CAPABILITIES, class NEGOTIATED>
+	TBool CCTSYIntegrationTestPacketContext0038::ActiveContextL(RPacketContext &aPacketContext,
+                                                               RPacketQoS &aPacketQoS,
+                                                               PARAMETERS &aParameters,
+                                                               CAPABILITIES &aCapabilities,
+                                                               NEGOTIATED &aNegotiated)
+
+/**
+ * Activate a secondary context. This is actually a single context activation method, 
+ * the test activate the context three times, each with diffrent type of parameters, capabilities and negotiation objects
+ * 
+ * @param aPacketContext Reference to the secondary context session.
+ * @param aPacketQoS Reference to the packet Quality of Service session.
+ * @param aParameters Reference to the QoS parameters. Must be TQoSGPRSRequested, TQoSR99_R4Requested or TQoSR5Requested.
+ * @param aCapabilities Reference to the QoS capabilities. Must be a TQoSCapsGPRS, TQoSCapsR99_R4 or TQoSCapsR5 respectivley.
+ * @param aNegotiated Reference to the QoS nagotiated. Must be a TQoSGPRSNegotiated, t99_r4Negotiated or r5Negotiated respectivley.
+ * 
+ * @return ETrue if the activation went well
+ */
+    {
+    TBool ret = ETrue;
+
+    // Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter 
+	ASSERT_EQUALS(AddPacketFilterV2ToContextL(aPacketContext,1), KErrNone,
+					_L("RPacketContext::AddPacketFilter returned with error status")); 
+
+	// Get profile capabilities with RPacketCotnext::GetProfileCapabilities with aProfileCaps as a packaged CAPABILITIES
+	TExtEtelRequestStatus getProfileCapStatus(aPacketQoS, EPacketQoSGetProfileCaps);
+	CleanupStack::PushL(getProfileCapStatus);
+	TPckg<CAPABILITIES> qosCapsPckg(aCapabilities);
+	aPacketQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsPckg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, 
+                        _L("RPacketQoS::GetProfileCapabilities timed out."));
+	LOCAL_ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone,
+                        _L("RPacketQoS::GetProfileCapabilities returned with error status."));
+
+    // Set requested profile parameters with RPacketQoS::SetProfileParameters and PARAMETERS with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+	TPckg<PARAMETERS> qosReqPckg(aParameters);
+    FillParametersFromCapabilities(aParameters,aCapabilities);
+	TExtEtelRequestStatus setProfileParamStatus(aPacketQoS, EPacketQoSSetProfileParams);
+	CleanupStack::PushL(setProfileParamStatus);
+    aPacketQoS.SetProfileParameters(setProfileParamStatus, qosReqPckg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, 
+                  _L("RPacketQoS::SetProfileParameters timed out."));
+	LOCAL_ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone,
+                  _L("RPacketQoS::SetProfileParameters returned with error status."));
+
+	// Check RPacketContext::GetProfileName returns QoS profile name with length > 0
+    TName profileName;
+    LOCAL_ASSERT_EQUALS(aPacketContext.GetProfileName(profileName),KErrNone,
+                        _L("RPacketContext::GetProfileName returned with error status."));
+    LOCAL_ASSERT_TRUE(profileName.Length()>0,
+                      _L("RPacketContext::GetProfileName name length is 0."));
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(aPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	aPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+    
+    // Activate the secondary context. 
+	TExtEtelRequestStatus contextActivateStatus(aPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	aPacketContext.Activate(contextActivateStatus);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeMedium), KErrNone, 
+					_L("RPacketContext::Activate timed out."));
+	LOCAL_ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone,
+					_L("RPacketContext::Activate returned with error status."));
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive
+    RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				aPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+    LOCAL_ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActivating, _L("Packet Context's status expected to be EStatusActivating but is not."));
+    aPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+    expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				aPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+	LOCAL_ASSERT_EQUALS(aPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	LOCAL_ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 1
+    TInt count=-1;
+    TExtEtelRequestStatus enumeratePacketFiltersChStatus(aPacketContext, EPacketContextEnumeratePacketFilters);
+    CleanupStack::PushL(enumeratePacketFiltersChStatus);
+    aPacketContext.EnumeratePacketFilters(enumeratePacketFiltersChStatus,count);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersChStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::EnumeratePacketFilters timed out"));
+    LOCAL_ASSERT_EQUALS(enumeratePacketFiltersChStatus.Int(), KErrNone,
+                  _L("RPacketContext::EnumeratePacketFilters returned an error"));
+    LOCAL_ASSERT_EQUALS(count, 1,
+                  _L("RPacketContext::EnumeratePacketFilters returned wrong number"));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns packet filter added to the context
+    TExtEtelRequestStatus getPacketFilterInfoStatus(aPacketContext, EPacketContextGetPacketFilterInfo);
+    CleanupStack::PushL(getPacketFilterInfoStatus);
+    RPacketContext::TPacketFilterV2 packetFilter;
+	RPacketContext::TPacketFilterV2Pckg packetFilterPkg(packetFilter);
+    aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,0,packetFilterPkg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo timed out"));
+    LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo returned an error"));
+    RPacketContext::TPacketFilterV2 defaultPacketFilterInfo;
+    FillPacketFilter(defaultPacketFilterInfo,1);
+    LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns KErrArgument
+    aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,1,packetFilterPkg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo timed out"));
+    LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument,
+                  _L("RPacketContext::GetPacketFilterInfo did not returned an error"));
+
+	// Check RPacketContext::GetProfileParameters returns NEGOTIATED parameters.
+    TExtEtelRequestStatus getProfileParametersStatus(aPacketQoS, EPacketQoSGetProfileParams);
+    CleanupStack::PushL(getProfileParametersStatus);
+	TPckg<NEGOTIATED> negotiatedPckg(aNegotiated);
+    aPacketQoS.GetProfileParameters(getProfileParametersStatus,negotiatedPckg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileParametersStatus, ETimeShort), KErrNone,
+                  _L("RPacketQoS::GetProfileParameters timed out"));
+    LOCAL_ASSERT_EQUALS(getProfileParametersStatus.Int(), KErrNone,
+                  _L("RPacketQoS::GetProfileParameters returned an error"));
+    
+	// Deactivate context.
+    TExtEtelRequestStatus deactivateContextStatus(aPacketContext, EPacketContextDeactivate);
+    CleanupStack::PushL(getProfileParametersStatus);
+    aPacketContext.Deactivate(deactivateContextStatus);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(deactivateContextStatus, ETimeMedium), KErrNone, 
+					_L("RPacketContext::Deactivate timed out."));
+	LOCAL_ASSERT_EQUALS(deactivateContextStatus.Int(), KErrNone,
+					_L("RPacketContext::Deactivate returned with error status."));
+
+	
+    iEtelSessionMgr.ReleaseSecondaryPacketContext(
+			KMainServer,
+			KMainPhone,
+			KMainPacketService, 
+			KPrimaryPacketContext1,
+			KSecondaryPacketContext3);
+
+	// Pop:
+	//  deactivateContextStatus
+	//	getProfileParametersStatus
+	//	getPacketFilterInfoStatus
+	//	enumeratePacketFiltersChStatus
+	//	contextActivateStatus
+	//	notifyContextStChStatus
+	//	setProfileParamStatus
+	//	getProfileCapStatus
+	CleanupStack::PopAndDestroy(8,&getProfileCapStatus);
+
+    return ret;
+    }
+TVerdict CCTSYIntegrationTestPacketContext0038::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0038
+ * @SYMFssID BA/CTSY/PKTC-0038
+ * @SYMTestCaseDesc Activate a secondary context with packet filter and QoS set up.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::GetProfileName, RPacketContext::GetStatus, RPacketContext::EnumeratePacketFilters, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketContext::GetPacketFilterInfo, RPacketContext::ModifyActiveContext, RPacketQoS::OpenNewQoS, RPacketQoS::SetProfileParameters, RPacketContext::RemovePacketFilter
+ * @SYMTestExpectedResults Pass - Packet filter added and removed successfully.Context active.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify packet filter info and QoS profile info correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	DEBUG_PRINTF2(_L("Starting with type %d"),iTestType);
+
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+ 	iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+
+	// Ensure there is an active primary context. 
+	RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+			KMainServer,
+			KMainPhone,
+			KMainPacketService,
+			KPrimaryPacketContext1);
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,packetContext);
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Open a new secondary context. 
+    RPacketContext& secondaryPacketContext1 = iEtelSessionMgr.GetSecondaryPacketContextL(
+			KMainServer,
+			KMainPhone,
+			KMainPacketService, 
+			KPrimaryPacketContext1,
+			KSecondaryPacketContext1);
+
+	// Open a new QoS from the secondary context 
+	RPacketQoS& packetQoS1 = iEtelSessionMgr.GetSecondaryPacketContextQoSL(
+			KMainServer,
+			KMainPhone,
+			KMainPacketService, 
+			KPrimaryPacketContext1,
+			KSecondaryPacketContext1);
+
+    RPacketQoS::TQoSGPRSRequested gprsRequested;
+    RPacketQoS::TQoSCapsGPRS capsGPRS;
+    RPacketQoS::TQoSGPRSNegotiated gprsNegotiated;
+    
+    RPacketQoS::TQoSR99_R4Requested r99_r4Requested;
+    RPacketQoS::TQoSCapsR99_R4 capsR99_R4;
+    RPacketQoS::TQoSR99_R4Negotiated t99_r4Negotiated;
+    t99_r4Negotiated.iTrafficClass = RPacketQoS::ETrafficClassUnspecified; 
+    t99_r4Negotiated.iDeliveryOrderReqd = RPacketQoS::EDeliveryOrderUnspecified;
+    t99_r4Negotiated.iDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified;
+    //t99_r4Negotiated.iMaxSDUSize = 500; //not sure
+    //t99_r4Negotiated.iMaxRate.iUplinkRate = 5000; //not sure 
+    //t99_r4Negotiated.iMaxRate.iDownlinkRate = 5000; //not sure 
+    t99_r4Negotiated.iBER = RPacketQoS::EBERUnspecified;
+    t99_r4Negotiated.iSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified;
+    t99_r4Negotiated.iTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified; 
+    //t99_r4Negotiated.iTransferDelay = 110; //not sure
+    //t99_r4Negotiated.iGuaranteedRate.iUplinkRate = 5000; //not sure 
+    //t99_r4Negotiated.iGuaranteedRate.iDownlinkRate = 5000; //not sure 
+    
+    RPacketQoS::TQoSR5Requested r5Requested;
+    RPacketQoS::TQoSCapsR5 capsr5;
+    RPacketQoS::TQoSR5Negotiated r5Negotiated;
+
+    switch(iTestType)
+		{
+		case EQoSGPRS:
+		    //Activate The Context using TQoSGPRSRequested, TQoSCapsGPRS and TQoSGPRSNegotiated
+		    ASSERT_TRUE(ActiveContextL(secondaryPacketContext1,packetQoS1,gprsRequested,capsGPRS,gprsNegotiated),
+		                _L("CCTSYIntegrationTestPacketContext0038::ActiveContextL failed"));
+		    break;
+		case EQoSR4:
+		    ASSERT_TRUE(ActiveContextL(secondaryPacketContext1,packetQoS1,r99_r4Requested,capsR99_R4,t99_r4Negotiated),
+		                _L("CCTSYIntegrationTestPacketContext0038::ActiveContextL failed"));
+		    break;
+		case EQoSR5:
+		    ASSERT_TRUE(ActiveContextL(secondaryPacketContext1,packetQoS1,r5Requested,capsr5,r5Negotiated),
+		                _L("CCTSYIntegrationTestPacketContext0038::ActiveContextL failed"));
+			break;
+		default:
+			CHECK_TRUE_L(EFalse, _L("Wrong test type!"));
+			
+		}
+
+
+	// Repeat test with TQoSR99_R4Requested and TQoSR5Requested types in  RPacketQoS::SetProfileParameters and checking for TQoSR99_R4Negotiated and TQoSR5Negotiated  in RPacketContext::GetProfileParameters respectively. 
+
+
+    //Activate The Context using TQoSR99_R4Requested, TQoSCapsR99_R4 and TQoSR99_R4Negotiated
+
+
+    //Activate The Context using TQoSR5Requested, TQoSCapsR5 and TQoSR5Negotiated
+    
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0038::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0038");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0039::CCTSYIntegrationTestPacketContext0039(CEtelSessionMgr& aEtelSessionMgr, const TDesC& aName)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(aName);
+	if(aName.Find(_L("GRPS")) != KErrNotFound)
+		{
+		iTestType = EQoSGPRS;
+		}
+	else if(aName.Find(_L("R4")) != KErrNotFound)
+		{
+		iTestType = EQoSR4;
+		}
+	else if(aName.Find(_L("R5")) != KErrNotFound)
+		{
+		iTestType = EQoSR5;
+		}
+	}
+
+CCTSYIntegrationTestPacketContext0039::~CCTSYIntegrationTestPacketContext0039()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+template<class PARAMETERS,class CAPABILITIES,class NEGOTIATED>
+  TBool CCTSYIntegrationTestPacketContext0039::ActivateAndModifyContextL(RPacketContext &aPacketContext,
+                                                                        RPacketQoS &aPacketQoS,
+                                                                        PARAMETERS &aParameters,
+                                                                        CAPABILITIES &aCapabilities,
+                                                                        NEGOTIATED &aNegotiated)
+/**
+ * Activate and modify a secondary context. This is actually a single context activation and modification method, 
+ * the test activate and modify the context three times, each with diffrent type of parameters, capabilities and negotiation objects
+ * 
+ * @param aPacketContext Reference to the secondary context session.
+ * @param aPacketQoS Reference to the packet Quality of Service session.
+ * @param aParameters Reference to the QoS parameters. Must be TQoSGPRSRequested, TQoSR99_R4Requested or TQoSR5Requested.
+ * @param aCapabilities Reference to the QoS capabilities. Must be a TQoSCapsGPRS, TQoSCapsR99_R4 or TQoSCapsR5 respectivley.
+ * @param aNegotiated Reference to the QoS nagotiated. Must be a TQoSGPRSNegotiated, t99_r4Negotiated or r5Negotiated respectivley.
+ * 
+ * @return ETrue if the activation went well
+ */
+    {
+    TBool ret=ETrue;
+
+	// Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter
+    LOCAL_ASSERT_EQUALS(AddPacketFilterV2ToContextL(aPacketContext,1), KErrNone,
+                        _L("RPacketContext::AddPacketFilter returned with error status"));
+
+	// Add a second TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter 
+    LOCAL_ASSERT_EQUALS(AddPacketFilterV2ToContextL(aPacketContext,2), KErrNone,
+                        _L("RPacketContext::AddPacketFilter returned with error status"));
+
+	// Get profile capabilities with RPacketCotnext::GetProfileCapabilities with aProfileCaps as a packaged CAPABILITIES  
+	TExtEtelRequestStatus getProfileCapStatus(aPacketQoS, EPacketQoSGetProfileCaps);
+	CleanupStack::PushL(getProfileCapStatus);
+	TPckg<CAPABILITIES> qosCapsPckg(aCapabilities);
+	aPacketQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsPckg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, 
+                        _L("RPacketQoS::GetProfileCapabilities timed out."));
+	LOCAL_ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone,
+                        _L("RPacketQoS::GetProfileCapabilities returned with error status."));
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and PARAMETERS with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+	TPckg<PARAMETERS> qosReqPckg(aParameters);
+    FillParametersFromCapabilities(aParameters,aCapabilities);
+	TExtEtelRequestStatus setProfileParamStatus(aPacketQoS, EPacketQoSSetProfileParams);
+	CleanupStack::PushL(setProfileParamStatus);
+    aPacketQoS.SetProfileParameters(setProfileParamStatus, qosReqPckg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, 
+                  _L("RPacketQoS::SetProfileParameters timed out."));
+	LOCAL_ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone,
+                  _L("RPacketQoS::SetProfileParameters returned with error status."));
+
+	// Check RPacketContext::GetProfileName returns QoS profile name with length > 0
+    TName profileName;
+    LOCAL_ASSERT_EQUALS(aPacketContext.GetProfileName(profileName),KErrNone,
+                        _L("RPacketContext::GetProfileName returned with error status."));
+    LOCAL_ASSERT_TRUE(profileName.Length()>0,
+                      _L("RPacketContext::GetProfileName name length is 0."));
+
+	// ===  Activate a context with two packet filters and QoS ===
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifyContextStChStatus(aPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	aPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+
+	// Activate the secondary context. 
+	TExtEtelRequestStatus contextActivateStatus(aPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	aPacketContext.Activate(contextActivateStatus);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeMedium), KErrNone, 
+					_L("RPacketContext::Activate timed out."));
+	LOCAL_ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone,
+					_L("RPacketContext::Activate returned with error status."));
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive
+    RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				aPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+    LOCAL_ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActivating, _L("Packet Context's status expected to be EStatusActivating but is not."));
+    aPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+    expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				aPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+	LOCAL_ASSERT_EQUALS(aPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	LOCAL_ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 2
+    TInt count=-1;
+    TExtEtelRequestStatus enumeratePacketFiltersChStatus(aPacketContext, EPacketContextEnumeratePacketFilters);
+    CleanupStack::PushL(enumeratePacketFiltersChStatus);
+    aPacketContext.EnumeratePacketFilters(enumeratePacketFiltersChStatus,count);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersChStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::EnumeratePacketFilters timed out"));
+    LOCAL_ASSERT_EQUALS(enumeratePacketFiltersChStatus.Int(), KErrNone,
+                  _L("RPacketContext::EnumeratePacketFilters returned an error"));
+    LOCAL_ASSERT_EQUALS(count, 2,
+                  _L("RPacketContext::EnumeratePacketFilters returned wrong number"));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context
+    TExtEtelRequestStatus getPacketFilterInfoStatus(aPacketContext, EPacketContextGetPacketFilterInfo);
+    CleanupStack::PushL(getPacketFilterInfoStatus);
+    RPacketContext::TPacketFilterV2 packetFilter;
+	RPacketContext::TPacketFilterV2Pckg packetFilterPkg(packetFilter);
+    aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,0,packetFilterPkg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo timed out"));
+    LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo returned an error"));
+    RPacketContext::TPacketFilterV2 defaultPacketFilterInfo;
+    FillPacketFilter(defaultPacketFilterInfo,1);
+    LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context
+    aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,1,packetFilterPkg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo timed out"));
+    LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo returned an error"));
+    FillPacketFilter(defaultPacketFilterInfo,2);
+    LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns KErrArgument
+    aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,2,packetFilterPkg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo timed out"));
+    LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument,
+                  _L("RPacketContext::GetPacketFilterInfo did not returned an error"));
+
+	// Check RPacketContext::GetProfileParameters returns NEGOTIATED parameters.
+    TExtEtelRequestStatus getProfileParametersStatus(aPacketQoS, EPacketQoSGetProfileParams);
+    CleanupStack::PushL(getProfileParametersStatus);
+	TPckg<NEGOTIATED> negotiatedPckg(aNegotiated);
+    aPacketQoS.GetProfileParameters(getProfileParametersStatus,negotiatedPckg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileParametersStatus, ETimeShort), KErrNone,
+                  _L("RPacketQoS::GetProfileParameters timed out"));
+    LOCAL_ASSERT_EQUALS(getProfileParametersStatus.Int(), KErrNone,
+                  _L("RPacketQoS::GetProfileParameters returned an error"));
+
+	// ===  Add another packet filter and modify the context ===
+
+	// Add a third TPacketFilterV3 packet filter to the secondary context using RPacketContext::AddPacketFilter 
+    LOCAL_ASSERT_EQUALS(AddPacketFilterV2ToContextL(aPacketContext,3), KErrNone,
+                        _L("RPacketContext::AddPacketFilter returned with error status"));
+
+	// Modify the secondary context with RPacketContext::ModifyActiveContext 
+	// $CTSYProblem The LTSY or the Anite system has no support to RPacketContext::ModifyActiveContext
+	ERR_PRINTF1(_L("<font color=Cyan>$CTSYProblem: The LTSY or the Anite system has no support to RPacketContext::ModifyActiveContext.<font color=Black>"));    
+	TExtEtelRequestStatus modifyActiveContextStatus(aPacketContext, EPacketContextModifyActiveContext);
+	CleanupStack::PushL(modifyActiveContextStatus);
+	aPacketContext.ModifyActiveContext(modifyActiveContextStatus);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, 
+                  _L("RPacketContext::ModifyActiveContext timed out."));
+	LOCAL_ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone,
+                  _L("RPacketContext::ModifyActiveContext returned with error status."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 3
+    aPacketContext.EnumeratePacketFilters(enumeratePacketFiltersChStatus,count);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersChStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::EnumeratePacketFilters timed out"));
+    LOCAL_ASSERT_EQUALS(enumeratePacketFiltersChStatus.Int(), KErrNone,
+                  _L("RPacketContext::EnumeratePacketFilters returned an error"));
+    LOCAL_ASSERT_EQUALS(count, 3,
+                  _L("RPacketContext::EnumeratePacketFilters returned wrong number"));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context
+    aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,0,packetFilterPkg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo timed out"));
+    LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo returned an error"));
+    FillPacketFilter(defaultPacketFilterInfo,1);
+    LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context
+    aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,1,packetFilterPkg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo timed out"));
+    LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo returned an error"));
+    FillPacketFilter(defaultPacketFilterInfo,2);
+    LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns third packet filter added to the context
+    aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,2,packetFilterPkg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo timed out"));
+    LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo returned an error"));
+    FillPacketFilter(defaultPacketFilterInfo,3);
+    LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns KErrArgument
+    aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,3,packetFilterPkg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo timed out"));
+    LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument,
+                  _L("RPacketContext::GetPacketFilterInfo did not returned an error"));
+
+	// ===  Remove a packet filter and modify the context ===
+
+	// Remove the third packet filter from the secondary context with RPacketContext::RemovePacketFilter 
+    TExtEtelRequestStatus removePacketFilterStatus(aPacketContext, EPacketContextRemovePacketFilter);
+    CleanupStack::PushL(removePacketFilterStatus);
+    aPacketContext.RemovePacketFilter(removePacketFilterStatus,2);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(removePacketFilterStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::RemovePacketFilter timed out"));
+    LOCAL_ASSERT_EQUALS(removePacketFilterStatus.Int(), KErrNone,
+                  _L("RPacketContext::RemovePacketFilter returned an error"));
+
+	// Modify the secondary context with RPacketContext::ModifyActiveContext 
+    aPacketContext.ModifyActiveContext(modifyActiveContextStatus);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, 
+                  _L("RPacketContext::ModifyActiveContext timed out."));
+	LOCAL_ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone,
+                  _L("RPacketContext::ModifyActiveContext returned with error status."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 2
+    count=-1;
+    TExtEtelRequestStatus enumeratePacketFiltersStatus(aPacketContext, EPacketContextEnumeratePacketFilters);
+    CleanupStack::PushL(enumeratePacketFiltersStatus);
+    aPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus,count);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::EnumeratePacketFilters timed out"));
+    LOCAL_ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone,
+                  _L("RPacketContext::EnumeratePacketFilters returned an error"));
+    LOCAL_ASSERT_EQUALS(count, 2,
+                  _L("RPacketContext::EnumeratePacketFilters returned wrong number"));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context
+    aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,0,packetFilterPkg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo timed out"));
+    LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo returned an error"));
+    FillPacketFilter(defaultPacketFilterInfo,1);
+    LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context
+    aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,1,packetFilterPkg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo timed out"));
+    LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo returned an error"));
+    FillPacketFilter(defaultPacketFilterInfo,2);
+    LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns KErrArgument
+    aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,2,packetFilterPkg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo timed out"));
+    LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument,
+                  _L("RPacketContext::GetPacketFilterInfo did not returned an error"));
+
+	// ===  Remove another packet filter and modify the context ===
+
+	// Remove the first packet filter from the secondary context with RPacketContext::RemovePacketFilter 
+    aPacketContext.RemovePacketFilter(removePacketFilterStatus,0);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(removePacketFilterStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::RemovePacketFilter timed out"));
+    LOCAL_ASSERT_EQUALS(removePacketFilterStatus.Int(), KErrNone,
+                  _L("RPacketContext::RemovePacketFilter returned an error"));
+
+	// Modify the secondary context with RPacketContext::ModifyActiveContext 
+    aPacketContext.ModifyActiveContext(modifyActiveContextStatus);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, 
+                  _L("RPacketContext::ModifyActiveContext timed out."));
+	LOCAL_ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone,
+                  _L("RPacketContext::ModifyActiveContext returned with error status."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 1
+    count=-1;
+    aPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus,count);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::EnumeratePacketFilters timed out"));
+    LOCAL_ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone,
+                  _L("RPacketContext::EnumeratePacketFilters returned an error"));
+    LOCAL_ASSERT_EQUALS(count, 1,
+                  _L("RPacketContext::EnumeratePacketFilters returned wrong number"));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns second packet filter added to the context
+    aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,0,packetFilterPkg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo timed out"));
+    LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo returned an error"));
+    FillPacketFilter(defaultPacketFilterInfo,2);
+    LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns KErrArgument
+    aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,1,packetFilterPkg);
+	LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone,
+                  _L("RPacketContext::GetPacketFilterInfo timed out"));
+    LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument,
+                  _L("RPacketContext::GetPacketFilterInfo did not returned an error"));
+
+	// Pop:
+	//	enumeratePacketFiltersStatus
+	//	removePacketFilterStatus
+	//	modifyActiveContextStatus
+	//	getProfileParametersStatus
+	//	getPacketFilterInfoStatus
+	//	enumeratePacketFiltersChStatus
+	//	contextActivateStatus
+	//	notifyContextStChStatus
+	//	setProfileParamStatus
+	//	getProfileCapStatus
+	CleanupStack::PopAndDestroy(10,&getProfileCapStatus);
+	
+    return ret;
+    }
+
+
+TVerdict CCTSYIntegrationTestPacketContext0039::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0039
+ * @SYMFssID BA/CTSY/PKTC-0039
+ * @SYMTestCaseDesc Modify a secondary context with packet filter and QoS.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::GetProfileName, RPacketContext::GetStatus, RPacketContext::EnumeratePacketFilters, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketContext::GetPacketFilterInfo, RPacketContext::ModifyActiveContext, RPacketContext::RemovePacketFilter, RPacketQoS::OpenNewQoS, RPacketQoS::SetProfileParameters
+ * @SYMTestExpectedResults Pass - Packet filter added and removed successfully.Context modified successfully.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify packet filter info and QoS profile info correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	DEBUG_PRINTF2(_L("Starting with type %d"),iTestType);
+	
+    // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+ 	iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+	
+	// Ensure there is an active primary context. 
+	RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+			KMainServer,
+			KMainPhone,
+			KMainPacketService,
+			KPrimaryPacketContext1);
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,packetContext);
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Open a new secondary context. 
+    RPacketContext& secondaryPacketContext1 = iEtelSessionMgr.GetSecondaryPacketContextL(
+			KMainServer,
+			KMainPhone,
+			KMainPacketService, 
+			KPrimaryPacketContext1,
+			KSecondaryPacketContext1);
+
+	// Open a new QoS from the secodnary context  
+	RPacketQoS& packetQoS1 = iEtelSessionMgr.GetSecondaryPacketContextQoSL(
+			KMainServer,
+			KMainPhone,
+			KMainPacketService, 
+			KPrimaryPacketContext1,
+			KSecondaryPacketContext1);
+
+    // Activate and modify the context with TQoSGPRSRequested, TQoSCapsGPRS and TQoSGPRSNegotiated
+    RPacketQoS::TQoSGPRSRequested gprsRequested;
+    RPacketQoS::TQoSCapsGPRS capsGPRS;
+    RPacketQoS::TQoSGPRSNegotiated gprsNegotiated;
+    RPacketQoS::TQoSR99_R4Requested r99_r4Requested;
+    RPacketQoS::TQoSCapsR99_R4 capsR99_R4;
+    RPacketQoS::TQoSR99_R4Negotiated t99_r4Negotiated;
+    RPacketQoS::TQoSR5Requested r5Requested;
+    RPacketQoS::TQoSCapsR5 capsr5;
+    RPacketQoS::TQoSR5Negotiated r5Negotiated;
+    switch (iTestType)
+		{
+		case EQoSGPRS:
+		    ASSERT_TRUE(ActivateAndModifyContextL(secondaryPacketContext1,packetQoS1,gprsRequested,capsGPRS,gprsNegotiated),
+		                _L("CCTSYIntegrationTestPacketContext0039::ActivateAndModifyContextL failed"));
+		    break;
+		case EQoSR4:
+		    ASSERT_TRUE(ActivateAndModifyContextL(secondaryPacketContext1,packetQoS1,r99_r4Requested,capsR99_R4,t99_r4Negotiated),
+		                _L("CCTSYIntegrationTestPacketContext0039::ActivateAndModifyContextL failed"));
+		    break;
+		case EQoSR5:
+		    ASSERT_TRUE(ActivateAndModifyContextL(secondaryPacketContext1,packetQoS1,r5Requested,capsr5,r5Negotiated),
+		                _L("CCTSYIntegrationTestPacketContext0039::ActivateAndModifyContextL failed"));
+		    break;			
+			
+		default:
+			CHECK_TRUE_L(EFalse, _L("Wrong test type!"));
+			break;
+		}
+
+	// Repeat test with TQoSR99_R4Requested and TQoSR5Requested types in  RPacketQoS::SetProfileParameters and checking for TQoSR99_R4Negotiated and TQoSR5Negotiated  in RPacketContext::GetProfileParameters respectively. 
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0039::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0039");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0040::CCTSYIntegrationTestPacketContext0040(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0040::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0040::~CCTSYIntegrationTestPacketContext0040()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0040::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0040
+ * @SYMFssID BA/CTSY/PKTC-0040
+ * @SYMTestCaseDesc Activate a secondary context with the maximum number of packet filters allowed by default TFT.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::EnumeratePacketFilters, RPacketContext::GetPacketFilterInfo, RPacketContext::Activate
+ * @SYMTestExpectedResults Pass - 8 packet filters added. Unable to add 9th packet filter.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify packet filter info and QoS profile info correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+
+    // Check that the phone is registered with the network simulator. 
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+	iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+
+	// Ensure there is an active primary context. 
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext);
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Open a new secondary context. 
+	RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL(
+			KMainServer,
+			KMainPhone,
+			KMainPacketService, 
+			KPrimaryPacketContext1,
+			KSecondaryPacketContext1);
+
+	// Add 8 TPacketFilterV2 packet filters to the secondary context using RPacketContext::AddPacketFilter each with a different iId. 
+	// $CTSYProblem Adding 7 filters wil cause the LTSY to crash the board
+	for(TInt index = 1; index < 7; index++)
+		{
+		ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, index), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); 
+		}
+
+	// ===  Attempt to add a 9th filter ===
+
+	// Check RPacketContext::AddPacketFilter returns KErrArgument
+	// $CTSYProblem Adding 7 filters wil cause the LTSY to crash the board
+
+	// Open a new QoS from the secondary context 
+	RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+
+	// Get QoS profile capabilities with RPacketQoS::GetProfileCapabilities
+	TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps);
+	CleanupStack::PushL(getProfileCapStatus);
+	RPacketQoS::TQoSCapsGPRS qosCapGprs;
+	TPckg<RPacketQoS::TQoSCapsGPRS> qosCapsGprsPckg(qosCapGprs);
+	packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out."));
+    ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status."));
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+     RPacketQoS::TQoSGPRSRequested qosGprsRequested;
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosGprsReqPckg(qosGprsRequested);
+    FillParametersFromCapabilities(qosGprsRequested,qosCapGprs);    
+	TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams);
+	CleanupStack::PushL(setProfileParamStatus);
+	packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out."));
+	ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status."));
+
+	// Check RPacketContext::GetProfileName returns QoS profile name with length > 0
+    TName profileName;
+    profileName.Zero();
+    ASSERT_EQUALS(secondaryPacketContext.GetProfileName(profileName),KErrNone, _L("RPacketContext::GetProfileName returned with error status."));
+    ASSERT_TRUE(profileName.Length()>0, _L("RPacketContext::GetProfileName name length is 0."));
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifySecContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifySecContextStChStatus);
+	RPacketContext::TContextStatus secPacketContextStatus;
+	secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);
+
+	// Activate the secondary context. 
+	TExtEtelRequestStatus secContextActivateStatus(secondaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(secContextActivateStatus);
+	secondaryPacketContext.Activate(secContextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(secContextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(secContextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive
+    RPacketContext::TContextStatus expectedSecContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifySecContextStChStatus,
+				secPacketContextStatus, 
+				expectedSecContextStatus,
+				KErrNone);
+
+    secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);	
+    expectedSecContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifySecContextStChStatus,
+				secPacketContextStatus, 
+				expectedSecContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+	ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+    ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus status expected to be EStatusActive but is not."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 8
+	TExtEtelRequestStatus enumeratePacketFiltersStatus(secondaryPacketContext, EPacketContextEnumeratePacketFilters);
+	CleanupStack::PushL(enumeratePacketFiltersStatus);
+	TInt packetFiltersCount(0);
+	secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out."));
+	ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status."));
+	ASSERT_EQUALS(packetFiltersCount, 8, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters."));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns third packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fourth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns fifth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns sixth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 6 returns seventh packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 7 returns eighth packet filter added to the context
+	// $CTSYProblem Adding 7 filters wil cause the LTSY to crash the board
+    RPacketContext::TPacketFilterV2 getPacketFilterV2;
+    RPacketContext::TPacketFilterV2Pckg getPacketFilterV2pkg(getPacketFilterV2);
+	TExtEtelRequestStatus getPacketFilterInfoStatus(secondaryPacketContext, EPacketContextGetPacketFilterInfo);
+    CleanupStack::PushL(getPacketFilterInfoStatus);
+	RPacketContext::TPacketFilterV2 defaultPacketFilterInfo;
+
+	for (TInt index = 0; index < 6; index++)
+		{
+		secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg);
+		ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+	    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error"));
+		FillPacketFilter(defaultPacketFilterInfo, index + 1);
+		ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+		}
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 8 returns KErrArgument
+	secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 7, getPacketFilterV2pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error"));
+
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// getProfileCapStatus
+	// setProfileParamStatus
+	// notifySecContextStChStatus
+	// secContextActivateStatus
+	// enumeratePacketFiltersStatus
+	// getPacketFilterInfoStatus
+	CleanupStack::PopAndDestroy(6, &getProfileCapStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0040::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0040");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0041::CCTSYIntegrationTestPacketContext0041(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0041::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0041::~CCTSYIntegrationTestPacketContext0041()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0041::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0041
+ * @SYMFssID BA/CTSY/PKTC-0041
+ * @SYMTestCaseDesc Modify a secondary context with the maximum number of packet filters allowed by default TFT.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::GetPacketFilterInfo, RPacketContext::NotifyStatusChange, RPacketContext::ModifyActiveContext, RPacketContext::GetProfileParameters, RPacketContext::GetProfileName, RPacketContext::GetStatus, RPacketContext::RemovePacketFilter, RPacketContext::EnumeratePacketFilters, RPacketQoS::SetProfileParameters, RPacketQoS::OpenNewQoS, RPacketContext::AddPacketFilter
+ * @SYMTestExpectedResults Pass - 8 packet filters added. Unable to add 9th packet filter.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify packet filter info correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+
+    //Check if we are on a simulated network to run emergency call tests
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+    iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);	
+
+	// Ensure there is an active primary context. 
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext);
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Open a new secondary context. 
+    RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL(
+			KMainServer,
+			KMainPhone,
+			KMainPacketService, 
+			KPrimaryPacketContext1,
+			KSecondaryPacketContext1);
+
+	// Add a TPacketFilterV2 packet filter with iId = 1 to the secondary context using RPacketContext::AddPacketFilter 
+	ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 1), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); 
+
+	// Open a new QoS from the secondary context
+	RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+
+	// Get QoS profile capabilities with RPacketQoS::GetProfileCapabilities
+	TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps);
+	CleanupStack::PushL(getProfileCapStatus);
+	RPacketQoS::TQoSCapsGPRS qosCapGprs;
+	TPckg<RPacketQoS::TQoSCapsGPRS> qosCapsGprsPckg(qosCapGprs);
+	packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out."));
+    ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status."));
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+    RPacketQoS::TQoSGPRSRequested qosGprsRequested;
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosGprsReqPckg(qosGprsRequested);
+    FillParametersFromCapabilities(qosGprsRequested,qosCapGprs);
+	TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams);
+	CleanupStack::PushL(setProfileParamStatus);
+	packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out."));
+	ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status."));
+
+	// Check RPacketContext::GetProfileName returns QoS profile name with length > 0
+    TName profileName;
+    profileName.Zero();
+    ASSERT_EQUALS(secondaryPacketContext.GetProfileName(profileName),KErrNone, _L("RPacketContext::GetProfileName returned with error status."));
+    ASSERT_TRUE(profileName.Length()>0, _L("RPacketContext::GetProfileName name length is 0."));
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifySecContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifySecContextStChStatus);
+	RPacketContext::TContextStatus secPacketContextStatus;
+	secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);
+
+	// Activate the secondary context. 
+	TExtEtelRequestStatus secContextActivateStatus(secondaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(secContextActivateStatus);
+	secondaryPacketContext.Activate(secContextActivateStatus);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(secContextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(secContextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive
+    RPacketContext::TContextStatus expectedSecContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifySecContextStChStatus,
+				secPacketContextStatus, 
+				expectedSecContextStatus,
+				KErrNone);
+    secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);	
+    expectedSecContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifySecContextStChStatus,
+				secPacketContextStatus, 
+				expectedSecContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+	ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+    ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus status expected to be EStatusActive but is not."));
+
+	// Add 7 more TPacketFilterV2 packet filters (with iId = 2 to 8) to the secondary context using RPacketContext::AddPacketFilter 
+	for(TInt index = 2; index < 9; index++)
+		{
+		ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, index), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); 
+		}
+
+	// ===  Attempt to add a 9th filter to the context ===
+
+	// Check RPacketContext::AddPacketFilter with iId = 9 returns KErrArgument
+	// $CTSYProblem.
+	// PacketContext::AddPacketFilter return KErrGeneral instead of KErrArgument for wrong argument. 
+	ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 9,KErrGeneral), KErrGeneral, _L("RPacketContext::AddPacketFilter did not return with an error as expected."));
+
+	// Modify the secondary context with RPacketContext::ModifyActiveContext 
+	// $CTSYProblem The LTSY or the Anite system has no support to RPacketContext::ModifyActiveContext
+	ERR_PRINTF1(_L("<font color=Cyan>$CTSYProblem: The LTSY or the Anite system has no support to RPacketContext::ModifyActiveContext.<font color=Black>"));    
+	TExtEtelRequestStatus modifyActiveContextStatus(secondaryPacketContext, EPacketContextModifyActiveContext);
+	CleanupStack::PushL(modifyActiveContextStatus);
+	secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out."));
+	ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 8
+	TExtEtelRequestStatus enumeratePacketFiltersStatus(secondaryPacketContext, EPacketContextEnumeratePacketFilters);
+	CleanupStack::PushL(enumeratePacketFiltersStatus);
+	TInt packetFiltersCount(0);
+	secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out."));
+	ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status."));
+	ASSERT_EQUALS(packetFiltersCount, 8, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters."));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns third packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fourth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns fifth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns sixth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 6 returns seventh packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 7 returns eighth packet filter added to the context
+    RPacketContext::TPacketFilterV2 getPacketFilterV2;
+    RPacketContext::TPacketFilterV2Pckg getPacketFilterV2pkg(getPacketFilterV2);
+	TExtEtelRequestStatus getPacketFilterInfoStatus(secondaryPacketContext, EPacketContextGetPacketFilterInfo);
+    CleanupStack::PushL(getPacketFilterInfoStatus);
+	RPacketContext::TPacketFilterV2 defaultPacketFilterInfo;
+
+	for (TInt index = 0; index < 8; index++)
+		{
+		secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg);
+		ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+	    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error"));
+		FillPacketFilter(defaultPacketFilterInfo, index + 1);
+		ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+		}
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 8 returns KErrArgument
+	secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 8, getPacketFilterV2pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error"));
+
+	// Remove the filter with iId = 3 using RPacketContext::RemovePacketFilter 
+	TExtEtelRequestStatus removePacketFilterStatus(secondaryPacketContext, EPacketContextRemovePacketFilter);
+	CleanupStack::PushL(removePacketFilterStatus);
+	TInt wantedId = 3;
+	secondaryPacketContext.RemovePacketFilter(removePacketFilterStatus, wantedId);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(removePacketFilterStatus, ETimeShort), KErrNone, _L("RPacketContext::RemovePacketFilter timed out"));
+	ASSERT_EQUALS(removePacketFilterStatus.Int(), KErrNone, _L("RPacketContext::RemovePacketFilter returned an error"));
+
+	// Modify the secondary context with RPacketContext::ModifyActiveContext 
+	secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out."));
+	ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 7
+	packetFiltersCount = 0;
+	secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out."));
+	ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status."));
+	ASSERT_EQUALS(packetFiltersCount, 7, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters."));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns fourth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fifth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns sixth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns seventh packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 6 returns eighth packet filter added to the context
+	for (TInt index = 0; index < 7; index++)
+		{
+		secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg);
+		ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+	    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error"));
+		
+		if(index >= 2)
+			{
+			FillPacketFilter(defaultPacketFilterInfo, index + 2);
+			}
+		else
+			{
+			FillPacketFilter(defaultPacketFilterInfo, index + 1);
+			}
+			
+		ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+		}
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 7 returns KErrArgument
+	secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 7, getPacketFilterV2pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error"));
+
+	// ===  Add a packet filter with the same Id as an existing one (modification of a packet filter) ===
+
+	// Add another filter packet filter to the context with iId = 1 
+    RPacketContext::TPacketFilterV2 packetFilterV2;
+    FillPacketFilter(packetFilterV2, 3);
+	RPacketContext::TPacketFilterV2Pckg packetFilterV2pckg(packetFilterV2);
+	TExtEtelRequestStatus addFilterStatus(primaryPacketContext, EPacketContextAddPacketFilter); 
+    CleanupStack::PushL(addFilterStatus);
+    packetFilterV2.iId = 1;
+	secondaryPacketContext.AddPacketFilter(addFilterStatus, packetFilterV2pckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(addFilterStatus, ETimeMedium), KErrNone, _L("RPacketContext::AddPacketFilter timed out"));
+    ASSERT_EQUALS(addFilterStatus.Int(), KErrNone, _L("RPacketContext::AddPacketFilter returned an error"));
+
+	// Modify the secondary context with RPacketContext::ModifyActiveContext 
+	secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out."));
+	ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 7
+	packetFiltersCount = 0;
+	secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out."));
+	ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status."));
+	ASSERT_EQUALS(packetFiltersCount, 7, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters."));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns newly added packet filter 
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns fourth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fifth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns sixth packet filter added to the tcontext
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns seventh packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 6 returns eighth packet filter added to the context
+	for (TInt index = 0; index < 7; index++)
+		{
+		secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg);
+		ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+	    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error"));
+
+		if(index == 0)
+			{
+			FillPacketFilter(defaultPacketFilterInfo, 3);
+			defaultPacketFilterInfo.iId = 1;
+			}
+		else if(index >= 2)
+			{
+			FillPacketFilter(defaultPacketFilterInfo, index + 2);
+			}
+		else
+			{
+			FillPacketFilter(defaultPacketFilterInfo, index + 1);
+			}
+
+		ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+		}
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 7 returns KErrArgument
+	secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 7, getPacketFilterV2pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error"));
+
+	// ===  Add a packet filter with iId = 3 (add new one that was removed) ===
+
+	// Add another filter packet filter to the context with iId = 3 
+	ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 3), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); 
+
+	// Modify the secondary context with RPacketContext::ModifyActiveContext 
+	secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out."));
+	ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 8
+	packetFiltersCount = 0;
+	secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out."));
+	ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status."));
+	ASSERT_EQUALS(packetFiltersCount, 8, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters."));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns third packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fourth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns fifth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns sixth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 6 returns seventh packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 7 returns eighth packet filter added to the context
+	for (TInt index = 0; index < 8; index++)
+		{
+		secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg);
+		ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+	    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error"));
+
+		if(index == 0)
+			{
+			FillPacketFilter(defaultPacketFilterInfo, 3);
+			defaultPacketFilterInfo.iId = 1;
+			}
+		else
+			{
+			FillPacketFilter(defaultPacketFilterInfo, index + 1);
+			}
+
+		ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+		}
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 8 returns KErrArgument
+	secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 8, getPacketFilterV2pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error"));
+
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// getProfileCapStatus
+	// setProfileParamStatus
+	// notifySecContextStChStatus
+	// secContextActivateStatus
+	// addFilterStatus
+	// modifyActiveContextStatus
+	// enumeratePacketFiltersStatus
+	// getPacketFilterInfoStatus
+	// removePacketFilterStatus
+	CleanupStack::PopAndDestroy(9, &getProfileCapStatus);
+
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0041::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0041");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0042::CCTSYIntegrationTestPacketContext0042(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0042::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0042::~CCTSYIntegrationTestPacketContext0042()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0042::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0042
+ * @SYMFssID BA/CTSY/PKTC-0042
+ * @SYMTestCaseDesc Activate a secondary context creating a TFT for the packet filters.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::CreateNewTFT, RPacketContext::AddPacketFilter, RPacketContext::EnumeratePacketFilters, RPacketContext::GetPacketFilterInfo, RPacketContext::Activate, RPacketContext::DeleteTFT
+ * @SYMTestExpectedResults Pass - TFT created and deleted.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify packet filter info correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	// ==== Ensure there is an active primary context === 
+
+    //Check if we are on a simulated network
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+ 	iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+	// Set the attach mode to EAttachWhenPossible. 
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+    
+    // Open primary context
+    RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	// Activate primary context.											
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,primaryPacketContext);	
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+
+
+	// Open a new secondary context. 
+    RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL(
+			KMainServer,
+			KMainPhone,
+			KMainPacketService, 
+			KPrimaryPacketContext1,
+			KSecondaryPacketContext1);
+
+	// Create a new TFT with RPacketContext::CreateNewTFT and aSize = 5 
+	TExtEtelRequestStatus createNewTFTStatus(secondaryPacketContext, EPacketContextCreateNewTFT);
+	CleanupStack::PushL(createNewTFTStatus);
+	const TInt size(5);
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 50005);
+	secondaryPacketContext.CreateNewTFT(createNewTFTStatus, size);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(createNewTFTStatus, ETimeMedium), KErrNone, _L("RPacketContext::CreateNewTFT timed out"));
+	ASSERT_EQUALS(createNewTFTStatus.Int(), KErrNone, _L("RPacketContext::CreateNewTFT returned an error"));
+
+	// Add a TPacketFilterV2 packet filter with iId = 1 to the secondary context using RPacketContext::AddPacketFilter 
+	// Add a TPacketFilterV2 packet filter with iId = 2 to the secondary context using RPacketContext::AddPacketFilter 
+	// Add a TPacketFilterV2 packet filter with iId = 3 to the secondary context using RPacketContext::AddPacketFilter 
+	// Add a TPacketFilterV2 packet filter with iId = 4 to the secondary context using RPacketContext::AddPacketFilter 
+	// Add a TPacketFilterV2 packet filter with iId = 5 to the secondary context using RPacketContext::AddPacketFilter 
+	for (TInt index = 1; index < 6; index++)
+		{
+		ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, index), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); 
+		}
+
+	// Add a TPacketFilterV2 packet filter with iId = 6 to the secondary context returns KErrArgument 
+	ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 6), KErrArgument, _L("RPacketContext::AddPacketFilter did not return with an error as expected.")); 
+
+	// Open a new QoS from the secondary context  
+	RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+
+	// Get QoS profile capabilities with RPacketQoS::GetProfileCapabilities
+	TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps);
+	CleanupStack::PushL(getProfileCapStatus);
+	RPacketQoS::TQoSCapsGPRS qosCapGprs;
+	TPckg<RPacketQoS::TQoSCapsGPRS> qosCapsGprsPckg(qosCapGprs);
+	packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out."));
+    ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status."));
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+    RPacketQoS::TQoSGPRSRequested qosGprsRequested;
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosGprsReqPckg(qosGprsRequested);
+    FillParametersFromCapabilities(qosGprsRequested,qosCapGprs);    
+	TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams);
+	CleanupStack::PushL(setProfileParamStatus);
+	packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out."));
+	ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status."));
+
+	// Check RPacketContext::GetProfileName returns QoS profile name with length > 0
+    TName profileName;
+    ASSERT_EQUALS(secondaryPacketContext.GetProfileName(profileName),KErrNone, _L("RPacketContext::GetProfileName returned with error status."));
+    ASSERT_TRUE(profileName.Length()>0, _L("RPacketContext::GetProfileName name length is 0."));
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifySecContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifySecContextStChStatus);
+	RPacketContext::TContextStatus secPacketContextStatus;
+	secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);
+
+	// Activate the secondary context. 
+	TExtEtelRequestStatus secContextActivateStatus(secondaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(secContextActivateStatus);
+	secondaryPacketContext.Activate(secContextActivateStatus);
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive
+    RPacketContext::TContextStatus expectedSecContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifySecContextStChStatus,
+				secPacketContextStatus, 
+				expectedSecContextStatus,
+				KErrNone);
+    secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);	
+    expectedSecContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifySecContextStChStatus,
+				secPacketContextStatus, 
+				expectedSecContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+	ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+    ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus status expected to be EStatusActive but is not."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 5
+	TExtEtelRequestStatus enumeratePacketFiltersStatus(secondaryPacketContext, EPacketContextEnumeratePacketFilters);
+	CleanupStack::PushL(enumeratePacketFiltersStatus);
+	TInt packetFiltersCount(0);
+	secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out."));
+	ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status."));
+	ASSERT_EQUALS(packetFiltersCount, 5, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters."));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns third packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fourth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns fifth packet filter added to the context
+    RPacketContext::TPacketFilterV2 getPacketFilterV2;
+    RPacketContext::TPacketFilterV2Pckg getPacketFilterV2pkg(getPacketFilterV2);
+	TExtEtelRequestStatus getPacketFilterInfoStatus(secondaryPacketContext, EPacketContextGetPacketFilterInfo);
+    CleanupStack::PushL(getPacketFilterInfoStatus);
+	RPacketContext::TPacketFilterV2 defaultPacketFilterInfo;
+
+	for (TInt index = 0; index < 5; index++)
+		{
+		secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg);
+		ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+	    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error"));
+		FillPacketFilter(defaultPacketFilterInfo, index + 1);
+		ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+		}
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns KErrArgument
+	TInt index = 5;
+	secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error"));
+
+	// Repost notification for context's status change
+	secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);
+
+	// Deactivate the secondary context. 
+	TExtEtelRequestStatus contextDeactivateStatus(secondaryPacketContext, EPacketContextDeactivate);
+	CleanupStack::PushL(contextDeactivateStatus);
+	secondaryPacketContext.Deactivate(contextDeactivateStatus);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Deactivate timed out."));					
+	ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned with error status."));
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusInactive
+    RPacketContext::TContextStatus 	expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					secondaryPacketContext,
+					notifySecContextStChStatus,
+					secPacketContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusInactive
+	ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+    ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus status did not return EStatusInactive."));
+
+	// Delete the TFT with RPacketContext::DeleteTFT 
+	TExtEtelRequestStatus deleteTFTStatus(secondaryPacketContext, EPacketContextDeleteTFT);
+	CleanupStack::PushL(deleteTFTStatus);
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 50006);
+	secondaryPacketContext.DeleteTFT(deleteTFTStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(createNewTFTStatus, ETimeMedium), KErrNone, _L("RPacketContext::DeleteTFT timed out"));
+	ASSERT_EQUALS(createNewTFTStatus.Int(), KErrNone, _L("RPacketContext::DeleteTFT returned an error"));
+
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+
+	// Pop
+	// createNewTFTStatus
+	// getProfileCapStatus
+	// setProfileParamStatus
+	// notifySecContextStChStatus
+	// secContextActivateStatus
+	// enumeratePacketFiltersStatus
+	// getPacketFilterInfoStatus
+	// contextDeactivateStatus
+	// deleteTFTStatus
+	CleanupStack::PopAndDestroy(9, &createNewTFTStatus);
+
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0042::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0042");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0043::CCTSYIntegrationTestPacketContext0043(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0043::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0043::~CCTSYIntegrationTestPacketContext0043()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0043::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0043
+ * @SYMFssID BA/CTSY/PKTC-0043
+ * @SYMTestCaseDesc Modify a secondary context creating a TFT for the packet filters.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::Activate, RPacketContext::AddPacketFilter, RPacketContext::EnumeratePacketFilters, RPacketContext::GetPacketFilterInfo, RPacketContext::ModifyActiveContext, RPacketContext::DeleteTFT
+ * @SYMTestExpectedResults Pass - TFT created and deleted.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify packet filter info correct.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+
+    //Check if we are on a simulated network to run emergency call tests
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+    iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);	
+
+	// Ensure there is an active primary context. 
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext);
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Open a new secondary context. 
+    RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL(
+			KMainServer,
+			KMainPhone,
+			KMainPacketService, 
+			KPrimaryPacketContext1,
+			KSecondaryPacketContext1);
+
+	// Create a new TFT with RPacketContext::CreateNewTFT and aSize = 5 
+	TExtEtelRequestStatus createNewTFTStatus(secondaryPacketContext, EPacketContextCreateNewTFT);
+	CleanupStack::PushL(createNewTFTStatus);
+	const TInt size(5);
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 50005);
+	secondaryPacketContext.CreateNewTFT(createNewTFTStatus, size);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(createNewTFTStatus, ETimeMedium), KErrNone, _L("RPacketContext::CreateNewTFT timed out"));
+	ASSERT_EQUALS(createNewTFTStatus.Int(), KErrNone, _L("RPacketContext::CreateNewTFT returned an error"));
+
+	// Add a TPacketFilterV2 packet filter with iId = 1 to the secondary context using RPacketContext::AddPacketFilter 
+	ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 1), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); 
+
+	// Open a new QoS from the secondary context with  
+	RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+
+	// Get QoS profile capabilities with RPacketQoS::GetProfileCapabilities
+	TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps);
+	CleanupStack::PushL(getProfileCapStatus);
+	RPacketQoS::TQoSCapsGPRS qosCapGprs;
+	TPckg<RPacketQoS::TQoSCapsGPRS> qosCapsGprsPckg(qosCapGprs);
+	packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out."));
+    ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status."));
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+    RPacketQoS::TQoSGPRSRequested qosGprsRequested;
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosGprsReqPckg(qosGprsRequested);
+    FillParametersFromCapabilities(qosGprsRequested,qosCapGprs);    
+	TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams);
+	CleanupStack::PushL(setProfileParamStatus);
+	packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out."));
+	ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status."));
+
+	// Check RPacketContext::GetProfileName returns QoS profile name with length > 0
+    TName profileName;
+    ASSERT_EQUALS(secondaryPacketContext.GetProfileName(profileName),KErrNone, _L("RPacketContext::GetProfileName returned with error status."));
+    ASSERT_TRUE(profileName.Length()>0, _L("RPacketContext::GetProfileName name length is 0."));
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifySecContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifySecContextStChStatus);
+	RPacketContext::TContextStatus secPacketContextStatus;
+	secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);
+
+	// Activate the secondary context. 
+	TExtEtelRequestStatus secContextActivateStatus(secondaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(secContextActivateStatus);
+	secondaryPacketContext.Activate(secContextActivateStatus);
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive
+    RPacketContext::TContextStatus expectedSecContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifySecContextStChStatus,
+				secPacketContextStatus, 
+				expectedSecContextStatus,
+				KErrNone);
+
+    secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);	
+    expectedSecContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifySecContextStChStatus,
+				secPacketContextStatus, 
+				expectedSecContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+	ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+    ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus status expected to be EStatusActive but is not."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 1
+	TExtEtelRequestStatus enumeratePacketFiltersStatus(secondaryPacketContext, EPacketContextEnumeratePacketFilters);
+	CleanupStack::PushL(enumeratePacketFiltersStatus);
+	TInt packetFiltersCount(0);
+	secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out."));
+	ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status."));
+	ASSERT_EQUALS(packetFiltersCount, 1, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters."));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns packet filter with iId = 1
+    RPacketContext::TPacketFilterV2 getPacketFilterV2;
+    RPacketContext::TPacketFilterV2Pckg getPacketFilterV2pkg(getPacketFilterV2);
+	TExtEtelRequestStatus getPacketFilterInfoStatus(secondaryPacketContext, EPacketContextGetPacketFilterInfo);
+    CleanupStack::PushL(getPacketFilterInfoStatus);
+	RPacketContext::TPacketFilterV2 defaultPacketFilterInfo;
+	FillPacketFilter(defaultPacketFilterInfo, 1);
+	secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 0, getPacketFilterV2pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error"));
+	ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+
+	// Add 4 more TPacketFilterV2 packet filters (with iId = 2 to 5) to the secondary context using RPacketContext::AddPacketFilter 
+	for(TInt index = 2; index < 6; index++)
+		{
+		ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, index), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); 
+		}
+
+	// ===  Attempt to add a 6th filter to the context ===
+
+	// Check RPacketContext::AddPacketFilter with iId = 6 returns KErrArgument
+	ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 6), KErrArgument, _L("RPacketContext::AddPacketFilter did not return with an error as expected."));
+
+	// Modify the secondary context with RPacketContext::ModifyActiveContext 
+	TExtEtelRequestStatus modifyActiveContextStatus(secondaryPacketContext, EPacketContextModifyActiveContext);
+	CleanupStack::PushL(modifyActiveContextStatus);
+	secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out."));
+	ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 5
+	packetFiltersCount = 0;
+	secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out."));
+	ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status."));
+	ASSERT_EQUALS(packetFiltersCount, 5, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters."));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns third packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fourth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns fifth packet filter added to the context
+	for (TInt index = 0; index < 5; index++)
+		{
+		secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg);
+		ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+	    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error"));
+		FillPacketFilter(defaultPacketFilterInfo, index + 1);
+		ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+		}
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns KErrArgument
+	secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 5, getPacketFilterV2pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error"));
+
+	// Remove the filter with iId = 3 using RPacketContext::RemovePacketFilter 
+	TExtEtelRequestStatus removePacketFilterStatus(secondaryPacketContext, EPacketContextRemovePacketFilter);
+	CleanupStack::PushL(removePacketFilterStatus);
+	TInt wantedId = 3;
+	secondaryPacketContext.RemovePacketFilter(removePacketFilterStatus, wantedId);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(removePacketFilterStatus, ETimeShort), KErrNone, _L("RPacketContext::RemovePacketFilter timed out"));
+	ASSERT_EQUALS(removePacketFilterStatus.Int(), KErrNone, _L("RPacketContext::RemovePacketFilter returned an error"));
+
+	// Modify the secondary context with RPacketContext::ModifyActiveContext 
+	secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out."));
+	ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 4
+	packetFiltersCount = 0;
+	secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out."));
+	ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status."));
+	ASSERT_EQUALS(packetFiltersCount, 4, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters."));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns fourth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fifth packet filter added to the context
+	for (TInt index = 0; index < 4; index++)
+		{
+		secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg);
+		ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+	    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error"));
+	    
+	    if (index >= 2) // Third filter removed earlier in this test
+			{
+			FillPacketFilter(defaultPacketFilterInfo, index + 2);
+			}
+	    else
+   			{
+   			FillPacketFilter(defaultPacketFilterInfo, index + 1);
+   			}
+
+		ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+		}
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns KErrArgument
+	secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 4, getPacketFilterV2pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error"));
+
+	// ===  Add a packet filter with the same Id as an existing one (modification of a packet filter) ===
+
+	// Add another packet filter to the context with iId = 1 
+    RPacketContext::TPacketFilterV2 packetFilterV2;
+	RPacketContext::TPacketFilterV2Pckg packetFilterV2pckg(packetFilterV2);
+	TExtEtelRequestStatus addFilterStatus(primaryPacketContext, EPacketContextAddPacketFilter); 
+    CleanupStack::PushL(addFilterStatus);
+	FillPacketFilter(packetFilterV2, 2);
+	packetFilterV2.iId = 1;
+	secondaryPacketContext.AddPacketFilter(addFilterStatus, packetFilterV2pckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(addFilterStatus, ETimeMedium), KErrNone, _L("RPacketContext::AddPacketFilter timed out"));
+	ASSERT_EQUALS(addFilterStatus.Int(), KErrNone, _L("RPacketContext::AddPacketFilter returned an error"));
+
+	// Modify the secondary context with RPacketContext::ModifyActiveContext 
+	secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out."));
+	ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 4
+	packetFiltersCount = 0;
+	secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out."));
+	ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status."));
+	ASSERT_EQUALS(packetFiltersCount, 4, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters."));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter that has just been added
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns fourth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fifth packet filter added to the context
+	for (TInt index = 0; index < 4; index++)
+		{
+		secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg);
+		ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+	    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error"));
+
+		if (index == 0)
+			{
+			FillPacketFilter(defaultPacketFilterInfo, 2);
+            packetFilterV2.iId = 1;
+			}
+	    else if (index >= 2) // Third filter removed earlier in this test
+			{
+			FillPacketFilter(defaultPacketFilterInfo, index + 2);
+			}
+	    else
+			{
+   			FillPacketFilter(defaultPacketFilterInfo, index + 1);
+			}
+
+		ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+		}
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns KErrArgument
+	secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 4, getPacketFilterV2pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error"));
+
+	// ===  Add a packet filter with iId = 3 (add new one that was removed) ===
+
+	// Add another filter packet filter to the context with iId = 3 
+	ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 3), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); 
+
+	// Modify the secondary context with RPacketContext::ModifyActiveContext 
+	secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out."));
+	ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status."));
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 5
+	packetFiltersCount = 0;
+	secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out."));
+	ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status."));
+	ASSERT_EQUALS(packetFiltersCount, 5, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters."));
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns third packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fourth packet filter added to the context
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns fifth packet filter added to the context
+	for (TInt index = 1; index < 4; index++)
+		{
+		secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg);
+		ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+	    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error"));
+
+		if (index == 0)
+			{
+			FillPacketFilter(defaultPacketFilterInfo, 2);
+            packetFilterV2.iId = 1;
+			}
+		else
+			{
+			FillPacketFilter(defaultPacketFilterInfo, index + 1);
+			}
+
+		ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter"));
+		}
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns KErrArgument
+	secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 5, getPacketFilterV2pkg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out"));
+    ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error"));
+
+	// Repost notification for context's status change
+	secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);
+
+	// Deactivate the secondary context. 
+	TExtEtelRequestStatus contextDeactivateStatus(secondaryPacketContext, EPacketContextDeactivate);
+	CleanupStack::PushL(contextDeactivateStatus);
+	secondaryPacketContext.Deactivate(contextDeactivateStatus);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Deactivate timed out."));					
+	ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned with error status."));
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusInactive
+    RPacketContext::TContextStatus 	expectedPacketContextStatus = RPacketContext::EStatusInactive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+					secondaryPacketContext,
+					notifySecContextStChStatus,
+					secPacketContextStatus, 
+					expectedPacketContextStatus,
+					KErrNone);
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusInactive
+	ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+    ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusInactive, _L("Packet Context's status expected to be EStatusActive but is not."));
+
+	// Delete the TFT with RPacketContext::DeleteTFT 
+	TExtEtelRequestStatus deleteTFTStatus(secondaryPacketContext, EPacketContextDeleteTFT);
+	CleanupStack::PushL(deleteTFTStatus);
+	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 50006);
+	secondaryPacketContext.DeleteTFT(deleteTFTStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(createNewTFTStatus, ETimeMedium), KErrNone, _L("RPacketContext::DeleteTFT timed out"));
+	ASSERT_EQUALS(createNewTFTStatus.Int(), KErrNone, _L("RPacketContext::DeleteTFT returned an error"));
+
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// createNewTFTStatus
+	// getProfileCapStatus
+	// setProfileParamStatus
+	// notifySecContextStChStatus
+	// secContextActivateStatus
+	// enumeratePacketFiltersStatus
+	// getPacketFilterInfoStatus
+	// modifyActiveContextStatus
+	// removePacketFilterStatus
+	// addFilterStatus
+	// contextDeactivateStatus
+	// deleteTFTStatus
+	CleanupStack::PopAndDestroy(12, &createNewTFTStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0043::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0043");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0044::CCTSYIntegrationTestPacketContext0044(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0044::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0044::~CCTSYIntegrationTestPacketContext0044()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0044::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0044
+ * @SYMFssID BA/CTSY/PKTC-0044
+ * @SYMTestCaseDesc Modify a context when it is not active.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::OpenNewSecondaryContext
+ * @SYMTestExpectedResults Pass - Error returned on attempt to modify a context that is not active.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context status and packet service status and error returned for modify.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+
+    // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+
+
+	// Open a new primary context.
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+																KMainServer,
+																KMainPhone,
+																KMainPacketService,
+																KPrimaryPacketContext1);
+
+	// Modify the context with RPacketContext::ModifyActiveContext 
+	TExtEtelRequestStatus modifyActiveContextStatus(primaryPacketContext, EPacketContextModifyActiveContext);
+	CleanupStack::PushL(modifyActiveContextStatus);
+	primaryPacketContext.ModifyActiveContext(modifyActiveContextStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out."));
+
+	// Check error is returned.
+	ASSERT_TRUE(modifyActiveContextStatus.Int() != KErrNone, _L("RPacketContext::ModifyActiveContext did not return with an error as expected."));
+
+	// Open a new secondary context from the primary  
+    RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL(
+																KMainServer,
+																KMainPhone,
+																KMainPacketService, 
+																KPrimaryPacketContext1,
+																KSecondaryPacketContext1);
+
+	// Modify the secondary context with RPacketContext::ModifyActiveContext 
+	TExtEtelRequestStatus modifyActiveContextStatus2(secondaryPacketContext, EPacketContextModifyActiveContext);
+	CleanupStack::PushL(modifyActiveContextStatus2);
+	secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus2);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus2, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out."));
+
+	// Check error is returned.
+	ASSERT_TRUE(modifyActiveContextStatus2.Int() != KErrNone, _L("RPacketContext::ModifyActiveContext did not return with an error as expected."));
+
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// modifyActiveContextStatus
+	// modifyActiveContextStatus2
+	CleanupStack::PopAndDestroy(2, &modifyActiveContextStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0044::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0044");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0045::CCTSYIntegrationTestPacketContext0045(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0045::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0045::~CCTSYIntegrationTestPacketContext0045()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0045::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0045
+ * @SYMFssID BA/CTSY/PKTC-0045
+ * @SYMTestCaseDesc Add packet filter with same ID as previous packet filter.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::SetConfig, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::Activate, RPacketContext::AddPacketFilter, RPacketContext::EnumeratePacketFilters, RPacketContext::GetPacketFilterInfo, RPacketContext::ModifyActiveContext
+ * @SYMTestExpectedResults Pass - Old filter replaced.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify existing packet filter is replaced.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure there is an active primary context. 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Open a new primary context. 
+
+	// Add a TPacketFilterV2 packet filter with iId = 1 to the context using RPacketContext::AddPacketFilter 
+
+	// Add a TPacketFilterV2 packet filter with iId = 1 but with different values for the other field to the context using RPacketContext::AddPacketFilter 
+
+	// Set a valid config for the primary context. 
+
+	// Activate the context. 
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 1
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns packet filter with details equal to those used in second call to RPacketContext::AddPacketFilter
+
+	// Add a TPacketFilterV2 packet filter with iId = 1 but with different values for the other field to the context using RPacketContext::AddPacketFilter 
+
+	// Modify the context 
+
+	// Check RPacketContext::EnumeratePacketFilters returns aCount = 1
+
+	// Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns packet filter with details equal to those used in third call to RPacketContext::AddPacketFilter
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0045::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0045");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0046::CCTSYIntegrationTestPacketContext0046(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0046::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0046::~CCTSYIntegrationTestPacketContext0046()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0046::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0046
+ * @SYMFssID BA/CTSY/PKTC-0046
+ * @SYMTestCaseDesc Remove packet filter specifying invalid ID.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::RemovePacketFilter
+ * @SYMTestExpectedResults Pass - Error returned.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify error is returned.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure there is an active primary context. 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Add a TPacketFilterV2 packet filter with iId = 1 to the context using RPacketContext::AddPacketFilter 
+
+	// Modify the context. 
+
+	// Remove a packet filter with RPacketContext::RemovePacketFilter and aId = 2 
+
+	// Check KErrArgument is returned
+
+	// Remove a packet filter with RPacketContext::RemovePacketFilter and aId = -1 
+
+	// Check KErrArgument is returned
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0046::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0046");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0047::CCTSYIntegrationTestPacketContext0047(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0047::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0047::~CCTSYIntegrationTestPacketContext0047()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0047::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0047
+ * @SYMFssID BA/CTSY/PKTC-0047
+ * @SYMTestCaseDesc Activate a primary context with media auth tokens added but no QoS or packet filters.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::AddMediaAuthorizationL, RPacketContext::GetStatus, RPacketContext::SetConfig
+ * @SYMTestExpectedResults Pass - Context activated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context is activated.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure phone is attached to the packet service. 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Open a primary context 
+
+	// Add a media auth token using RPacketContext::AddMediaAuthorizationL 
+
+	// Set a valid context config using RPacketContext::SetConfig 
+
+	// Activate the context. 
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+
+	// Check RPacketService::GetStatus returns EStatusActive
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0047::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0047");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0048::CCTSYIntegrationTestPacketContext0048(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0048::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0048::~CCTSYIntegrationTestPacketContext0048()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0048::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0048
+ * @SYMFssID BA/CTSY/PKTC-0048
+ * @SYMTestCaseDesc Modify a primary context with media auth tokens added but no QoS or packet filters.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::AddMediaAuthorizationL, RPacketContext::GetStatus, RPacketContext::SetConfig
+ * @SYMTestExpectedResults Pass - Context modified.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context is modified.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure phone is attached to the packet service. 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Open a primary context 
+
+	// Add a media auth token using RPacketContext::AddMediaAuthorizationL 
+
+	// Set a valid context config using RPacketContext::SetConfig 
+
+	// Activate the context. 
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+
+	// Remove media auth token using RPacketContext::RemoveMediaAuthorization and aAuthorizationToken = identifier used in RPacketContext::AddMediaAuthorizationL 
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+
+	// Check RPacketService::GetStatus returns EStatusActive
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0048::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0048");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0049::CCTSYIntegrationTestPacketContext0049(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0049::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0049::~CCTSYIntegrationTestPacketContext0049()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0049::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0049
+ * @SYMFssID BA/CTSY/PKTC-0049
+ * @SYMTestCaseDesc Activate a secondary context with media auth tokens added but no QoS or packet filters.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::SetConfig, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::Activate, RPacketContext::AddMediaAuthorizationL, RPacketContext::RemoveMediaAuthorization
+ * @SYMTestExpectedResults Pass - Context activated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify context is activated.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure there is a primary context active which has been activated with QoS and has a packet filter added to it.
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+ 	iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); 
+
+	// Open a new primary context. 
+	RPacketContext& primaryContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+	// Open a new QoS for primary context
+	RPacketQoS& contextQoS = iEtelSessionMgr.GetPrimaryPacketContextQoSL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);	
+
+	// $CTSYProblem Can't add filters to primary context 
+	//CHECK_EQUALS_L(AddPacketFilterV2ToContextL(primaryContext, 1), KErrNone, _L("RPacketContext::AddPacketFilter returned with error")); 																												
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryContext);
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+		
+	// Open a new secondary context from the primary.
+ 	RPacketContext& secondaryContext = iEtelSessionMgr.GetSecondaryPacketContextL(
+														KMainServer,
+														KMainPhone,
+														KMainPacketService, 
+														KPrimaryPacketContext1,
+														KSecondaryPacketContext1); 
+
+	// Add a media auth token using RPacketContext::AddMediaAuthorizationL 
+	RPacketContext::CTFTMediaAuthorizationV3* mediaAuth = RPacketContext::CTFTMediaAuthorizationV3::NewL();
+	CleanupStack::PushL(mediaAuth);  		
+	TExtEtelRequestStatus requestAddMediaAuthStatus(secondaryContext, EPacketAddMediaAuthorization);
+	CleanupStack::PushL(requestAddMediaAuthStatus);
+	// $CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him 
+    CHECK_TRUE_L(EFalse,_L("$CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him"));
+	secondaryContext.AddMediaAuthorizationL(requestAddMediaAuthStatus, *mediaAuth);	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(requestAddMediaAuthStatus, ETimeMedium), KErrNone, _L("RPacketContext::AddMediaAuthorizationL timed out"));
+    ASSERT_EQUALS(requestAddMediaAuthStatus.Int(), KErrNone, _L("RPacketContext::AddMediaAuthorizationL returned an error"));
+	
+	// Post notifier for RPacketContext::NotifyStatusChange
+	TExtEtelRequestStatus notifyContextStChStatus(secondaryContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	secondaryContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	// Activate packet context with RPacketContext::Activate 
+	TExtEtelRequestStatus contextActivateStatus(secondaryContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	secondaryContext.Activate(contextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+	
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+				
+	secondaryContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);	
+	expectedPacketContextStatus = RPacketContext::EStatusActive;	
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+				
+	// Check RPacketContext::GetStatus returns EStatusActive
+	RPacketContext::TContextStatus getPacketContextStatus;
+	ASSERT_EQUALS(secondaryContext.GetStatus(getPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus for Secondary context returned with an error."));
+	ASSERT_EQUALS(getPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// mediaAuth
+	// requestAddMediaAuthStatus
+	// notifyContextStChStatus
+	// contextActivateStatus
+	CleanupStack::PopAndDestroy(4, mediaAuth);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0049::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0049");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0050::CCTSYIntegrationTestPacketContext0050(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0050::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0050::~CCTSYIntegrationTestPacketContext0050()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0050::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0050
+ * @SYMFssID BA/CTSY/PKTC-0050
+ * @SYMTestCaseDesc Modify a secondary context with media auth tokens added but no QoS or packet filters.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::SetConfig, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::Activate, RPacketContext::AddMediaAuthorizationL, RPacketContext::RemoveMediaAuthorization, RPacketContext::ModifyActiveContext
+ * @SYMTestExpectedResults Pass - Context modified.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify context is modified.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	// Ensure there is a primary context active which has been activated with QoS and has a packet filter added to it. 
+	RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+	
+	//Check if we are on a simulated network
+ 	iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+	
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+	
+	RPacketContext& primaryContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	RPacketQoS& primaryQoS = iEtelSessionMgr.GetPrimaryPacketContextQoSL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);							
+											
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryContext);
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	// Open a new secondary context from the primary. 
+	RPacketContext& secondaryContext = iEtelSessionMgr.GetSecondaryPacketContextL(
+														KMainServer,
+														KMainPhone,
+														KMainPacketService, 
+														KPrimaryPacketContext1,
+														KSecondaryPacketContext1); 
+
+	// Add a media auth token using RPacketContext::AddMediaAuthorizationL 
+	RPacketContext::CTFTMediaAuthorizationV3* mediaAuth = RPacketContext::CTFTMediaAuthorizationV3::NewL();
+	CleanupStack::PushL(mediaAuth);  
+	TExtEtelRequestStatus requestAddMediaAuthStatus(secondaryContext, EPacketAddMediaAuthorization);
+	CleanupStack::PushL(requestAddMediaAuthStatus);
+	// $CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him 
+    CHECK_TRUE_L(EFalse,_L("$CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him"));
+	secondaryContext.AddMediaAuthorizationL(requestAddMediaAuthStatus, *mediaAuth);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(requestAddMediaAuthStatus, ETimeMedium), KErrNone, _L("RPacketContext::AddMediaAuthorizationL timed out"));
+    ASSERT_EQUALS(requestAddMediaAuthStatus.Int(), KErrNone, _L("RPacketContext::AddMediaAuthorizationL returned an error"));	
+
+	// Post notifier for RPacketContext::NotifyStatusChange
+	TExtEtelRequestStatus notifyContextStChStatus(secondaryContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	secondaryContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	// Activate the context.
+	TExtEtelRequestStatus contextActivateStatus(secondaryContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	secondaryContext.Activate(contextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;   
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+				
+	secondaryContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	expectedPacketContextStatus = RPacketContext::EStatusActive;	
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+	RPacketContext::TContextStatus getPacketContextStatus;
+	ASSERT_EQUALS(secondaryContext.GetStatus(getPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus for secondary context returned with an error."));
+	ASSERT_EQUALS(getPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Remove media auth token using RPacketContext::RemoveMediaAuthorization and aAuthorizationToken = identifier used in RPacketContext::AddMediaAuthorizationL 
+	TExtEtelRequestStatus requestRemoveMediaAuthStatus(secondaryContext, EPacketRemoveMediaAuthorization);
+	CleanupStack::PushL(requestRemoveMediaAuthStatus);
+	secondaryContext.RemoveMediaAuthorization(requestRemoveMediaAuthStatus, mediaAuth->iAuthorizationToken); 
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(requestRemoveMediaAuthStatus, ETimeMedium), KErrNone, _L("RPacketContext::RemoveMediaAuthorization timed out"));
+    ASSERT_EQUALS(requestRemoveMediaAuthStatus.Int(), KErrNone, _L("RPacketContext::RemoveMediaAuthorization returned an error"));
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+	ASSERT_EQUALS(secondaryContext.GetStatus(getPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus for secondary context returned with an error."));
+	ASSERT_EQUALS(getPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Check RPacketService::GetStatus returns EStatusActive
+	RPacketService::TStatus packetServiceStatus;
+	ASSERT_EQUALS(packetService.GetStatus(packetServiceStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetServiceStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop:
+	// mediaAuth
+	// requestAddMediaAuthStatus
+	// notifyContextStChStatus
+	// contextActivateStatus
+	// requestRemoveMediaAuthStatus
+	CleanupStack::PopAndDestroy(5, &mediaAuth);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0050::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0050");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0051::CCTSYIntegrationTestPacketContext0051(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0051::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0051::~CCTSYIntegrationTestPacketContext0051()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0051::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0051
+ * @SYMFssID BA/CTSY/PKTC-0051
+ * @SYMTestCaseDesc Activate a primary context with QoS, packet filters and media auth tokens.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::AddMediaAuthorizationL, RPacketContext::SetConfig, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters
+ * @SYMTestExpectedResults Pass - Context activated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context is activated.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure phone is attached to the packet service. 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// ===  Add packet filter ===
+
+	// Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter 
+
+	// ===  Add QoS ===
+
+	// Open a new QoS from the secondary context  
+
+	// Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities 
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+
+	// ===  Add media auth tokens ===
+
+	// Add a media auth token using RPacketContext::AddMediaAuthorizationL 
+
+	// Set a valid context config with RPacketContext::SetConfig 
+
+	// Activate primary context with RPacketContext::Activate 
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+
+	// Check RPacketService::GetStatus returns EStatusActive
+
+	// Check RPacketContext::NotifyStatusChange for the primary context completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus for the primary context returns EStatusActive
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0051::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0051");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0052::CCTSYIntegrationTestPacketContext0052(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0052::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0052::~CCTSYIntegrationTestPacketContext0052()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0052::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0052
+ * @SYMFssID BA/CTSY/PKTC-0052
+ * @SYMTestCaseDesc Modify a primary context with QoS, packet filters and media auth tokens.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketQoS::SetProfileParameters, RPacketQoS::GetProfileParameters, RPacketQoS::NotifyProfileChanged, RPacketQoS::GetProfileCapabilities, RPacketContext::OpenNewContext, RPacketContext::OpenNewSecondaryContext, RPacketContext::SetConfig, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::EnumeratePacketFilters, RPacketContext::GetPacketFilterInfo, RPacketContext::RemovePacketFilter
+ * @SYMTestExpectedResults Pass - Context modified.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify context is modified.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure there is an active primary context. 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// ===  Add packet filter ===
+
+	// Add a TPacketFilterV2 packet filter to the primary context using RPacketContext::AddPacketFilter 
+
+	// ===  Add QoS ===
+
+	// Open a new QoS from the primary context  
+
+	// Get R5 QoS profile capabilities with RPacketQoS::GetProfileCapabilities 
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSR5Requested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+
+	// ===  Add media auth tokens ===
+
+	// Add a media auth token using RPacketContext::AddMediaAuthorizationL 
+
+	// Set a valid context config with RPacketContext::SetConfig 
+
+	// Activate primary context with RPacketContext::Activate 
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+
+	// Check RPacketService::GetStatus returns EStatusActive
+
+	// Check RPacketContext::NotifyStatusChange for the primary context completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus for the primary context returns EStatusActive
+
+	// ===  Remove media auth tokens ===
+
+	// Remove media authorization with RPacketContext::RemoveMediaAuthorization 
+
+	// ===  Add media auth tokens ===
+
+	// Add a media auth token using RPacketContext::AddMediaAuthorizationL 
+
+	// Modify context with RPacketContext::ModifyActiveContext 
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0052::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0052");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0053::CCTSYIntegrationTestPacketContext0053(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0053::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0053::~CCTSYIntegrationTestPacketContext0053()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0053::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0053
+ * @SYMFssID BA/CTSY/PKTC-0053
+ * @SYMTestCaseDesc Activate a secondary context with QoS, packet filters and media auth tokens.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketContext::AddMediaAuthorizationL, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters
+ * @SYMTestExpectedResults Pass - Context activated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify context is activated.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    //Check if we are on a simulated network
+ 	iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+
+	// Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+	
+    // Open primary context
+    RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	// Activate primary context.											
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext);	
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	// Open a new secondary context 
+    RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+
+	// ===  Add packet filter ===
+
+	// Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter 
+	ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 1), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); 
+
+	// ===  Add QoS ===
+
+	// Open a new QoS from the secondary context 
+	RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+
+	// Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities 
+	TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps);
+	CleanupStack::PushL(getProfileCapStatus);
+	RPacketQoS::TQoSCapsGPRS qosCapGprs;
+	TPckg<RPacketQoS::TQoSCapsGPRS> qosCapsGprsPckg(qosCapGprs);
+	packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out."));
+    ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status."));
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+    RPacketQoS::TQoSGPRSRequested qosGprsRequested;
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosGprsReqPckg(qosGprsRequested);
+    FillParametersFromCapabilities(qosGprsRequested,qosCapGprs);
+	TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams);
+	CleanupStack::PushL(setProfileParamStatus);
+	packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out."));
+	ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status."));
+
+	// ===  Add media auth tokens ===
+
+	// Add a media auth token using RPacketContext::AddMediaAuthorizationL 
+	RPacketContext::CTFTMediaAuthorizationV3* mediaAuth = RPacketContext::CTFTMediaAuthorizationV3::NewL();
+	CleanupStack::PushL(mediaAuth);  
+	TExtEtelRequestStatus addMediaAuthStatus(secondaryPacketContext, EPacketAddMediaAuthorization);
+	CleanupStack::PushL(addMediaAuthStatus);
+	// $CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him 
+    CHECK_TRUE_L(EFalse,_L("$CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him"));
+	secondaryPacketContext.AddMediaAuthorizationL(addMediaAuthStatus, *mediaAuth);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(addMediaAuthStatus, ETimeMedium), KErrNone, _L("RPacketContext::AddMediaAuthorizationL timed out"));
+    ASSERT_EQUALS(addMediaAuthStatus.Int(), KErrNone, _L("RPacketContext::AddMediaAuthorizationL returned an error"));
+
+	//Post notifier for RPacketContext::NotifyStatusChange
+	TExtEtelRequestStatus notifyContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	secondaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	// Activate context with RPacketContext::Activate 
+	TExtEtelRequestStatus contextActivateStatus(secondaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	secondaryPacketContext.Activate(contextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	secondaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	expectedPacketContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+	RPacketContext::TContextStatus getPacketContextStatus;
+	ASSERT_EQUALS(secondaryPacketContext.GetStatus(getPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus for primary context returned with an error."));
+	ASSERT_EQUALS(getPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// getProfileCapStatus
+	// setProfileParamStatus
+	// mediaAuth
+	// addMediaAuthStatus
+	// notifyContextStChStatus
+	// contextActivateStatus
+	CleanupStack::PopAndDestroy(6, &getProfileCapStatus);
+
+	return TestStepResult();
+	}
+
+
+TPtrC CCTSYIntegrationTestPacketContext0053::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0053");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0054::CCTSYIntegrationTestPacketContext0054(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0054::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0054::~CCTSYIntegrationTestPacketContext0054()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0054::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0054
+ * @SYMFssID BA/CTSY/PKTC-0054
+ * @SYMTestCaseDesc Modify a secondary context with QoS, packet filters and media auth tokens.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketContext::AddMediaAuthorizationL, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters
+ * @SYMTestExpectedResults Pass - Context modified.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/automatic
+ *
+ * Reason for test: Verify context is modified.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	// ==== Ensure there is an active primary context === 
+
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+    
+    //Check if we are on a simulated network
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+ 	iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone);
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+	// Set the attach mode to EAttachWhenPossible. 
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+    
+    // Open primary context
+    RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	// Activate primary context.											
+	iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,primaryPacketContext);												
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+			
+	// Open a new secondary context 
+    RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+	// ===  Add packet filter ===
+
+	// Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter 
+	RPacketContext::TPacketFilterV2 packetFilterV2;
+    TInt id(1);
+    FillPacketFilter(packetFilterV2, id);
+	RPacketContext::TPacketFilterV2Pckg packetFilterV2pckg(packetFilterV2);
+	TExtEtelRequestStatus addFilterStatus(secondaryPacketContext, EPacketContextAddPacketFilter); 
+    CleanupStack::PushL(addFilterStatus);
+	secondaryPacketContext.AddPacketFilter(addFilterStatus, packetFilterV2pckg);	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(addFilterStatus, ETimeMedium), KErrNone, _L("RPacketContext::AddPacketFilter timed out"));
+    ASSERT_EQUALS(addFilterStatus.Int(), KErrNone, _L("RPacketContext::AddPacketFilter returned an error"));
+	
+	// ===  Add QoS ===
+
+	// Open a new QoS from the secondary context  
+	RPacketQoS& contextQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1,
+											KSecondaryPacketContext1);
+											
+	// Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities 
+	RPacketQoS::TQoSCapsGPRS qosCapsGPRS;
+	TPckg<RPacketQoS::TQoSCapsGPRS> qosCapsGPRSPckg(qosCapsGPRS);	
+	TExtEtelRequestStatus reqQoSProfileCaps(contextQoS, EPacketQoSGetProfileCaps);
+	CleanupStack::PushL(reqQoSProfileCaps);
+	contextQoS.GetProfileCapabilities(reqQoSProfileCaps, qosCapsGPRSPckg);	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqQoSProfileCaps, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out."));						
+	ASSERT_EQUALS(reqQoSProfileCaps.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status."));
+	
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+	RPacketQoS::TQoSGPRSRequested qosReqCapsGPRS;
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosReqCapsGPRSPckg(qosReqCapsGPRS);
+	FillParametersFromCapabilities(qosReqCapsGPRS, qosCapsGPRS);
+	TExtEtelRequestStatus reqStatusSetProfileParams(contextQoS,EPacketQoSSetProfileParams);
+	CleanupStack::PushL(reqStatusSetProfileParams);
+	contextQoS.SetProfileParameters(reqStatusSetProfileParams,qosReqCapsGPRSPckg );	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqStatusSetProfileParams, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out."));						
+	ASSERT_EQUALS(reqStatusSetProfileParams.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status."));
+
+	// ===  Add media auth tokens ===
+
+	// Add a media auth token using RPacketContext::AddMediaAuthorizationL 
+	RPacketContext::CTFTMediaAuthorizationV3* mediaAuth = RPacketContext::CTFTMediaAuthorizationV3::NewL();
+	CleanupStack::PushL(mediaAuth);  		
+	TExtEtelRequestStatus requestAddMediaAuthStatus(secondaryPacketContext, EPacketAddMediaAuthorization);
+	CleanupStack::PushL(requestAddMediaAuthStatus);
+	// $CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him 
+    CHECK_TRUE_L(EFalse,_L("$CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him"));
+	secondaryPacketContext.AddMediaAuthorizationL(requestAddMediaAuthStatus, *mediaAuth);	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(requestAddMediaAuthStatus, ETimeMedium), KErrNone, _L("RPacketContext::AddMediaAuthorizationL timed out"));
+    ASSERT_EQUALS(requestAddMediaAuthStatus.Int(), KErrNone, _L("RPacketContext::AddMediaAuthorizationL returned an error"));
+
+	// Post notifier for RPacketContext::NotifyStatusChange
+	TExtEtelRequestStatus notifyContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyContextStChStatus);
+	RPacketContext::TContextStatus packetContextStatus;
+	secondaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	
+	// Activate context with RPacketContext::Activate 
+	TExtEtelRequestStatus contextActivateStatus(secondaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	secondaryPacketContext.Activate(contextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+	
+	// ===  Check context and service statuses ===
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive
+	RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating;
+   	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+				
+	secondaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus);
+	expectedPacketContextStatus = RPacketContext::EStatusActive;	
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifyContextStChStatus,
+				packetContextStatus, 
+				expectedPacketContextStatus,
+				KErrNone);
+				
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+	RPacketContext::TContextStatus getPacketContextStatus;
+	ASSERT_EQUALS(secondaryPacketContext.GetStatus(getPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus for secondary context returned with an error."));
+	ASSERT_EQUALS(getPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// ===  Remove media auth tokens ===
+
+	// Remove media authorization with RPacketContext::RemoveMediaAuthorization 
+	TExtEtelRequestStatus requestRemoveMediaAuthStatus(secondaryPacketContext, EPacketRemoveMediaAuthorization);
+	CleanupStack::PushL(requestRemoveMediaAuthStatus);
+	secondaryPacketContext.RemoveMediaAuthorization(requestRemoveMediaAuthStatus, mediaAuth->iAuthorizationToken); 
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(requestRemoveMediaAuthStatus, ETimeMedium), KErrNone, _L("RPacketContext::RemoveMediaAuthorization timed out"));
+    ASSERT_EQUALS(requestRemoveMediaAuthStatus.Int(), KErrNone, _L("RPacketContext::RemoveMediaAuthorization returned an error"));
+
+	// ===  Add media auth tokens ===
+
+	// Add a media auth token using RPacketContext::AddMediaAuthorizationL
+	RPacketContext::CTFTMediaAuthorizationV3* secondMediaAuth = RPacketContext::CTFTMediaAuthorizationV3::NewL();
+	CleanupStack::PushL(secondMediaAuth);  
+	TExtEtelRequestStatus requestAddMediaAuthStatusNumberTwo(secondaryPacketContext, EPacketAddMediaAuthorization);
+	CleanupStack::PushL(requestAddMediaAuthStatusNumberTwo);
+	secondaryPacketContext.AddMediaAuthorizationL(requestAddMediaAuthStatusNumberTwo, *secondMediaAuth);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(requestAddMediaAuthStatusNumberTwo, ETimeMedium), KErrNone, _L("RPacketContext::AddMediaAuthorizationL timed out"));
+    ASSERT_EQUALS(requestAddMediaAuthStatusNumberTwo.Int(), KErrNone, _L("RPacketContext::AddMediaAuthorizationL returned an error")); 
+
+	// Modify context with RPacketContext::ModifyActiveContext 
+	TExtEtelRequestStatus requestModifyContext(secondaryPacketContext, EPacketContextModifyActiveContext);
+	CleanupStack::PushL(requestModifyContext);
+	secondaryPacketContext.ModifyActiveContext(requestModifyContext);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(requestModifyContext, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out"));
+    ASSERT_EQUALS(requestModifyContext.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned an error")); 
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// addFilterStatus
+	// reqQoSProfileCaps
+	// reqStatusSetProfileParams
+	// mediaAuth
+	// requestAddMediaAuthStatus
+	// notifyContextStChStatus
+	// contextActivateStatus
+	// requestRemoveMediaAuthStatus
+	// secondMediaAuth
+	// requestAddMediaAuthStatusNumberTwo
+	// requestModifyContext
+	
+	CleanupStack::PopAndDestroy(11, &addFilterStatus);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0054::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0054");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0055::CCTSYIntegrationTestPacketContext0055(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0055::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0055::~CCTSYIntegrationTestPacketContext0055()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0055::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0055
+ * @SYMFssID BA/CTSY/PKTC-0055
+ * @SYMTestCaseDesc Remove media authorization with invalid identifier.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::RemoveMediaAuthorization
+ * @SYMTestExpectedResults Pass - Error returned.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify error is returned.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Open a primary context. 
+
+	// Add a media auth token using RPacketContext::AddMediaAuthorizationL 
+
+	// Remove media authorization with RPacketContext::RemoveMediaAuthorization with invalid identifier in aAuthorizationToken 
+
+	// Check error is returned.
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0055::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0055");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0056::CCTSYIntegrationTestPacketContext0056(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0056::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0056::~CCTSYIntegrationTestPacketContext0056()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0056::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0056
+ * @SYMFssID BA/CTSY/PKTC-0056
+ * @SYMTestCaseDesc Activate a context and download data.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::OpenExistingContext, RPacketContext::GetConnectionSpeed, RPacketContext::GetDataVolumeTransferred
+ * @SYMTestExpectedResults Pass - Context activated. Data transferred advances.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify connection speed and volume data transferred advances realistically.
+ *
+ * @return - TVerdict code
+ */
+	{
+	
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	// Ensure phone is attached to packet service. 
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+	
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+
+	// ===  Send and receive some data and check data transferred advances ===
+	
+	// Activate context with ESOCK server
+	TBuf<140> host(_L("developer.symbian.com"));
+    TBuf<140> page(_L("/main/downloads/papers/IMS_Introduction_Part_1.pdf"));
+    CHTTPDownload *download = new (ELeave) CHTTPDownload(this);
+    CleanupStack::PushL(download);
+    ASSERT_TRUE(download->StartDownloadL(host,page),_L("Download Failed"));
+    
+    // Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName 
+	TInt nifInfoCount = 0;
+	TExtEtelRequestStatus nifInfoStatus(packetService, EPacketGetNifInfo);
+	CleanupStack::PushL(nifInfoStatus);
+	RPacketService::TNifInfoV2 nifInfo;
+	RPacketService::TNifInfoV2Pckg nifInfoPckg(nifInfo);
+	packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetNifInfo timed out."));
+	ASSERT_EQUALS(nifInfoStatus.Int(), KErrNone, _L("RPacketService::GetNifInfo returned with an error."));
+	ASSERT_TRUE(nifInfo.iContextName.Length()>0,_L("RPacketService::GetNifInfo returned invalid context name."));
+	TName contextName = nifInfo.iContextName;
+	
+	// Open a handle on an existing context with OpenExistingContext
+	RPacketContext packetContext;										
+    ASSERT_EQUALS(packetContext.OpenExistingContext(packetService, contextName), KErrNone, _L("RPacketContext::OpenExistingContext returned with an error."));
+  	
+  	// Check RPacketContext::GetConnectionSpeed returns aRate > 0;
+    TExtEtelRequestStatus getConnectionSpeedStatus(packetContext, EPacketContextGetConnectionSpeed);
+	CleanupStack::PushL(getConnectionSpeedStatus);
+	TUint connectionSpeedRate;
+	packetContext.GetConnectionSpeed(getConnectionSpeedStatus, connectionSpeedRate);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getConnectionSpeedStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConnectionSpeed timed out."));
+    ASSERT_EQUALS(getConnectionSpeedStatus.Int(), KErrNone, _L("RPacketContext::GetConnectionSpeed returned with an error."));
+	ASSERT_TRUE(connectionSpeedRate > 0, _L("RPacketContext::GetConnectionSpeed is lower than expected."));
+	
+    // Repeat this section until download is complete and check that iBytesSent and iBytesReceived is higher than the previous
+    RPacketContext::TDataVolume dataVolume;	
+	TUint32 zeroBytesSent = 0;
+	TUint32 zeroBytesReceived = 0;
+	while(download->VerifyDownloading())
+		{
+		packetContext.GetDataVolumeTransferred(dataVolume);	
+		DEBUG_PRINTF2(_L("sent data: %d bytes"), dataVolume.iBytesSent);
+		DEBUG_PRINTF2(_L("received data: %d bytes"), dataVolume.iBytesReceived);
+		User::After(KOneSecond*3);
+		}
+	
+	// Check RPacketContext::GetDataVolumeTransferred returns TDataVolume::iBytesSent is higher than the previous
+	ASSERT_TRUE(dataVolume.iBytesSent > zeroBytesSent, _L("RPacketContext::GetVolumeDataTransferred returned with no increase in bytes sent."));
+	// Check RPacketContext::GetDataVolumeTransferred returns TDataVolume::iBytesReceived is higher than the previous
+	ASSERT_TRUE(dataVolume.iBytesReceived > zeroBytesReceived, _L("RPacketContext::GetVolumeDataTransferred returned with no increase in bytes received."));
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+	
+    StartCleanup();
+	
+	// pop
+	// download
+	// nifInfoStatus
+	// getConnectionSpeedStatus
+	CleanupStack::PopAndDestroy(3, download);
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0056::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0056");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0057::CCTSYIntegrationTestPacketContext0057(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0057::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0057::~CCTSYIntegrationTestPacketContext0057()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0057::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0057
+ * @SYMFssID BA/CTSY/PKTC-0057
+ * @SYMTestCaseDesc Download data with a primary context and a secondary context.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::SetConfig, RPacketContext::Activate, RPacketContext::GetConnectionSpeed, RPacketContext::NotifyConnectionSpeedChange, RPacketContext::NotifyDataTransferred, RPacketContext::GetDataVolumeTransferred, RPacketContext::LoanCommPort, RPacketContext::RecoverCommPort, RPacketQoS::SetProfileParameters, RPacketQoS::GetProfileCapabilities, RPacketQoS::OpenNewQoS, RPacketContext::AddPacketFilter
+ * @SYMTestExpectedResults Pass - Context activated. Data transferred advances.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify connection speed and volume data transferred advances realistically.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+/*
+	
+	// Ensure phone is attached to packet service. 
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+
+
+	// Post notification for service's status change
+	TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange);
+	CleanupStack::PushL(notifyServiceStChStatus);
+	RPacketService::TStatus packetServiceStatus;
+	packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus);
+    
+    // ===  Activate a primary context ===
+
+	// Open a new primary context 
+    // Set a valid context config using RPacketContext::SetConfig 
+
+	// Activate context with ESOCK server
+	TBuf<140> host(_L("developer.symbian.com"));
+    TBuf<140> page(_L("/main/downloads/papers/IMS_Introduction_Part_1.pdf"));
+    CHTTPDownload* download = new (ELeave) CHTTPDownload(this);
+    CleanupStack::PushL(download);
+    ASSERT_TRUE(download->StartDownloadL(host,page),_L("Download Failed"));
+    
+ 	// Get context info	
+	TExtEtelRequestStatus getContextInfo(packetService, EPacketGetContextInfo);
+	CleanupStack::PushL(getContextInfo);
+	RPacketService::TContextInfo contextInfo;
+	TInt index = 0;
+	packetService.GetContextInfo(getContextInfo, index, contextInfo);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfo, ETimeLong), KErrNone, _L("RPacketService::GetContextInfo timed out"));
+	ASSERT_EQUALS(getContextInfo.Int(), KErrNone, _L("RPacketService::GetContextInfo returned an error"));
+	ASSERT_TRUE(contextInfo.iName.Length() > 0, _L("RPacketService::GetContextInfo returned with zero length context name"));
+
+	// Open a handle on an existing context with OpenExistingContext
+	RPacketContext primaryPacketContext;										
+    ASSERT_EQUALS(primaryPacketContext.OpenExistingContext(packetService, contextInfo.iName), KErrNone, _L("RPacketContext::OpenExistingContext returned with an error."));
+
+	// Post notification for RPacketContext::NotifyDataTransferred
+	ERR_PRINTF1(_L("<font color=Orange>@CTSYProblem: RPacketContext::NotifyDataTransferred is not supported by CTSY. All code related to this request is commented out."));
+	//TExtEtelRequestStatus notifyDataTransferredStatus(primaryPacketContext, EPacketContextNotifyDataTransferred);
+	//CleanupStack::PushL(notifyDataTransferredStatus);
+	//RPacketContext::TDataVolume primaryDataVolume;
+	//primaryPacketContext.NotifyDataTransferred(notifyDataTransferredStatus, primaryDataVolume);
+
+	// Check RPacketService::NotifyStatusChange completes with EStatusActive
+	RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange(
+				packetService,
+				notifyServiceStChStatus,
+				packetServiceStatus, 
+				expectedPacketServiceStatus,
+				KErrNone);
+
+	// Check RPacketService::GetStatus returns EStatusActive
+	RPacketService::TStatus pckSrvcStatus;
+	ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error."));
+	ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status."));
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+	RPacketContext::TContextStatus packetContextStatus;
+	ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+	ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status."));
+
+	// Post notification for the RPacketContext::NotifyConnectionSpeedChange
+	TExtEtelRequestStatus notifyConnectionSpeedChangeStatus(primaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifyConnectionSpeedChangeStatus);
+	TUint rate(0);
+	primaryPacketContext.NotifyConnectionSpeedChange(notifyConnectionSpeedChangeStatus, rate);
+
+    // ===  Activate a secondary context ===
+
+	// Activate secondary context with ESOCK server
+	TBuf<140> subHost(_L("developer.symbian.com"));
+    TBuf<140> subPage(_L("/main/downloads/papers/SymbianOSv91/Whats_new_in_Symbian_OS_v9.1.pdf"));
+	TInt port = 80;
+    CHTTPDownload* downloadSecondary = new (ELeave) CHTTPDownload(this);
+    CleanupStack::PushL(downloadSecondary);
+   // ASSERT_TRUE(downloadSecondary->StartDownloadL(subHost, subPage, port, ETrue), _L("Download Failed"));
+    ASSERT_TRUE(downloadSecondary->StartDownloadL(subHost, subPage, port), _L("Download Failed"));
+
+
+ 	// Get secondary context info	
+	index = 1;
+	packetService.GetContextInfo(getContextInfo, index, contextInfo);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfo, ETimeLong), KErrNone, _L("RPacketService::GetContextInfo timed out"));
+	ASSERT_TRUE(contextInfo.iName.Length() > 0, _L("RPacketService::GetContextInfo returned with zero length context name"));
+
+	// Open a handle on an existing secondary context with OpenExistingContext
+	RPacketContext secondaryPacketContext;										
+    ASSERT_EQUALS(secondaryPacketContext.OpenExistingContext(packetService, contextInfo.iName), KErrNone, _L("RPacketContext::OpenExistingContext returned with an error."));
+
+	// Post notification for RPacketContext::NotifyDataTransferred
+	ERR_PRINTF1(_L("<font color=Orange>@CTSYProblem: RPacketContext::NotifyDataTransferred is not supported by CTSY. All code related to this request is commented out."));
+	//TExtEtelRequestStatus notifySecDataTransferredStatus(secondaryPacketContext, EPacketContextNotifyDataTransferred);
+	//CleanupStack::PushL(notifySecDataTransferredStatus);
+	//RPacketContext::TDataVolume secondaryDataVolume;
+	//secondaryPacketContext.NotifyDataTransferred(notifySecDataTransferredStatus, secondaryDataVolume);
+
+	// Post notification for the secondary context connection speed change
+	TExtEtelRequestStatus notifySecConnectionSpeedChangeStatus(secondaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifySecConnectionSpeedChangeStatus);
+	TUint secRate(0);
+	secondaryPacketContext.NotifyConnectionSpeedChange(notifyConnectionSpeedChangeStatus, secRate);
+
+	// ===  Add packet filter ===
+
+	// Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter 
+	ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext,1), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status"));
+
+	// ===  Add QoS ===
+
+	// Open a new QoS from the secondary context  
+	RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1,
+												KSecondaryPacketContext1);
+
+	// Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities 
+	TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps);
+	CleanupStack::PushL(getProfileCapStatus);
+	RPacketQoS::TQoSCapsGPRS qosCapGprs;
+	TPckg<RPacketQoS::TQoSCapsGPRS> qosCapsGprsPckg(qosCapGprs);
+	packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out."));
+    ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status."));
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+    RPacketQoS::TQoSGPRSRequested qosGprsRequested;
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosGprsReqPckg(qosGprsRequested);
+    FillParametersFromCapabilities(qosGprsRequested,qosCapGprs);
+	TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams);
+	CleanupStack::PushL(setProfileParamStatus);
+	packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out."));
+	ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status."));
+
+	// Post notification for context's status change
+	TExtEtelRequestStatus notifySecContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange);
+	CleanupStack::PushL(notifySecContextStChStatus);
+	RPacketContext::TContextStatus secPacketContextStatus;
+	secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);
+
+	// Activate context with RPacketContext::Activate 
+	TExtEtelRequestStatus secContextActivateStatus(secondaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(secContextActivateStatus);
+	secondaryPacketContext.Activate(secContextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(secContextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(secContextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive
+    RPacketContext::TContextStatus expectedSecContextStatus = RPacketContext::EStatusActivating;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifySecContextStChStatus,
+				secPacketContextStatus, 
+				expectedSecContextStatus,
+				KErrNone);
+
+    secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus);	
+    expectedSecContextStatus = RPacketContext::EStatusActive;
+	iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
+				secondaryPacketContext,
+				notifySecContextStChStatus,
+				secPacketContextStatus, 
+				expectedSecContextStatus,
+				KErrNone);
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+	ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error."));
+    ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusActive, _L("Packet Context's status expected to be EStatusActive but is not."));
+    
+    // Loan comm port to the client with RPacketContext::LoanCommPort 
+
+	// ===  Send and receive some data and check data transferred advances ===
+
+	// Send some data and receive some data to which would go to the primary and the secondary context depending on packet filter values 
+
+	// Check RPacketContext::NotifyDataTransferred for primary context completes with TDataVolume::iBytesSent > 0
+    // @CTSYProblem: RPacketContext::NotifyDataTransferred is not supported by CTSY. All code related to this request is commented out.
+	//ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyDataTransferredStatus, ETimeMedium), KErrNone, _L("RPacketContext::NotifyDataTransferred did not complete."));
+    //ASSERT_EQUALS(notifyDataTransferredStatus.Int(), KErrNone, _L("RPacketContext::NotifyDataTransferred returned with error status."));
+    //ASSERT_TRUE(primaryDataVolume.iBytesSent > 0, _L("RPacketContext::NotifyDataTransferred returned with zero iBytesSent."));
+
+	// Check RPacketContext::NotifyDataTransferred for primary context completes with TDataVolume::iBytesReceived > 0
+    // @CTSYProblem: RPacketContext::NotifyDataTransferred is not supported by CTSY. All code related to this request is commented out.
+    //ASSERT_TRUE(primaryDataVolume.iBytesReceived > 0, _L("RPacketContext::NotifyDataTransferred returned with zero iBytesReceived."));
+
+	// Check RPacketContext::GetConnectionSpeed for primary context returns aRate > 0
+    TExtEtelRequestStatus getConnectionSpeedStatus(primaryPacketContext, EPacketContextGetConnectionSpeed);
+	CleanupStack::PushL(getConnectionSpeedStatus);
+	TUint connectionSpeedRate;
+	primaryPacketContext.GetConnectionSpeed(getConnectionSpeedStatus, connectionSpeedRate);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getConnectionSpeedStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConnectionSpeed timed out."));
+    ASSERT_EQUALS(getConnectionSpeedStatus.Int(), KErrNone, _L("RPacketContext::GetConnectionSpeed failed."));
+	ASSERT_TRUE(connectionSpeedRate > 0, _L("RPacketContext::GetConnectionSpeed is lower than expected."));
+
+	// Check RPacketContext::NotifyConnectionSpeedChange for primary context returns aRate > 0
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyConnectionSpeedChangeStatus, ETimeMedium), KErrNone, _L("RPacketContext::NotifyConnectionSpeedChange timed out."));
+    ASSERT_EQUALS(notifyConnectionSpeedChangeStatus.Int(), KErrNone, _L("RPacketContext::NotifyConnectionSpeedChange failed."));
+	ASSERT_TRUE(rate > 0, _L("RPacketContext::NotifyConnectionSpeedChange returns aRate = 0."));
+
+	// Check RPacketContext::NotifyDataTransferred for secondary context completes with TDataVolume::iBytesSent > 0
+    // @CTSYProblem: RPacketContext::NotifyDataTransferred is not supported by CTSY. All code related to this request is commented out.
+	//ASSERT_EQUALS(WaitForRequestWithTimeOut(notifySecDataTransferredStatus, ETimeMedium), KErrNone, _L("RPacketContext::NotifyDataTransferred did not complete."));
+    //ASSERT_EQUALS(notifySecDataTransferredStatus.Int(), KErrNone, _L("RPacketContext::NotifyDataTransferred returned with error status."));
+    //ASSERT_TRUE(secondaryDataVolume.iBytesSent > 0, _L("RPacketContext::NotifyDataTransferred returned with zero iBytesSent."));
+
+	// Check RPacketContext::NotifyDataTransferred for secondary context completes with TDataVolume::iBytesReceived > 0
+    // @CTSYProblem: RPacketContext::NotifyDataTransferred is not supported by CTSY. All code related to this request is commented out.
+    //ASSERT_TRUE(secondaryDataVolume.iBytesReceived > 0, _L("RPacketContext::NotifyDataTransferred returned with zero iBytesReceived."));
+
+	// Check RPacketContext::GetConnectionSpeed for secondary context returns aRate > 0
+    TExtEtelRequestStatus getSecConnectionSpeedStatus(secondaryPacketContext, EPacketContextGetConnectionSpeed);
+	CleanupStack::PushL(getSecConnectionSpeedStatus);
+	secondaryPacketContext.GetConnectionSpeed(getSecConnectionSpeedStatus, connectionSpeedRate);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getSecConnectionSpeedStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConnectionSpeed timed out."));
+    ASSERT_EQUALS(getSecConnectionSpeedStatus.Int(), KErrNone, _L("RPacketContext::GetConnectionSpeed failed."));
+	ASSERT_TRUE(connectionSpeedRate > 0, _L("RPacketContext::GetConnectionSpeed is lower than expected."));
+
+	// Check RPacketContext::NotifyConnectionSpeedChange for secondary context returns aRate > 0
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifySecConnectionSpeedChangeStatus, ETimeMedium), KErrNone, _L("RPacketContext::NotifyConnectionSpeedChange timed out."));
+    ASSERT_EQUALS(notifySecConnectionSpeedChangeStatus.Int(), KErrNone, _L("RPacketContext::NotifyConnectionSpeedChange failed."));
+	ASSERT_TRUE(secRate > 0, _L("RPacketContext::NotifyConnectionSpeedChange returns aRate = 0."));
+
+	// Repeat this section 10 times and check that iBytesSent and iBytesReceived is higher than the previous 
+	RPacketContext::TDataVolume priDataVolume;
+    RPacketContext::TDataVolume secDataVolume;	
+	TUint32 primaryLastBytesSent(0);
+	TUint32 primaryLastBytesReceived(0);
+	TUint32 secondaryLastBytesSent(0);
+	TUint32 secondaryLastBytesReceived(0);
+
+	while(download->VerifyDownloading())
+		{
+		// Check RPacketContext::GetDataVolumeTransferred for primary context returns TDataVolume::iBytesSent is higher than the previous
+		primaryPacketContext.GetDataVolumeTransferred(priDataVolume);	
+		ASSERT_TRUE(priDataVolume.iBytesSent > primaryLastBytesSent, _L("Primary packet context iBytesSend value is not higher than the previous iBytesSend value"));
+		primaryLastBytesSent = priDataVolume.iBytesSent;
+		
+		// Check RPacketContext::GetDataVolumeTransferred for primary context returns TDataVolume::iBytesReceived is higher than the previous
+		ASSERT_TRUE(priDataVolume.iBytesReceived > primaryLastBytesReceived, _L("Primary packet context iBytesReceived value is not higher than the previous iBytesReceived value"));
+		primaryLastBytesReceived = priDataVolume.iBytesReceived;
+		
+		// Check RPacketContext::GetDataVolumeTransferred for secondary context returns TDataVolume::iBytesSent is higher than the previous
+		secondaryPacketContext.GetDataVolumeTransferred(secDataVolume);	
+		ASSERT_TRUE(secDataVolume.iBytesSent > secondaryLastBytesSent, _L("Secondary packet context iBytesSend value is not higher than the previous iBytesSend value"));
+		secondaryLastBytesSent = secDataVolume.iBytesSent;
+		
+		// Check RPacketContext::GetDataVolumeTransferred for secondary context returns TDataVolume::iBytesReceived is higher than the previous
+		ASSERT_TRUE(secDataVolume.iBytesReceived > secondaryLastBytesReceived, _L("Secondary packet context iBytesReceived value is not higher than the previous iBytesReceived value"));
+		secondaryLastBytesReceived = secDataVolume.iBytesReceived;
+		
+		DEBUG_PRINTF2(_L("Primary context sent data: %d bytes"), primaryLastBytesSent);
+		DEBUG_PRINTF2(_L("Primary context received data: %d bytes"), primaryLastBytesReceived);
+		DEBUG_PRINTF2(_L("Secondary context sent data: %d bytes"), secondaryLastBytesSent);
+		DEBUG_PRINTF2(_L("Secondary context received data: %d bytes"), secondaryLastBytesReceived);
+		User::After(KOneSecond*3);
+		}
+
+	// Release QoS
+	iEtelSessionMgr.ReleaseSecondaryPacketContextQoS(KMainServer,
+											KMainPhone, 
+											KMainPacketService, 
+											KPrimaryPacketContext1,
+											KSecondaryPacketContext1);
+
+	// Release packet contexts
+	iEtelSessionMgr.ReleaseSecondaryPacketContext(KMainServer,
+											KMainPhone, 
+											KMainPacketService, 
+											KPrimaryPacketContext1,
+											KSecondaryPacketContext1);
+
+	// Release primary packet context
+	iEtelSessionMgr.ReleasePrimaryPacketContext(KMainServer,
+											KMainPhone, 
+											KMainPacketService, 
+											KPrimaryPacketContext1);
+
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// notifyServiceStChStatus
+	// download
+	// getContextInfo
+	// notifyDataTransferredStatus (@CTSYProblem, commented out)
+	// notifyConnectionSpeedChangeStatus
+	// downloadSecondary
+	// notifySecDataTransferredStatus (@CTSYProblem, commented out)
+	// notifySecConnectionSpeedChangeStatus
+	// getProfileCapStatus
+	// setProfileParamStatus
+	// notifySecContextStChStatus
+	// secContextActivateStatus
+	// getConnectionSpeedStatus
+	// getSecConnectionSpeedStatus
+	CleanupStack::PopAndDestroy(12, &notifyServiceStChStatus);
+*/
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0057::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0057");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0058::CCTSYIntegrationTestPacketContext0058(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0058::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0058::~CCTSYIntegrationTestPacketContext0058()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0058::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0058
+ * @SYMFssID BA/CTSY/PKTC-0058
+ * @SYMTestCaseDesc Activate a PDP context with the requested QOS equal to the subscribed QoS.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketQoS::NotifyProfileChanged, RPacketQoS::GetProfileParameters, RPacketContext::SetConfig, RPacketQoS::SetProfileParameters, RPacketQoS::GetProfileCapabilities
+ * @SYMTestExpectedResults Pass - A PDP context with subscribed QoS could be activated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify negotiated QoS same as that requested.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+    // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+	
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+
+   	// Get network info from phone
+	TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork);
+	CleanupStack::PushL(getNetworkStatus);
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info);
+	phone.GetCurrentNetwork(getNetworkStatus, infopckg);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out"));
+	ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error"));
+
+	TPtrC apn, user, pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd);
+
+	// == Activate a PDP context with the requested QOS equal to the subscribed QoS == 
+	DEBUG_PRINTF1(_L("== GPRS =="));
+	DoTest0058L(apn, user, pwd, EQoSGPRS);
+
+	// ===  Repeat test for R99_R4 ===
+	// Repeat test with TQoSCapsR99_R4 instead of TQoSCapsGPRS, TQoSR99_R4Requested instead of TQoSGPRSRequested and TQoSR99_R4Negotiated instead of TQoSGPRSNegotiated 
+	DEBUG_PRINTF1(_L("== R99_R4 =="));
+	DoTest0058L(apn, user, pwd, EQoSR4);
+
+	// ===  Repeat test for R5 ===
+	// Repeat test with TQoSCapsR5 instead of TQoSCapsGPRS, TQoSR5Requested instead of TQoSGPRSRequested, and TQoSR5Negotiated instead of TQoSGPRSNegotiated 
+	DEBUG_PRINTF1(_L("== R5 =="));
+	DoTest0058L(apn, user, pwd, EQoSR5);
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// getNetworkStatus
+	CleanupStack::PopAndDestroy(1, &getNetworkStatus);
+	
+	return TestStepResult();
+	}
+
+
+
+
+void CCTSYIntegrationTestPacketContext0058::DoTest0058L(TPtrC& aApn, TPtrC& aUser, TPtrC& aPwd, TInt aQoSCapType)
+/**
+ * Activate a PDP context with the requested QOS equal to the subscribed QoS.
+ * @param aNWType Gprs / R99_R4 / R5.
+ */
+	{
+	
+	// Open a new primary context. 
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	// Open a new primary context QoS
+	RPacketQoS& contextQoS = iEtelSessionMgr.GetPrimaryPacketContextQoSL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	// Get the QoS profile capabilities with RPacketQoS::GetProfileCapabilities with aProfileCaps of type TQoSCapsGPRS/TQoSCapsR99_R4/TQoSCapsR5.
+	RPacketQoS::TQoSCapsGPRS qosCapsGPRS;
+	RPacketQoS::TQoSCapsR99_R4 qosCapsR99;
+	RPacketQoS::TQoSCapsR5 qosCapsR5;
+
+	switch(aQoSCapType)
+		{
+			case EQoSGPRS:
+					GetProfileCapsL(contextQoS, qosCapsGPRS);
+					break;
+					
+			case EQoSR4:		
+					GetProfileCapsL(contextQoS, qosCapsR99);
+					break;
+					
+			case EQoSR5:		
+					GetProfileCapsL(contextQoS, qosCapsR5);					
+					break;
+		}
+
+	// Set the minimum requested QoS profile parameters to lower than what was returned from GetProfileCapabilities using RPacketQoS::SetProfileParameters
+	// with aProfile of type TQoSGPRSRequested/TQoSR99_R4Requested/TQoSR5Requested.
+	// Set all iMin... to a lower value than that returned by GetProfileCapabilities and all iReq... to the same value as that returned by GetProfileCapabilities. 
+	TExtEtelRequestStatus setProfileParametersStatus(contextQoS, EPacketQoSSetProfileParams);
+	CleanupStack::PushL(setProfileParametersStatus);
+	RPacketQoS::TQoSGPRSRequested qoSGPRSRequested;
+	TPckg<RPacketQoS::TQoSGPRSRequested> qoSGPRSRequestedPkg(qoSGPRSRequested);
+	RPacketQoS::TQoSR99_R4Requested qoSR99Requested;
+	TPckg<RPacketQoS::TQoSR99_R4Requested> qoSR99RequestedPkg(qoSR99Requested);
+	RPacketQoS::TQoSR5Requested qoSR5Requested;
+	TPckg<RPacketQoS::TQoSR5Requested> qoSR5RequestedPkg(qoSR5Requested);
+	RPacketQoS::TBitRate bitRate;
+	bitRate.iDownlinkRate = 0;
+	bitRate.iUplinkRate = 0;
+
+	switch(aQoSCapType)
+		{
+		case EQoSGPRS: // GPRS
+			qoSGPRSRequested.iMinDelay 			= RPacketQoS::EUnspecifiedDelayClass;
+			qoSGPRSRequested.iMinMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+			qoSGPRSRequested.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+			qoSGPRSRequested.iMinPrecedence 	= RPacketQoS::EUnspecifiedPrecedence;
+			qoSGPRSRequested.iMinReliability 	= RPacketQoS::EUnspecifiedReliabilityClass;
+			
+			qoSGPRSRequested.iReqDelay 			= RPacketQoS::EDelayClass3;
+			qoSGPRSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughputBestEffort;
+			qoSGPRSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput8000;
+			qoSGPRSRequested.iReqPrecedence 	= RPacketQoS::EPriorityMediumPrecedence;
+			qoSGPRSRequested.iReqReliability 	= RPacketQoS::EReliabilityClass3;
+			contextQoS.SetProfileParameters(setProfileParametersStatus ,qoSGPRSRequestedPkg);
+			break;
+		
+		case EQoSR4: // R99_R4
+			qoSR99Requested.iMinTrafficClass			= RPacketQoS::ETrafficClassUnspecified;
+			qoSR99Requested.iMinDeliveryOrderReqd		= RPacketQoS::EDeliveryOrderUnspecified;
+			qoSR99Requested.iMinDeliverErroneousSDU		= RPacketQoS::EErroneousSDUDeliveryUnspecified;
+			qoSR99Requested.iMinAcceptableMaxSDUSize	= 10;
+			qoSR99Requested.iMinAcceptableMaxRate		= bitRate;
+			qoSR99Requested.iMaxBER						= RPacketQoS::EBERUnspecified;
+			qoSR99Requested.iMaxSDUErrorRatio			= RPacketQoS::ESDUErrorRatioUnspecified;
+			qoSR99Requested.iMinTrafficHandlingPriority	= RPacketQoS::ETrafficPriorityUnspecified;
+			qoSR99Requested.iMaxTransferDelay			= 4000;
+			qoSR99Requested.iMinGuaranteedRate			= bitRate;
+
+			qoSR99Requested.iReqTrafficClass			= RPacketQoS::ETrafficClassInteractive;
+			qoSR99Requested.iReqDeliveryOrderReqd		= RPacketQoS::EDeliveryOrderNotRequired;
+			qoSR99Requested.iReqDeliverErroneousSDU		= RPacketQoS::EErroneousSDUDeliveryNotRequired;
+			qoSR99Requested.iReqMaxSDUSize				= 1500;
+			bitRate.iDownlinkRate = 104;
+			bitRate.iUplinkRate = 104;
+			qoSR99Requested.iReqMaxRate					= bitRate;
+			qoSR99Requested.iReqBER			 			= RPacketQoS::EBERFourPerThousand;
+			qoSR99Requested.iReqSDUErrorRatio 			= RPacketQoS::ESDUErrorRatioOnePerThousand;
+			qoSR99Requested.iReqTrafficHandlingPriority	= RPacketQoS::ETrafficPriority3;
+			qoSR99Requested.iReqTransferDelay			= 1600;
+			bitRate.iDownlinkRate = 10;
+			bitRate.iUplinkRate = 10;
+			qoSR99Requested.iReqGuaranteedRate			= bitRate;
+			contextQoS.SetProfileParameters(setProfileParametersStatus ,qoSR99RequestedPkg);
+			break;
+
+		case EQoSR5: // R5
+			qoSR5Requested.iMinTrafficClass				= RPacketQoS::ETrafficClassUnspecified;
+			qoSR5Requested.iMinDeliveryOrderReqd		= RPacketQoS::EDeliveryOrderUnspecified;
+			qoSR5Requested.iMinDeliverErroneousSDU		= RPacketQoS::EErroneousSDUDeliveryUnspecified;
+			qoSR5Requested.iMinAcceptableMaxSDUSize		= 10;
+			qoSR5Requested.iMinAcceptableMaxRate		= bitRate;
+			qoSR5Requested.iMaxBER						= RPacketQoS::EBERUnspecified;
+			qoSR5Requested.iMaxSDUErrorRatio			= RPacketQoS::ESDUErrorRatioUnspecified;
+			qoSR5Requested.iMinTrafficHandlingPriority	= RPacketQoS::ETrafficPriorityUnspecified;
+			qoSR5Requested.iMaxTransferDelay			= 0;
+			qoSR5Requested.iMinGuaranteedRate			= bitRate;
+			
+			qoSR5Requested.iReqTrafficClass				= RPacketQoS::ETrafficClassInteractive;
+			qoSR5Requested.iReqDeliveryOrderReqd		= RPacketQoS::EDeliveryOrderNotRequired;
+			qoSR5Requested.iReqDeliverErroneousSDU		= RPacketQoS::EErroneousSDUDeliveryNotRequired;
+			qoSR5Requested.iReqMaxSDUSize				= 1500;
+			bitRate.iDownlinkRate = 64;
+			bitRate.iUplinkRate = 16;
+			qoSR5Requested.iReqMaxRate					= bitRate;
+			qoSR5Requested.iReqBER			 			= RPacketQoS::EBERFourPerThousand;
+			qoSR5Requested.iReqSDUErrorRatio 			= RPacketQoS::ESDUErrorRatioOnePerTenThousand;
+			qoSR5Requested.iReqTrafficHandlingPriority	= RPacketQoS::ETrafficPriority3;
+			qoSR5Requested.iReqTransferDelay			= 1600;
+			qoSR5Requested.iReqGuaranteedRate			= bitRate;
+			qoSR5Requested.iSignallingIndication		= qosCapsR5.iSignallingIndication;
+			qoSR5Requested.iSourceStatisticsDescriptor	= RPacketQoS::ESourceStatisticsDescriptorUnknown;
+			contextQoS.SetProfileParameters(setProfileParametersStatus ,qoSR5RequestedPkg);
+			break;
+		}
+
+    ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParametersStatus, ETimeLong), KErrNone, _L("RPacketQoS::SetProfileParameters timed out"));
+	ASSERT_EQUALS(setProfileParametersStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with an error"));
+
+	// Set the context config with RPacketContext::SetConfig 
+	TExtEtelRequestStatus setConfigStatus(primaryPacketContext, EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus);
+	RPacketContext::TContextConfigGPRS setConfigGprs;
+	TPckg<RPacketContext::TContextConfigGPRS> setConfigPkgGprs(setConfigGprs);
+	RPacketContext::TContextConfigR99_R4 setConfigR99;
+	TPckg<RPacketContext::TContextConfigR99_R4> setConfigPkgR99(setConfigR99);
+	RPacketContext::TContextConfig_R5 setConfigR5;
+	TPckg<RPacketContext::TContextConfig_R5> setConfigPkgR5(setConfigR5);
+
+	switch(aQoSCapType)
+		{
+		case EQoSGPRS: // GPRS
+			setConfigGprs.iAccessPointName.Copy(aApn);
+			setConfigGprs.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser);
+			setConfigGprs.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd);
+			primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgGprs);
+			break;
+		
+		case EQoSR4: // R99_R4
+			setConfigR99.iAccessPointName.Copy(aApn);
+			setConfigR99.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser);
+			setConfigR99.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd);
+			primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgR99);
+			break;
+
+		case EQoSR5: // R5
+			setConfigR5.iAccessPointName.Copy(aApn);
+			setConfigR5.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser);
+			setConfigR5.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd);
+			primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgR5);
+			break;
+		}
+		
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out"));
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned with an error"));
+
+	// Post notification for RPacketQoS::NotifyProfileChanged
+	TExtEtelRequestStatus notifyProfileChangedStatus(contextQoS, EPacketQoSNotifyProfileChanged);
+	CleanupStack::PushL(notifyProfileChangedStatus);
+	RPacketQoS::TQoSGPRSNegotiated qoSGPRSNegotiated;
+	TPckg<RPacketQoS::TQoSGPRSNegotiated> qoSGPRSNegotiatedPkg(qoSGPRSNegotiated);
+	RPacketQoS::TQoSR99_R4Negotiated qoSR99Negotiated;
+	TPckg<RPacketQoS::TQoSR99_R4Negotiated> qoSR99NegotiatedPkg(qoSR99Negotiated);
+	RPacketQoS::TQoSR5Negotiated qoSR5Negotiated;
+	TPckg<RPacketQoS::TQoSR5Negotiated> qoSR5NegotiatedPkg(qoSR5Negotiated);
+
+	switch(aQoSCapType)
+		{
+		case EQoSGPRS: // GPRS
+			contextQoS.NotifyProfileChanged(notifyProfileChangedStatus, qoSGPRSNegotiatedPkg);
+			break;
+		
+		case EQoSR4: // R99_R4
+			contextQoS.NotifyProfileChanged(notifyProfileChangedStatus, qoSR99NegotiatedPkg);
+			break;
+
+		case EQoSR5: // R5
+			contextQoS.NotifyProfileChanged(notifyProfileChangedStatus, qoSR5NegotiatedPkg);
+			break;
+		}
+
+	// Activate the primary context with RPacketContext::Activate. 
+	TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	primaryPacketContext.Activate(contextActivateStatus);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+
+	// Check RPacketQoS::NotifyProfileChanged returns aProfile of type TQoSGPRSNegotiated/TQoSR99_R4Negotiated/TQoSR5Negotiated with same as the requested values used in SetProfileParameters.
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyProfileChangedStatus, ETimeLong), KErrNone, _L("RPacketQoS::NotifyProfileChanged timed out"));
+	ASSERT_EQUALS(notifyProfileChangedStatus.Int(), KErrNone, _L("RPacketQoS::NotifyProfileChanged returned with error status."));
+
+	switch(aQoSCapType)
+		{
+		case EQoSGPRS: // GPRS
+			ASSERT_EQUALS(qoSGPRSNegotiated.iDelay, qoSGPRSRequested.iReqDelay, _L("RPacketQoS::NotifyProfileChanged did not return with same iDelay as used in SetProfileParameters"));	
+			ASSERT_EQUALS(qoSGPRSNegotiated.iMeanThroughput, qoSGPRSRequested.iReqMeanThroughput, _L("RPacketQoS::NotifyProfileChanged did not return with same iMeanThroughput as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSGPRSNegotiated.iPeakThroughput, qoSGPRSRequested.iReqPeakThroughput, _L("RPacketQoS::NotifyProfileChanged did not return with same iPeakThroughput as used in SetProfileParameters"));	
+			ASSERT_EQUALS(qoSGPRSNegotiated.iPrecedence, qoSGPRSRequested.iReqPrecedence, _L("RPacketQoS::NotifyProfileChanged did not return with same iPrecedence as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSGPRSNegotiated.iReliability, qoSGPRSRequested.iReqReliability, _L("RPacketQoS::NotifyProfileChanged did not return with same iReliability as used in SetProfileParameters"));
+			break;
+		
+		case EQoSR4: // R99_R4
+			ASSERT_EQUALS(qoSR99Negotiated.iTrafficClass, qoSR99Requested.iReqTrafficClass, _L("RPacketQoS::NotifyProfileChanged did not return with same iTrafficClass as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iDeliveryOrderReqd, qoSR99Requested.iReqDeliveryOrderReqd,  _L("RPacketQoS::NotifyProfileChanged did not return with same iDeliveryOrderReqd as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iDeliverErroneousSDU, qoSR99Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::NotifyProfileChanged did not return with same iDeliverErroneousSDU as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iMaxSDUSize, qoSR99Requested.iReqMaxSDUSize, _L("RPacketQoS::NotifyProfileChanged did not return with same iMaxSDUSize as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iMaxRate.iDownlinkRate, qoSR99Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iMaxRate.iDownlinkRate as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iMaxRate.iUplinkRate, qoSR99Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iMaxRate.iUplinkRate as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iBER, qoSR99Requested.iReqBER, _L("RPacketQoS::NotifyProfileChanged did not return with same iBER as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iSDUErrorRatio, qoSR99Requested.iReqSDUErrorRatio, _L("RPacketQoS::NotifyProfileChanged did not return with same iSDUErrorRatio as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iTrafficHandlingPriority, qoSR99Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::NotifyProfileChanged did not return with same iTrafficHandlingPriority as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iTransferDelay, qoSR99Requested.iReqTransferDelay, _L("RPacketQoS::NotifyProfileChanged did not return with same iTransferDelay as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iGuaranteedRate.iDownlinkRate, qoSR99Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iGuaranteedRate.iDownlinkRate as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iGuaranteedRate.iUplinkRate, qoSR99Requested.iReqGuaranteedRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iGuaranteedRate.iUplinkRate as used in SetProfileParameters"));
+			break;
+
+		case EQoSR5: // R5
+			ASSERT_EQUALS(qoSR5Negotiated.iTrafficClass, qoSR5Requested.iReqTrafficClass, _L("RPacketQoS::NotifyProfileChanged did not return with same iTrafficClass as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iDeliveryOrderReqd, qoSR5Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::NotifyProfileChanged did not return with same iDeliveryOrderReqd as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iDeliverErroneousSDU, qoSR5Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::NotifyProfileChanged did not return with same iDeliverErroneousSDU as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iMaxSDUSize, qoSR5Requested.iReqMaxSDUSize, _L("RPacketQoS::NotifyProfileChanged did not return with same iMaxSDUSize as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iMaxRate.iDownlinkRate, qoSR5Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iMaxRate.iDownlinkRate as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iMaxRate.iUplinkRate, qoSR5Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iMaxRate.iUplinkRate as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iBER, qoSR5Requested.iReqBER, _L("RPacketQoS::NotifyProfileChanged did not return with same iBER as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iSDUErrorRatio, qoSR5Requested.iReqSDUErrorRatio, _L("RPacketQoS::NotifyProfileChanged did not return with same iSDUErrorRatio as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iTrafficHandlingPriority, qoSR5Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::NotifyProfileChanged did not return with same iTrafficHandlingPriority as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iTransferDelay, qoSR5Requested.iReqTransferDelay, _L("RPacketQoS::NotifyProfileChanged did not return with same iTransferDelay as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iGuaranteedRate.iDownlinkRate, qoSR5Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iGuaranteedRate.iDownlinkRate as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iGuaranteedRate.iUplinkRate, qoSR5Requested.iReqGuaranteedRate.iUplinkRate,  _L("RPacketQoS::NotifyProfileChanged did not return with same iGuaranteedRate.iUplinkRate as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iSignallingIndication, qoSR5Requested.iSignallingIndication, _L("RPacketQoS::NotifyProfileChanged did not return with same iSignallingIndication as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iSourceStatisticsDescriptor, qoSR5Requested.iSourceStatisticsDescriptor, _L("RPacketQoS::NotifyProfileChanged did not return with same iSourceStatisticsDescriptor as used in SetProfileParameters"));
+			break;
+		}
+
+	// Check RPacketQoS::GetProfileParameters returns aProfile of type TQoSGPRSNegotiated/TQoSR99_R4Negotiated/TQoSR5Negotiated with same as the requested values used in SetProfileParameters.
+	TExtEtelRequestStatus getProfileParametersStatus(contextQoS, EPacketQoSGetProfileParams);
+	CleanupStack::PushL(getProfileParametersStatus);
+
+	switch(aQoSCapType)
+		{
+		case EQoSGPRS: // GPRS
+			contextQoS.GetProfileParameters(getProfileParametersStatus, qoSGPRSNegotiatedPkg);
+			break;
+		
+		case EQoSR4: // R99_R4
+			contextQoS.GetProfileParameters(getProfileParametersStatus, qoSR99NegotiatedPkg);
+			break;
+
+		case EQoSR5: // R5
+			contextQoS.GetProfileParameters(getProfileParametersStatus, qoSR5NegotiatedPkg);
+			break;
+		}
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileParametersStatus, ETimeLong), KErrNone, _L("RPacketQoS::GetProfileParameters timed out"));
+	ASSERT_EQUALS(getProfileParametersStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileParameters returned with an error"));
+
+	switch(aQoSCapType)
+		{
+		case EQoSGPRS: // GPRS
+			ASSERT_EQUALS(qoSGPRSNegotiated.iDelay, qoSGPRSRequested.iReqDelay, _L("RPacketQoS::NotifyProfileChanged did not return with same iDelay as used in SetProfileParameters"));	
+			ASSERT_EQUALS(qoSGPRSNegotiated.iMeanThroughput, qoSGPRSRequested.iReqMeanThroughput, _L("RPacketQoS::NotifyProfileChanged did not return with same iMeanThroughput as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSGPRSNegotiated.iPeakThroughput, qoSGPRSRequested.iReqPeakThroughput, _L("RPacketQoS::NotifyProfileChanged did not return with same iPeakThroughput as used in SetProfileParameters"));	
+			ASSERT_EQUALS(qoSGPRSNegotiated.iPrecedence, qoSGPRSRequested.iReqPrecedence, _L("RPacketQoS::NotifyProfileChanged did not return with same iPrecedence as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSGPRSNegotiated.iReliability, qoSGPRSRequested.iReqReliability, _L("RPacketQoS::NotifyProfileChanged did not return with same iReliability as used in SetProfileParameters"));
+			break;
+		
+		case EQoSR4: // R99_R4
+			ASSERT_EQUALS(qoSR99Negotiated.iTrafficClass, qoSR99Requested.iReqTrafficClass, _L("RPacketQoS::GetProfileParameters did not return with same iTrafficClass as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iDeliveryOrderReqd, qoSR99Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::GetProfileParameters did not return with same iDeliveryOrderReqd as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iDeliverErroneousSDU, qoSR99Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::GetProfileParameters did not return with same iDeliverErroneousSDU as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iMaxSDUSize, qoSR99Requested.iReqMaxSDUSize, _L("RPacketQoS::GetProfileParameters did not return with same iMaxSDUSize as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iMaxRate.iDownlinkRate, qoSR99Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iMaxRate.iDownlinkRate as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iMaxRate.iUplinkRate, qoSR99Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iMaxRate.iUplinkRate as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iBER, qoSR99Requested.iReqBER, _L("RPacketQoS::GetProfileParameters did not return with same iBER as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iSDUErrorRatio, qoSR99Requested.iReqSDUErrorRatio, _L("RPacketQoS::GetProfileParameters did not return with same iSDUErrorRatio as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iTrafficHandlingPriority, qoSR99Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::GetProfileParameters did not return with same iTrafficHandlingPriority as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iTransferDelay, qoSR99Requested.iReqTransferDelay, _L("RPacketQoS::GetProfileParameters did not return with same iTransferDelay as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iGuaranteedRate.iDownlinkRate, qoSR99Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iGuaranteedRate.iDownlinkRate as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR99Negotiated.iGuaranteedRate.iUplinkRate,qoSR99Requested.iReqGuaranteedRate.iUplinkRate,  _L("RPacketQoS::GetProfileParameters did not return with same iGuaranteedRate.iUplinkRate as used in SetProfileParameters"));
+			break;
+
+		case EQoSR5: // R5
+			ASSERT_EQUALS(qoSR5Negotiated.iTrafficClass, qoSR5Requested.iReqTrafficClass, _L("RPacketQoS::GetProfileParameters did not return with same iTrafficClass as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iDeliveryOrderReqd, qoSR5Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::GetProfileParameters did not return with same iDeliveryOrderReqd as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iDeliverErroneousSDU, qoSR5Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::GetProfileParameters did not return with same iDeliverErroneousSDU as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iMaxSDUSize, qoSR5Requested.iReqMaxSDUSize, _L("RPacketQoS::GetProfileParameters did not return with same iMaxSDUSize as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iMaxRate.iDownlinkRate, qoSR5Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iMaxRate.iDownlinkRate as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iMaxRate.iUplinkRate, qoSR5Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iMaxRate.iUplinkRate as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iBER, qoSR5Requested.iReqBER, _L("RPacketQoS::GetProfileParameters did not return with same iBER as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iSDUErrorRatio, qoSR5Requested.iReqSDUErrorRatio, _L("RPacketQoS::GetProfileParameters did not return with same iSDUErrorRatio as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iTrafficHandlingPriority, qoSR5Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::GetProfileParameters did not return with same iTrafficHandlingPriority as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iTransferDelay, qoSR5Requested.iReqTransferDelay, _L("RPacketQoS::GetProfileParameters did not return with same iTransferDelay as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iGuaranteedRate.iDownlinkRate, qoSR5Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iGuaranteedRate.iDownlinkRate as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iGuaranteedRate.iUplinkRate, qoSR5Requested.iReqGuaranteedRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iGuaranteedRate.iUplinkRate as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iSignallingIndication, qoSR5Requested.iSignallingIndication, _L("RPacketQoS::GetProfileParameters did not return with same iSignallingIndication as used in SetProfileParameters"));
+			ASSERT_EQUALS(qoSR5Negotiated.iSourceStatisticsDescriptor, qoSR5Requested.iSourceStatisticsDescriptor, _L("RPacketQoS::GetProfileParameters did not return with same iSourceStatisticsDescriptor as used in SetProfileParameters"));
+			break;
+		}
+
+	// Release primary packet context QoS
+	iEtelSessionMgr.ReleasePrimaryPacketContextQoS(KMainServer,
+											KMainPhone, 
+											KMainPacketService, 
+											KPrimaryPacketContext1);
+
+	// Release primary packet context
+	iEtelSessionMgr.ReleasePrimaryPacketContext(KMainServer,
+											KMainPhone, 
+											KMainPacketService, 
+											KPrimaryPacketContext1);
+
+	// Pop
+	// setProfileParametersStatus
+	// setConfigStatus
+	// notifyProfileChangedStatus
+	// contextActivateStatus
+	// getProfileParametersStatus
+	CleanupStack::PopAndDestroy(5, &setProfileParametersStatus);
+
+	}
+
+
+TPtrC CCTSYIntegrationTestPacketContext0058::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0058");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0059::CCTSYIntegrationTestPacketContext0059(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0059::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0059::~CCTSYIntegrationTestPacketContext0059()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0059::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0059
+ * @SYMFssID BA/CTSY/PKTC-0059
+ * @SYMTestCaseDesc Activate a PDP context with requested QoS is better than subscriber QoS (success scenario).
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketQoS::NotifyProfileChanged, RPacketQoS::GetProfileParameters, RPacketContext::SetConfig, RPacketQoS::SetProfileParameters, RPacketQoS::GetProfileCapabilities
+ * @SYMTestExpectedResults Pass - A PDP context with subscribed QoS could be activated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify negotiated QoS same as that requested.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+    
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	// Get network info from phone
+	TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork);
+	CleanupStack::PushL(getNetworkStatus);
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info);
+	phone.GetCurrentNetwork(getNetworkStatus, infopckg);
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out"));
+	ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error"));
+
+	TPtrC apn, user, pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd);
+	
+	// == Activate a PDP context with the requested QoS better than subscribed QoS == 
+	DEBUG_PRINTF1(_L("== GPRS =="));
+	DoTest0059L(apn, user, pwd, EQoSGPRS);
+
+	// ===  Repeat test for R99_R4 ===
+	// Repeat test with TQoSCapsR99_R4 instead of TQoSCapsGPRS, TQoSR99_R4Requested instead of TQoSGPRSRequested and TQoSR99_R4Negotiated instead of TQoSGPRSNegotiated 	
+	DEBUG_PRINTF1(_L("== R99_R4 =="));
+	DoTest0059L(apn, user, pwd, EQoSR4);
+
+	// ===  Repeat test for R5 ===
+	// Repeat test with TQoSCapsR5 instead of TQoSCapsGPRS, TQoSR5Requested instead of TQoSGPRSRequested, and TQoSR5Negotiated instead of TQoSGPRSNegotiated 	
+	DEBUG_PRINTF1(_L("== R5 =="));
+	DoTest0059L(apn, user, pwd, EQoSR5);
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+    
+    //PopAndDestroy
+    //getNetWorkStatus
+    CleanupStack::PopAndDestroy(1, &getNetworkStatus);
+	
+	return TestStepResult();
+	}
+	
+void CCTSYIntegrationTestPacketContext0059::DoTest0059L(TPtrC& aApn, TPtrC& aUser, TPtrC& aPwd, TInt aQoSCapType)
+	{
+	/**
+	 * Activate a PDP context with the requested QOS better to the subscribed QoS.
+	 * @param aQoSCapType Gprs / R99_R4 / R5.
+	 */
+	
+	// Open a new primary context. 	
+	RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+											 	
+	//Open a new QoS
+	RPacketQoS& contextQoS = iEtelSessionMgr.GetPrimaryPacketContextQoSL(
+											KMainServer,
+											KMainPhone,
+											KMainPacketService,
+											KPrimaryPacketContext1);
+
+	//Get the QoS profile capabilities with RPacketQoS::GetProfileCapabilities with aProfileCaps of type TQoSCapsGPRS/TQoSCapsR99_R4/TQoSCapsR5			
+	RPacketQoS::TQoSCapsGPRS qosCapsGPRS;
+	RPacketQoS::TQoSCapsR99_R4 qosCapsR99;
+	RPacketQoS::TQoSCapsR5 qosCapsR5;
+
+	switch(aQoSCapType)
+		{
+			case EQoSGPRS:
+					GetProfileCapsL(contextQoS, qosCapsGPRS);
+					break;
+					
+			case EQoSR4:		
+					GetProfileCapsL(contextQoS, qosCapsR99);
+					break;
+					
+			case EQoSR5:		
+					GetProfileCapsL(contextQoS, qosCapsR5);					
+					break;
+		}
+		
+	RPacketQoS::TQoSGPRSRequested qosReqCapsGPRS;
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosReqCapsGPRSPckg(qosReqCapsGPRS);	
+	RPacketQoS::TQoSR99_R4Requested qosReqCapsR99;
+	TPckg<RPacketQoS::TQoSR99_R4Requested> qosReqCapsR99Pckg(qosReqCapsR99);	
+	RPacketQoS::TQoSR5Requested qosReqCapsR5;
+	TPckg<RPacketQoS::TQoSR5Requested> qosReqCapsR5Pckg(qosReqCapsR5);
+	
+	// Set the minimum requested QoS profile parameters to contain lower(worse) values than those that were returned from GetProfileCapabilities by using SetProfileParameters
+	//with aProfile of type TQoSGPRSRequested/TQoSR99_R4Requested/TQoSR5Requested.	
+	switch(aQoSCapType)
+	{
+	
+		case EQoSGPRS:																	
+				//Min caps			
+				qosReqCapsGPRS.iMinDelay = RPacketQoS::EUnspecifiedDelayClass;		
+				qosReqCapsGPRS.iMinMeanThroughput =  RPacketQoS::EUnspecifiedMeanThroughput;	
+				qosReqCapsGPRS.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;	
+				qosReqCapsGPRS.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+				qosReqCapsGPRS.iMinReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+						
+				//Req caps
+				qosReqCapsGPRS.iReqDelay = RPacketQoS::EDelayClass4;
+				qosReqCapsGPRS.iReqMeanThroughput =  RPacketQoS::EMeanThroughput100;
+				qosReqCapsGPRS.iReqPeakThroughput = RPacketQoS::EPeakThroughput1000;
+				qosReqCapsGPRS.iReqPrecedence = RPacketQoS::EPriorityLowPrecedence;
+				qosReqCapsGPRS.iReqReliability = RPacketQoS::EReliabilityClass1;				
+				break;
+				
+		case EQoSR4:	
+				//min values 				
+				qosReqCapsR99.iMinTrafficClass = RPacketQoS::ETrafficClassUnspecified;
+				qosReqCapsR99.iMinDeliveryOrderReqd = RPacketQoS::EDeliveryOrderUnspecified;
+				qosReqCapsR99.iMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified;
+				qosReqCapsR99.iMinAcceptableMaxSDUSize = 1000;
+				qosReqCapsR99.iMinAcceptableMaxRate.iDownlinkRate = 0;
+				qosReqCapsR99.iMinAcceptableMaxRate.iUplinkRate = 0;
+				qosReqCapsR99.iMaxBER =  RPacketQoS::EBERUnspecified;
+				qosReqCapsR99.iMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified;
+				qosReqCapsR99.iMinTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified;
+				qosReqCapsR99.iMaxTransferDelay = 4000;
+				qosReqCapsR99.iMinGuaranteedRate.iDownlinkRate = 1;
+				qosReqCapsR99.iMinGuaranteedRate.iUplinkRate =  1;
+	
+				//req values 						
+				qosReqCapsR99.iReqTrafficClass = RPacketQoS::ETrafficClassConversational;
+				qosReqCapsR99.iReqDeliveryOrderReqd = RPacketQoS::EDeliveryOrderRequired;
+				qosReqCapsR99.iReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryNotRequired;
+				qosReqCapsR99.iReqMaxSDUSize = 1500;
+				qosReqCapsR99.iReqMaxRate.iDownlinkRate = 16;
+				qosReqCapsR99.iReqMaxRate.iUplinkRate = 16;	
+				qosReqCapsR99.iReqBER = RPacketQoS::EBERFourPerThousand;
+				qosReqCapsR99.iReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerThousand;	
+				qosReqCapsR99.iReqTrafficHandlingPriority = RPacketQoS::ETrafficPriority3;		
+				qosReqCapsR99.iReqTransferDelay = 1000;
+				qosReqCapsR99.iReqGuaranteedRate.iDownlinkRate = 16;	
+				qosReqCapsR99.iReqGuaranteedRate.iUplinkRate = 16;					
+				break;
+		
+		case EQoSR5:						
+				//min values
+				qosReqCapsR5.iMinTrafficClass = RPacketQoS::ETrafficClassUnspecified;		
+				qosReqCapsR5.iMinDeliveryOrderReqd = RPacketQoS::EDeliveryOrderUnspecified;
+				qosReqCapsR5.iMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified;				
+				qosReqCapsR5.iMinAcceptableMaxSDUSize = 1000;				
+				qosReqCapsR5.iMinAcceptableMaxRate.iDownlinkRate = 0;							
+				qosReqCapsR5.iMinAcceptableMaxRate.iUplinkRate = 0;							
+				qosReqCapsR5.iMaxBER =  RPacketQoS::EBERUnspecified;	
+				qosReqCapsR5.iMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified;			
+				qosReqCapsR5.iMinTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified;		
+				qosReqCapsR5.iMaxTransferDelay = 4000;		
+				qosReqCapsR5.iMinGuaranteedRate.iDownlinkRate =  1;							
+				qosReqCapsR5.iMinGuaranteedRate.iUplinkRate =  1;
+											
+				//req values 							
+				qosReqCapsR5.iReqTrafficClass = RPacketQoS::ETrafficClassInteractive;
+				qosReqCapsR5.iReqDeliveryOrderReqd = RPacketQoS::EDeliveryOrderRequired;
+				qosReqCapsR5.iReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryRequired;
+				qosReqCapsR5.iReqMaxSDUSize = 1500;
+				qosReqCapsR5.iReqMaxRate.iDownlinkRate = 16;
+				qosReqCapsR5.iReqMaxRate.iUplinkRate = 16;
+				qosReqCapsR5.iReqBER = RPacketQoS::EBERFivePerHundred;
+				qosReqCapsR5.iReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerMillion;
+				qosReqCapsR5.iReqTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified;
+				qosReqCapsR5.iReqTransferDelay = 1000;
+				qosReqCapsR5.iReqGuaranteedRate.iDownlinkRate = 16;	
+				qosReqCapsR5.iReqGuaranteedRate.iUplinkRate = 16;
+				qosReqCapsR5.iSignallingIndication = EFalse;
+				qosReqCapsR5.iSourceStatisticsDescriptor = RPacketQoS::ESourceStatisticsDescriptorUnknown;						
+				break;	
+												
+	}
+	
+	//Set profile parameters	
+	TExtEtelRequestStatus reqStatusSetProfileParams(contextQoS,EPacketQoSSetProfileParams);
+	CleanupStack::PushL(reqStatusSetProfileParams);
+	
+	switch(aQoSCapType)
+	{
+	
+		case EQoSGPRS:
+				contextQoS.SetProfileParameters(reqStatusSetProfileParams,qosReqCapsGPRSPckg );	
+				break;
+				
+		case EQoSR4:		
+				contextQoS.SetProfileParameters(reqStatusSetProfileParams, qosReqCapsR99Pckg);
+				break;
+				
+		case EQoSR5:		
+				contextQoS.SetProfileParameters(reqStatusSetProfileParams, qosReqCapsR5Pckg);					
+				break;
+				
+	}
+		
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqStatusSetProfileParams, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out."));						
+	ASSERT_EQUALS(reqStatusSetProfileParams.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status."));
+
+	//post notifier for NotifyProfileChanged
+	TExtEtelRequestStatus reqStatusNotifyProfileCh(contextQoS,EPacketQoSNotifyProfileChanged);
+	CleanupStack::PushL(reqStatusNotifyProfileCh);
+	
+	RPacketQoS::TQoSGPRSNegotiated qosNegCapsGPRS;
+	TPckg<RPacketQoS::TQoSGPRSNegotiated> qosNegCapsGPRSPckg(qosNegCapsGPRS);
+	RPacketQoS::TQoSR99_R4Negotiated qosNegCapsR99;
+	TPckg<RPacketQoS::TQoSR99_R4Negotiated> qosNegCapsR99Pckg(qosNegCapsR99);
+	RPacketQoS::TQoSR5Negotiated qosNegCapsR5;
+	TPckg<RPacketQoS::TQoSR5Negotiated> qosNegCapsR5Pckg(qosNegCapsR5);
+	
+	switch(aQoSCapType)
+	{
+	
+		case EQoSGPRS:
+				contextQoS.NotifyProfileChanged(reqStatusNotifyProfileCh,qosNegCapsGPRSPckg );	
+				break;
+				
+		case EQoSR4:		
+				contextQoS.NotifyProfileChanged(reqStatusNotifyProfileCh, qosNegCapsR99Pckg);
+				break;
+				
+		case EQoSR5:		
+				contextQoS.NotifyProfileChanged(reqStatusNotifyProfileCh, qosNegCapsR5Pckg);					
+				break;
+				
+	}
+	
+	// Set the context config with RPacketContext::SetConfig 
+	TExtEtelRequestStatus setConfigStatus(primaryPacketContext, EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus);	
+	
+	RPacketContext::TContextConfigGPRS setConfigGprs;
+	TPckg<RPacketContext::TContextConfigGPRS> setConfigPkgGprs(setConfigGprs);
+	RPacketContext::TContextConfigR99_R4 setConfigR99;
+	TPckg<RPacketContext::TContextConfigR99_R4> setConfigPkgR99(setConfigR99);
+	RPacketContext::TContextConfig_R5 setConfigR5;
+	TPckg<RPacketContext::TContextConfig_R5> setConfigPkgR5(setConfigR5);
+
+	switch(aQoSCapType)
+		{
+		case EQoSGPRS: // GPRS
+			setConfigGprs.iAccessPointName.Copy(aApn);
+			setConfigGprs.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser);
+			setConfigGprs.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd);
+			primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgGprs);
+			break;
+		
+		case EQoSR4: // R99_R4
+			setConfigR99.iAccessPointName.Copy(aApn);
+			setConfigR99.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser);
+			setConfigR99.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd);
+			primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgR99);
+			break;
+
+		case EQoSR5: // R5
+			setConfigR5.iAccessPointName.Copy(aApn);
+			setConfigR5.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser);
+			setConfigR5.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd);
+			primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgR5);
+			break;
+		}
+		
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out"));
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned with an error"));
+
+	//Activate the primary context with RPacketContext::Activate. 
+	TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	primaryPacketContext.Activate(contextActivateStatus);	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+	
+	//Check RPacketQoS::NotifyProfileChanged returns aProfile of type TQoSGPRSNegotiated/TQoSR99_R4Negotiated/TQoSR5Negotiated 
+	//with higher(better) value as the requested minimum value used with SetProfileParameters	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqStatusNotifyProfileCh, ETimeMedium), KErrNone, _L("RPacketQoS::NotifyProfileChanged timed out."));						
+	ASSERT_EQUALS(reqStatusNotifyProfileCh.Int(), KErrNone, _L("RPacketQoS::NotifyProfileChanged returned with error status."));
+		
+	switch(aQoSCapType)
+	{
+	
+		case EQoSGPRS:	
+														
+				ASSERT_TRUE(qosNegCapsGPRS.iDelay > qosReqCapsGPRS.iMinDelay, _L("Negotiated QoS iDelay is not better than minimun requested Qos iDelay"));
+				ASSERT_TRUE(qosNegCapsGPRS.iMeanThroughput > qosReqCapsGPRS.iMinMeanThroughput, _L("Negotiated QoS iMeanThroughput is not better than minimun requested Qos iMeanThroughput"));
+				ASSERT_TRUE(qosNegCapsGPRS.iPeakThroughput > qosReqCapsGPRS.iMinPeakThroughput, _L("Negotiated QoS iPeakThroughput is not better than minimun requested Qos iPeakThroughput"));
+				ASSERT_TRUE(qosNegCapsGPRS.iPrecedence > qosReqCapsGPRS.iMinPrecedence, _L("Negotiated QoS iPrecedence is not better than minimun requested Qos iPrecedence"));
+				ASSERT_TRUE(qosNegCapsGPRS.iReliability > qosReqCapsGPRS.iMinReliability, _L("Negotiated QoS iPrecedence is not better than minimun requested Qos iPrecedence"));
+				break;
+				
+		case EQoSR4:	
+				
+				ASSERT_TRUE(qosNegCapsR99.iTrafficClass > qosReqCapsR99.iMinTrafficClass, _L("Negotiated QoS iTrafficClass is not better than minimun requested Qos iTrafficClass"));
+				ASSERT_TRUE(qosNegCapsR99.iDeliveryOrderReqd > qosReqCapsR99.iMinDeliveryOrderReqd, _L("Negotiated QoS iDeliveryOrderReqd is not better than minimun requested Qos iDeliveryOrderReqd"));
+				ASSERT_TRUE(qosNegCapsR99.iDeliverErroneousSDU > qosReqCapsR99.iMinDeliverErroneousSDU, _L("Negotiated QoS iDeliverErroneousSDU is not better than minimun requested Qos iDeliverErroneousSDU"));
+				ASSERT_TRUE(qosNegCapsR99.iMaxSDUSize > qosReqCapsR99.iMinAcceptableMaxSDUSize, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize"));
+				ASSERT_TRUE(qosNegCapsR99.iMaxRate.iDownlinkRate > qosReqCapsR99.iMinAcceptableMaxRate.iDownlinkRate, _L("Negotiated QoS iMaxRate.iDownlinkRate is not better than minimun requested Qos iMaxRate.iDownlinkRate"));
+				ASSERT_TRUE(qosNegCapsR99.iMaxRate.iUplinkRate > qosReqCapsR99.iMinAcceptableMaxRate.iUplinkRate, _L("Negotiated QoS iMaxRate.iUplinkRate is not better than minimun requested Qos iMaxRate.iUplinkRate"));
+				ASSERT_TRUE(qosNegCapsR99.iBER > qosReqCapsR99.iMaxBER, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize"));
+				ASSERT_TRUE(qosNegCapsR99.iSDUErrorRatio > qosReqCapsR99.iMaxSDUErrorRatio, _L("Negotiated QoS iSDUErrorRatio is not better than minimun requested Qos iSDUErrorRatio"));
+				ASSERT_TRUE(qosNegCapsR99.iTrafficHandlingPriority > qosReqCapsR99.iMinTrafficHandlingPriority, _L("Negotiated QoS iTrafficHandlingPriority is not better than minimun requested Qos iTrafficHandlingPriority"));
+				ASSERT_TRUE(qosNegCapsR99.iTransferDelay < qosReqCapsR99.iMaxTransferDelay, _L("Negotiated QoS iTransferDelay is not better than minimun requested Qos iTransferDelay"));
+				ASSERT_TRUE(qosNegCapsR99.iGuaranteedRate.iDownlinkRate > qosReqCapsR99.iMinGuaranteedRate.iDownlinkRate, _L("Negotiated QoS iGuaranteedRate.iDownlinkRate is not better than minimun requested Qos iGuaranteedRate.iDownlinkRate"));
+				ASSERT_TRUE(qosNegCapsR99.iGuaranteedRate.iUplinkRate > qosReqCapsR99.iMinGuaranteedRate.iUplinkRate, _L("Negotiated QoS iGuaranteedRate.iUplinkRate is not better than minimun requested Qos iGuaranteedRate.iUplinkRate"));
+				break;
+				
+		case EQoSR5:
+									
+				ASSERT_TRUE(qosNegCapsR5.iTrafficClass > qosReqCapsR5.iMinTrafficClass, _L("Negotiated QoS iTrafficClass is not better than minimun requested Qos iTrafficClass"));
+				ASSERT_TRUE(qosNegCapsR5.iDeliveryOrderReqd > qosReqCapsR5.iMinDeliveryOrderReqd, _L("Negotiated QoS iDeliveryOrderReqd is not better than minimun requested Qos iDeliveryOrderReqd"));
+				ASSERT_TRUE(qosNegCapsR5.iDeliverErroneousSDU > qosReqCapsR5.iMinDeliverErroneousSDU, _L("Negotiated QoS iDeliverErroneousSDU is not better than minimun requested Qos iDeliverErroneousSDU"));
+				ASSERT_TRUE(qosNegCapsR5.iMaxSDUSize > qosReqCapsR5.iMinAcceptableMaxSDUSize, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize"));
+				ASSERT_TRUE(qosNegCapsR5.iMaxRate.iDownlinkRate > qosReqCapsR5.iMinAcceptableMaxRate.iDownlinkRate, _L("Negotiated QoS iMaxRate.iDownlinkRate is not better than minimun requested Qos iMaxRate.iDownlinkRate"));
+				ASSERT_TRUE(qosNegCapsR5.iMaxRate.iUplinkRate > qosReqCapsR5.iMinAcceptableMaxRate.iUplinkRate, _L("Negotiated QoS iMaxRate.iUplinkRate is not better than minimun requested Qos iMaxRate.iUplinkRate"));
+				ASSERT_TRUE(qosNegCapsR5.iBER > qosReqCapsR5.iMaxBER, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize"));
+				ASSERT_TRUE(qosNegCapsR5.iSDUErrorRatio > qosReqCapsR5.iMaxSDUErrorRatio, _L("Negotiated QoS iSDUErrorRatio is not better than minimun requested Qos iSDUErrorRatio"));
+				ASSERT_TRUE(qosNegCapsR5.iTrafficHandlingPriority > qosReqCapsR5.iMinTrafficHandlingPriority, _L("Negotiated QoS iTrafficHandlingPriority is not better than minimun requested Qos iTrafficHandlingPriority"));
+				ASSERT_TRUE(qosNegCapsR5.iTransferDelay < qosReqCapsR5.iMaxTransferDelay, _L("Negotiated QoS iTransferDelay is not better than minimun requested Qos iTransferDelay"));
+				ASSERT_TRUE(qosNegCapsR5.iGuaranteedRate.iDownlinkRate > qosReqCapsR5.iMinGuaranteedRate.iDownlinkRate, _L("Negotiated QoS iGuaranteedRate.iDownlinkRate is not better than minimun requested Qos iGuaranteedRate.iDownlinkRate"));
+				ASSERT_TRUE(qosNegCapsR5.iGuaranteedRate.iUplinkRate > qosReqCapsR5.iMinGuaranteedRate.iUplinkRate, _L("Negotiated QoS iGuaranteedRate.iUplinkRate is not better than minimun requested Qos iGuaranteedRate.iUplinkRate"));		
+				break;
+				
+	}
+	
+	RPacketQoS::TQoSGPRSNegotiated qosNegCapsNumberTwoGPRS;
+	TPckg<RPacketQoS::TQoSGPRSNegotiated> qosNegCapsNumberTwoGPRSPckg(qosNegCapsNumberTwoGPRS);
+	RPacketQoS::TQoSR99_R4Negotiated qosNegCapsNumberTwoR99;
+	TPckg<RPacketQoS::TQoSR99_R4Negotiated> qosNegCapsNumberTwoR99Pckg(qosNegCapsNumberTwoR99);
+	RPacketQoS::TQoSR5Negotiated qosNegCapsNumberTwoR5;
+	TPckg<RPacketQoS::TQoSR5Negotiated> qosNegCapsNumberTwoR5Pckg(qosNegCapsNumberTwoR5);
+		
+	//Check RPacketQoS::GetProfileParameters returns aProfile of type TQoSGPRSNegotiated/TQoSR99_R4Negotiated/TQoSR5Negotiated 
+	//with higher(better) value as the requested minimum value used with SetProfileParameters
+	TExtEtelRequestStatus reqStatusGetProfileParams(contextQoS,EPacketQoSGetProfileParams);
+	CleanupStack::PushL(reqStatusGetProfileParams);
+	
+	switch(aQoSCapType)
+	{
+	
+		case EQoSGPRS:
+				contextQoS.GetProfileParameters(reqStatusGetProfileParams, qosNegCapsNumberTwoGPRSPckg);	
+				break;
+				
+		case EQoSR4:		
+				contextQoS.GetProfileParameters(reqStatusGetProfileParams, qosNegCapsNumberTwoR99Pckg);
+				break;
+				
+		case EQoSR5:		
+				contextQoS.GetProfileParameters(reqStatusGetProfileParams, qosNegCapsNumberTwoR5Pckg);					
+				break;
+				
+	}
+		
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(reqStatusGetProfileParams, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileParameters timed out."));						
+	ASSERT_EQUALS(reqStatusGetProfileParams.Int(), KErrNone, _L("RPacketQoS::GetProfileParameters returned with error status."));
+	
+	switch(aQoSCapType)
+	{
+	
+		case EQoSGPRS:
+		
+				ASSERT_TRUE(qosNegCapsNumberTwoGPRS.iDelay > qosReqCapsGPRS.iMinDelay, _L("Negotiated QoS iDelay is not better than minimun requested Qos iDelay"));
+				ASSERT_TRUE(qosNegCapsNumberTwoGPRS.iMeanThroughput > qosReqCapsGPRS.iMinMeanThroughput, _L("Negotiated QoS iMeanThroughput is not better than minimun requested Qos iMeanThroughput"));
+				ASSERT_TRUE(qosNegCapsNumberTwoGPRS.iPeakThroughput > qosReqCapsGPRS.iMinPeakThroughput, _L("Negotiated QoS iPeakThroughput is not better than minimun requested Qos iPeakThroughput"));
+				ASSERT_TRUE(qosNegCapsNumberTwoGPRS.iPrecedence > qosReqCapsGPRS.iMinPrecedence, _L("Negotiated QoS iPrecedence is not better than minimun requested Qos iPrecedence"));
+				ASSERT_TRUE(qosNegCapsNumberTwoGPRS.iReliability > qosReqCapsGPRS.iMinReliability, _L("Negotiated QoS iPrecedence is not better than minimun requested Qos iPrecedence"));
+				break;
+		
+		case EQoSR4:
+		
+				ASSERT_TRUE(qosNegCapsNumberTwoR99.iTrafficClass > qosReqCapsR99.iMinTrafficClass, _L("Negotiated QoS iTrafficClass is not better than minimun requested Qos iTrafficClass"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR99.iDeliveryOrderReqd > qosReqCapsR99.iMinDeliveryOrderReqd, _L("Negotiated QoS iDeliveryOrderReqd is not better than minimun requested Qos iDeliveryOrderReqd"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR99.iDeliverErroneousSDU > qosReqCapsR99.iMinDeliverErroneousSDU, _L("Negotiated QoS iDeliverErroneousSDU is not better than minimun requested Qos iDeliverErroneousSDU"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR99.iMaxSDUSize > qosReqCapsR99.iMinAcceptableMaxSDUSize, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR99.iMaxRate.iDownlinkRate > qosReqCapsR99.iMinAcceptableMaxRate.iDownlinkRate, _L("Negotiated QoS iMaxRate.iDownlinkRate is not better than minimun requested Qos iMaxRate.iDownlinkRate"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR99.iMaxRate.iUplinkRate > qosReqCapsR99.iMinAcceptableMaxRate.iUplinkRate, _L("Negotiated QoS iMaxRate.iUplinkRate is not better than minimun requested Qos iMaxRate.iUplinkRate"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR99.iBER > qosReqCapsR99.iMaxBER, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR99.iSDUErrorRatio > qosReqCapsR99.iMaxSDUErrorRatio, _L("Negotiated QoS iSDUErrorRatio is not better than minimun requested Qos iSDUErrorRatio"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR99.iTrafficHandlingPriority > qosReqCapsR99.iMinTrafficHandlingPriority, _L("Negotiated QoS iTrafficHandlingPriority is not better than minimun requested Qos iTrafficHandlingPriority"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR99.iTransferDelay < qosReqCapsR99.iMaxTransferDelay, _L("Negotiated QoS iTransferDelay is not better than minimun requested Qos iTransferDelay"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR99.iGuaranteedRate.iDownlinkRate > qosReqCapsR99.iMinGuaranteedRate.iDownlinkRate, _L("Negotiated QoS iGuaranteedRate.iDownlinkRate is not better than minimun requested Qos iGuaranteedRate.iDownlinkRate"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR99.iGuaranteedRate.iUplinkRate > qosReqCapsR99.iMinGuaranteedRate.iUplinkRate, _L("Negotiated QoS iGuaranteedRate.iUplinkRate is not better than minimun requested Qos iGuaranteedRate.iUplinkRate"));
+				break;
+				
+		case EQoSR5:
+				
+				ASSERT_TRUE(qosNegCapsNumberTwoR5.iTrafficClass > qosReqCapsR5.iMinTrafficClass, _L("Negotiated QoS iTrafficClass is not better than minimun requested Qos iTrafficClass"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR5.iDeliveryOrderReqd > qosReqCapsR5.iMinDeliveryOrderReqd, _L("Negotiated QoS iDeliveryOrderReqd is not better than minimun requested Qos iDeliveryOrderReqd"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR5.iDeliverErroneousSDU > qosReqCapsR5.iMinDeliverErroneousSDU, _L("Negotiated QoS iDeliverErroneousSDU is not better than minimun requested Qos iDeliverErroneousSDU"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR5.iMaxSDUSize > qosReqCapsR5.iMinAcceptableMaxSDUSize, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR5.iMaxRate.iDownlinkRate > qosReqCapsR5.iMinAcceptableMaxRate.iDownlinkRate, _L("Negotiated QoS iMaxRate.iDownlinkRate is not better than minimun requested Qos iMaxRate.iDownlinkRate"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR5.iMaxRate.iUplinkRate > qosReqCapsR5.iMinAcceptableMaxRate.iUplinkRate, _L("Negotiated QoS iMaxRate.iUplinkRate is not better than minimun requested Qos iMaxRate.iUplinkRate"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR5.iBER > qosReqCapsR5.iMaxBER, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR5.iSDUErrorRatio > qosReqCapsR5.iMaxSDUErrorRatio, _L("Negotiated QoS iSDUErrorRatio is not better than minimun requested Qos iSDUErrorRatio"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR5.iTrafficHandlingPriority > qosReqCapsR5.iMinTrafficHandlingPriority, _L("Negotiated QoS iTrafficHandlingPriority is not better than minimun requested Qos iTrafficHandlingPriority"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR5.iTransferDelay < qosReqCapsR5.iMaxTransferDelay, _L("Negotiated QoS iTransferDelay is not better than minimun requested Qos iTransferDelay"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR5.iGuaranteedRate.iDownlinkRate > qosReqCapsR5.iMinGuaranteedRate.iDownlinkRate, _L("Negotiated QoS iGuaranteedRate.iDownlinkRate is not better than minimun requested Qos iGuaranteedRate.iDownlinkRate"));
+				ASSERT_TRUE(qosNegCapsNumberTwoR5.iGuaranteedRate.iUplinkRate > qosReqCapsR5.iMinGuaranteedRate.iUplinkRate, _L("Negotiated QoS iGuaranteedRate.iUplinkRate is not better than minimun requested Qos iGuaranteedRate.iUplinkRate"));		
+				break;
+							
+	}
+				
+	//Release QoS
+	iEtelSessionMgr.ReleasePrimaryPacketContextQoS(KMainServer,
+											KMainPhone, 
+											KMainPacketService, 
+											KPrimaryPacketContext1);
+	
+			
+	// Release packet context
+	iEtelSessionMgr.ReleasePrimaryPacketContext(KMainServer,
+											KMainPhone, 
+											KMainPacketService, 
+											KPrimaryPacketContext1);
+	
+	//PopAndDestroy
+	//reqStatusSetProfileParams
+	//reqStatusNotifyProfileCh
+	//setConfigStatus
+	//contextActivateStatus
+	//reqStatusGetProfileParams	
+	
+	CleanupStack::PopAndDestroy(5,&reqStatusSetProfileParams);
+
+
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0059::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0059");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0060::CCTSYIntegrationTestPacketContext0060(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0060::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0060::~CCTSYIntegrationTestPacketContext0060()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0060::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0060
+ * @SYMFssID BA/CTSY/PKTC-0060
+ * @SYMTestCaseDesc Activate a PDP context can be activated with requested QOS better than subscribed QOS (failure scenario).
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketQos::SetProfileParameters, RPacketContext::Activate, RPacketQos::GetProfileParameters
+ * @SYMTestExpectedResults Pass - A PDP context with subscribed QoS could be activated. Negotiated QoS lower than requested.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify negotiated QoS lower than that requested.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+												 
+	// Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL		
+    RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+	CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+    
+    // Get packet service
+	RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService);
+    	
+    // Ensure phone is attached to the packet service
+    SetAttachModeToWhenPossibleAndWaitForAttachL(packetService);
+  
+    	
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+		
+	// Get network info from phone
+	TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork);
+	CleanupStack::PushL(getNetworkStatus);
+	RMobilePhone::TMobilePhoneNetworkInfoV1 info;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info);
+	phone.GetCurrentNetwork(getNetworkStatus, infopckg);
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out"));
+	ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error"));
+
+	TPtrC apn, user, pwd;
+	iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd);
+
+	// == Activate a PDP context with the requested QOS better than subscribed QOS (failure scenario) by using TQoSCapsGPRS, TQoSGPRSRequested, TQoSGPRSNegotiated   ==
+	DEBUG_PRINTF1(_L("== GPRS =="));		
+	DoTest0060L(apn, user, pwd, EQoSGPRS);
+		
+	// ===  Repeat test for R99_R4 ===
+	// Repeat test with TQoSCapsR99_R4 instead of TQoSCapsGPRS, TQoSR99_R4Requested instead of TQoSGPRSRequested and TQoSR99_R4Negotiated instead of TQoSGPRSNegotiated 
+	DEBUG_PRINTF1(_L("== R99_R4 =="));
+	DoTest0060L(apn, user, pwd, EQoSR4);
+	
+	// ===  Repeat test for R5 ===
+	// Repeat test with TQoSCapsR5 instead of TQoSCapsGPRS, TQoSR5Requested instead of TQoSGPRSRequested, and TQoSR5Negotiated instead of TQoSGPRSNegotiated 
+	DEBUG_PRINTF1(_L("== R5 =="));
+	DoTest0060L(apn, user, pwd, EQoSR5);
+	
+
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Pop
+	// getNetworkStatus
+	CleanupStack::PopAndDestroy(1, &getNetworkStatus);
+	
+	return TestStepResult();
+	}
+
+void CCTSYIntegrationTestPacketContext0060::DoTest0060L( TPtrC& aApn, TPtrC& aUser, TPtrC& aPwd, TInt aQoSCapType )
+/**
+ * Activates primary packet context with default context parameters.
+ * @param aNetworkType Gprs / R99_R4 / R5.
+ */
+    {
+		
+ 	// Open a new primary context. 
+	RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService,
+												KPrimaryPacketContext1);
+			
+	// Open a new QoS from the primary context												
+	RPacketQoS& packetQoS = iEtelSessionMgr.GetPrimaryPacketContextQoSL(
+												KMainServer,
+												KMainPhone,
+												KMainPacketService, 
+												KPrimaryPacketContext1);
+	
+    //Get the QoS profile capabilities with RPacketQoS::GetProfileCapabilities with aProfileCaps of type TQoSCapsGPRS/TQoSCapsR99_R4/TQoSCapsR5			
+	RPacketQoS::TQoSCapsGPRS qosCapsGPRS;
+	RPacketQoS::TQoSCapsR99_R4 qosCapsR99;
+	RPacketQoS::TQoSCapsR5 qosCapsR5;
+
+	switch(aQoSCapType)
+		{
+			case EQoSGPRS:
+					GetProfileCapsL(packetQoS, qosCapsGPRS);
+					break;
+					
+			case EQoSR4:		
+					GetProfileCapsL(packetQoS, qosCapsR99);
+					break;
+					
+			case EQoSR5:		
+					GetProfileCapsL(packetQoS, qosCapsR5);					
+					break;
+		}
+		
+		
+	// Set the minimum requested QoS profile parameters to lower than what was returned from GetProfileCapabilities using RPacketQoS::SetProfileParameters
+	// with aProfile of type TQoSGPRSRequested/TQoSR99_R4Requested/TQoSR5Requested.
+	// Set all iMin... to a lower value than that returned by GetProfileCapabilities and all iReq... to a maximum value allowable by the API. 
+	RPacketQoS::TQoSGPRSRequested qosGprsRequested;
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosGprsReqPckg(qosGprsRequested);
+	RPacketQoS::TQoSR99_R4Requested qosR99_R4Requested;
+	TPckg<RPacketQoS::TQoSR99_R4Requested> qosR99_R4ReqPckg(qosR99_R4Requested);	
+	RPacketQoS::TQoSR5Requested qosR5Requested;
+	TPckg<RPacketQoS::TQoSR5Requested> qosR5ReqPckg(qosR5Requested);
+	RPacketQoS::TBitRate bitRate;
+	bitRate.iDownlinkRate = 0;
+	bitRate.iUplinkRate = 0;
+	
+	TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams);
+	CleanupStack::PushL(setProfileParamStatus);	
+
+	switch(aQoSCapType)
+		{
+		case EQoSGPRS: // GPRS	
+		//Min caps		
+		qosGprsRequested.iMinDelay 			= RPacketQoS::EUnspecifiedDelayClass;
+		qosGprsRequested.iMinMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+		qosGprsRequested.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+		qosGprsRequested.iMinPrecedence 	= RPacketQoS::EUnspecifiedPrecedence;
+		qosGprsRequested.iMinReliability 	= RPacketQoS::EUnspecifiedReliabilityClass;
+		//Request caps
+		qosGprsRequested.iReqDelay          = RPacketQoS::EDelayClass1;
+		qosGprsRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput50000000;
+		qosGprsRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput256000;
+		qosGprsRequested.iReqReliability    = RPacketQoS::EReliabilityClass1;
+		qosGprsRequested.iReqPrecedence     = RPacketQoS::EPriorityHighPrecedence;
+		packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg);
+		break;
+			
+		case EQoSR4: // R99_R4
+		//Min caps
+		qosR99_R4Requested.iMinTrafficClass				= RPacketQoS::ETrafficClassUnspecified;
+		qosR99_R4Requested.iMinDeliveryOrderReqd		= RPacketQoS::EDeliveryOrderUnspecified;
+		qosR99_R4Requested.iMinDeliverErroneousSDU		= RPacketQoS::EErroneousSDUNoDetection;
+		qosR99_R4Requested.iMinAcceptableMaxSDUSize		= 10;
+		qosR99_R4Requested.iMinAcceptableMaxRate		= bitRate;
+		qosR99_R4Requested.iMaxBER						= RPacketQoS::EBERUnspecified;
+		qosR99_R4Requested.iMaxSDUErrorRatio			= RPacketQoS::ESDUErrorRatioUnspecified;
+		qosR99_R4Requested.iMinTrafficHandlingPriority	= RPacketQoS::ETrafficPriorityUnspecified;
+		qosR99_R4Requested.iMaxTransferDelay			= 4000;
+		qosR99_R4Requested.iMinGuaranteedRate			= bitRate;
+		//Request caps
+		qosR99_R4Requested.iReqTrafficClass				= RPacketQoS::ETrafficClassConversational;
+		qosR99_R4Requested.iReqDeliveryOrderReqd		= RPacketQoS::EDeliveryOrderRequired;
+		qosR99_R4Requested.iReqDeliverErroneousSDU		= RPacketQoS::EErroneousSDUNoDetection;
+		qosR99_R4Requested.iReqMaxSDUSize				= 1520;
+		bitRate.iDownlinkRate = 16000;
+		bitRate.iUplinkRate = 16000;
+		qosR99_R4Requested.iReqMaxRate					= bitRate;
+		qosR99_R4Requested.iReqBER						= RPacketQoS::EBERSixPerHundredMillion;
+		qosR99_R4Requested.iReqSDUErrorRatio 			= RPacketQoS::ESDUErrorRatioOnePerMillion;
+		qosR99_R4Requested.iReqTrafficHandlingPriority	= RPacketQoS::ETrafficPriority1;
+		qosR99_R4Requested.iReqTransferDelay			= 10;
+		qosR99_R4Requested.iReqGuaranteedRate			= bitRate;
+		packetQoS.SetProfileParameters(setProfileParamStatus, qosR99_R4ReqPckg);
+		break;
+		
+		case EQoSR5: // R5
+		//Min caps
+		qosR5Requested.iMinTrafficClass				= RPacketQoS::ETrafficClassUnspecified;
+		qosR5Requested.iMinDeliveryOrderReqd		= RPacketQoS::EDeliveryOrderUnspecified;
+		qosR5Requested.iMinDeliverErroneousSDU		= RPacketQoS::EErroneousSDUDeliveryUnspecified;
+		qosR5Requested.iMinAcceptableMaxSDUSize		= 10;
+		qosR5Requested.iMinAcceptableMaxRate		= bitRate;
+		qosR5Requested.iMaxBER						= RPacketQoS::EBERUnspecified;
+		qosR5Requested.iMaxSDUErrorRatio			= RPacketQoS::ESDUErrorRatioUnspecified;
+		qosR5Requested.iMinTrafficHandlingPriority	= RPacketQoS::ETrafficPriorityUnspecified;
+		qosR5Requested.iMaxTransferDelay			= 0;
+		qosR5Requested.iMinGuaranteedRate			= bitRate;
+		//Request caps
+		qosR5Requested.iReqTrafficClass				= RPacketQoS::ETrafficClassConversational;
+		qosR5Requested.iReqDeliveryOrderReqd		= RPacketQoS::EDeliveryOrderRequired;
+		qosR5Requested.iReqDeliverErroneousSDU		= RPacketQoS::EErroneousSDUNoDetection;
+		qosR5Requested.iReqMaxSDUSize				= 1520;
+		bitRate.iDownlinkRate = 16000;
+		bitRate.iUplinkRate = 16000;
+		qosR5Requested.iReqMaxRate					= bitRate;
+		qosR5Requested.iReqBER						= RPacketQoS::EBERSixPerHundredMillion;
+		qosR5Requested.iReqSDUErrorRatio 			= RPacketQoS::ESDUErrorRatioOnePerMillion;
+		qosR5Requested.iReqTrafficHandlingPriority	= RPacketQoS::ETrafficPriority1;
+		qosR5Requested.iReqTransferDelay			= 10;
+		qosR5Requested.iReqGuaranteedRate			= bitRate;
+		qosR5Requested.iSignallingIndication		= ETrue;
+		qosR5Requested.iSourceStatisticsDescriptor	= RPacketQoS::ESourceStatisticsDescriptorSpeech;
+		packetQoS.SetProfileParameters(setProfileParamStatus, qosR5ReqPckg);
+		break;
+		}
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out."));						
+	ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status."));
+
+	// Set the context config with RPacketContext::SetConfig 
+	RPacketContext::TContextConfigGPRS gprsConfig;
+	TPckg<RPacketContext::TContextConfigGPRS> gprsConfigPk(gprsConfig);
+	RPacketContext::TContextConfigR99_R4 r99_r4Config;
+	TPckg<RPacketContext::TContextConfigR99_R4> r99_r4ConfigPk(r99_r4Config);
+	RPacketContext::TContextConfig_R5 r5Config;
+	TPckg<RPacketContext::TContextConfig_R5> r5ConfigPk(r5Config);
+	
+	TExtEtelRequestStatus setConfigStatus(packetContext, EPacketContextSetConfig);	
+	CleanupStack::PushL(setConfigStatus);
+
+	switch(aQoSCapType)
+		{
+		case EQoSGPRS: // GPRS	
+		gprsConfig.iAccessPointName.Copy(aApn);
+		gprsConfig.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser);
+		gprsConfig.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd);
+		packetContext.SetConfig(setConfigStatus, gprsConfigPk);
+		break;
+		
+		case EQoSR4: // R99_R4	
+		r99_r4Config.iAccessPointName.Copy(aApn);
+		r99_r4Config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser);
+		r99_r4Config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd);
+		packetContext.SetConfig(setConfigStatus, r99_r4ConfigPk);
+		break;
+		
+		case EQoSR5: // R5 
+		r5Config.iAccessPointName.Copy(aApn);
+		r5Config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser);
+		r5Config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd);
+		packetContext.SetConfig(setConfigStatus, r5ConfigPk);
+		break;
+		}
+
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out"));
+	ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned with error status."));
+	
+	//post notifier for NotifyProfileChanged
+	TExtEtelRequestStatus notifyProfileChangedStatus (packetQoS, EPacketQoSNotifyProfileChanged);
+	CleanupStack::PushL(notifyProfileChangedStatus);
+	RPacketQoS::TQoSGPRSNegotiated gprsNegotiatedQoSValues;
+	TPckg<RPacketQoS::TQoSGPRSNegotiated> gprsNegotiatedQoSPk(gprsNegotiatedQoSValues);
+	RPacketQoS::TQoSR99_R4Negotiated r99_r4NegotiatedQoSValues;
+	TPckg<RPacketQoS::TQoSR99_R4Negotiated> r99_r4NegotiatedQoSPk(r99_r4NegotiatedQoSValues);
+	RPacketQoS::TQoSR5Negotiated r5NegotiatedQoSValues;
+	TPckg<RPacketQoS::TQoSR5Negotiated> r5NegotiatedQoSPk(r5NegotiatedQoSValues);
+	
+	switch(aQoSCapType)
+		{
+		case EQoSGPRS: // GPRS
+		packetQoS.NotifyProfileChanged(notifyProfileChangedStatus, gprsNegotiatedQoSPk);
+		break;
+		
+		case EQoSR4: // R99_R4
+		packetQoS.NotifyProfileChanged(notifyProfileChangedStatus, r99_r4NegotiatedQoSPk);
+		break;
+
+		case EQoSR5: // R5
+		packetQoS.NotifyProfileChanged(notifyProfileChangedStatus, r5NegotiatedQoSPk);
+		break;
+		} 
+				
+	// Activate the primary context with RPacketContext::Activate. 
+	TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate);
+	CleanupStack::PushL(contextActivateStatus);
+	packetContext.Activate(contextActivateStatus);
+	
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out."));
+	ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status."));
+	
+	// Check RPacketQoS::NotifyProfileChanged returns aProfile of type TQoSGPRSNegotiated/TQoSR99_R4Negotiated/TQoSR5Negotiated with lower values than the requested values used in SetProfileParameters.
+	ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyProfileChangedStatus, ETimeLong), KErrNone, _L("RPacketQoS::NotifyProfileChanged timed out"));
+	ASSERT_EQUALS(notifyProfileChangedStatus.Int(), KErrNone, _L("RPacketQoS::NotifyProfileChanged returned with error status."));
+
+	switch(aQoSCapType)
+		{
+		case EQoSGPRS: // GPRS	
+		ASSERT_TRUE(gprsNegotiatedQoSValues.iDelay > qosGprsRequested.iReqDelay, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDelay."));
+		// Network returns EMeanThroughputBestEffort (0x80000) which is is higher than best EMeanThroughput50000000 (0x40000). That is why comparison must be this way
+		ASSERT_TRUE(gprsNegotiatedQoSValues.iMeanThroughput > qosGprsRequested.iReqMeanThroughput, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMeanThroughput."));	
+		ASSERT_TRUE(gprsNegotiatedQoSValues.iPeakThroughput < qosGprsRequested.iReqPeakThroughput, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iPeakThroughput."));		
+		ASSERT_TRUE(gprsNegotiatedQoSValues.iReliability > qosGprsRequested.iReqReliability, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iReliability."));
+		ASSERT_TRUE(gprsNegotiatedQoSValues.iPrecedence > qosGprsRequested.iReqPrecedence, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iPrecedence."));
+		break;
+		
+		case EQoSR4: // R99_R4			
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iTrafficClass > qosR99_R4Requested.iReqTrafficClass, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficClass"));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iDeliveryOrderReqd > qosR99_R4Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliveryOrderReqd."));	
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iDeliverErroneousSDU > qosR99_R4Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliverErroneousSDU."));								
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iMaxSDUSize < qosR99_R4Requested.iReqMaxSDUSize, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxSDUSize."));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iMaxRate.iDownlinkRate < qosR99_R4Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iDownlinkRate"));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iMaxRate.iUplinkRate < qosR99_R4Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iUplinkRate"));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iBER < qosR99_R4Requested.iReqBER, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iBER."));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iSDUErrorRatio < qosR99_R4Requested.iReqSDUErrorRatio, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSDUErrorRatio."));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iTrafficHandlingPriority > qosR99_R4Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficHandlingPriority."));	
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iTransferDelay > qosR99_R4Requested.iReqTransferDelay, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTransferDelay"));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iGuaranteedRate.iDownlinkRate < qosR99_R4Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iDownlinkRate"));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iGuaranteedRate.iUplinkRate < qosR99_R4Requested.iReqGuaranteedRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iUplinkRate"));
+		break;
+
+		case EQoSR5: // R5		
+		ASSERT_TRUE(r5NegotiatedQoSValues.iTrafficClass > qosR5Requested.iReqTrafficClass, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficClass"));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iDeliveryOrderReqd > qosR5Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliveryOrderReqd."));	
+		ASSERT_TRUE(r5NegotiatedQoSValues.iDeliverErroneousSDU > qosR5Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliverErroneousSDU."));								
+		ASSERT_TRUE(r5NegotiatedQoSValues.iMaxSDUSize < qosR5Requested.iReqMaxSDUSize, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxSDUSize."));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iMaxRate.iDownlinkRate < qosR5Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iDownlinkRate"));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iMaxRate.iUplinkRate < qosR5Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iUplinkRate"));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iBER < qosR5Requested.iReqBER, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iBER."));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iSDUErrorRatio < qosR5Requested.iReqSDUErrorRatio, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSDUErrorRatio."));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iTrafficHandlingPriority > qosR5Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficHandlingPriority."));	
+		ASSERT_TRUE(r5NegotiatedQoSValues.iTransferDelay > qosR5Requested.iReqTransferDelay, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTransferDelay"));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iGuaranteedRate.iDownlinkRate < qosR5Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iDownlinkRate"));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iGuaranteedRate.iUplinkRate < qosR5Requested.iReqGuaranteedRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iUplinkRate"));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iSignallingIndication < qosR5Requested.iSignallingIndication, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSignallingIndication."));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iSourceStatisticsDescriptor < qosR5Requested.iSourceStatisticsDescriptor, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSourceStatisticsDescriptor."));				
+		break;	
+		}	
+			
+	// Check RPacketQoS::GetProfileParameters returns aProfile of type TQoSGPRSNegotiated/TQoSR99_R4Negotiated/TQoSR5Negotiated with lower values than the requested values used in SetProfileParameters.
+	TExtEtelRequestStatus getProfileParametersStatus (packetQoS, EPacketQoSGetProfileParams);
+	CleanupStack::PushL(getProfileParametersStatus);
+	
+	switch(aQoSCapType)
+		{
+		case EQoSGPRS: // GPRS	
+		packetQoS.GetProfileParameters(getProfileParametersStatus, gprsNegotiatedQoSPk);
+		ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileParametersStatus, ETimeLong), KErrNone, _L("RPacketQoS::GetProfileParameters timed out"));
+		ASSERT_EQUALS(getProfileParametersStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileParameters returned with an error"));
+		ASSERT_TRUE(gprsNegotiatedQoSValues.iDelay > qosGprsRequested.iReqDelay, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDelay."));
+		// Network returns EMeanThroughputBestEffort (0x80000) which is is higher than best EMeanThroughput50000000 (0x40000). That is why comparison must be this way
+		ASSERT_TRUE(gprsNegotiatedQoSValues.iMeanThroughput > qosGprsRequested.iReqMeanThroughput, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMeanThroughput."));	
+		ASSERT_TRUE(gprsNegotiatedQoSValues.iPeakThroughput < qosGprsRequested.iReqPeakThroughput, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iPeakThroughput."));		
+		ASSERT_TRUE(gprsNegotiatedQoSValues.iReliability > qosGprsRequested.iReqReliability, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iReliability."));
+		ASSERT_TRUE(gprsNegotiatedQoSValues.iPrecedence > qosGprsRequested.iReqPrecedence, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iPrecedence."));
+		break;
+		
+		case EQoSR4: // R99_R4
+		packetQoS.GetProfileParameters(getProfileParametersStatus, r99_r4NegotiatedQoSPk);
+		ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileParametersStatus, ETimeLong), KErrNone, _L("RPacketQoS::GetProfileParameters timed out"));
+		ASSERT_EQUALS(getProfileParametersStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileParameters returned with an error"));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iTrafficClass > qosR99_R4Requested.iReqTrafficClass, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficClass"));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iDeliveryOrderReqd > qosR99_R4Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliveryOrderReqd."));	
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iDeliverErroneousSDU > qosR99_R4Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliverErroneousSDU."));								
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iMaxSDUSize < qosR99_R4Requested.iReqMaxSDUSize, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxSDUSize."));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iMaxRate.iDownlinkRate < qosR99_R4Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iDownlinkRate"));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iMaxRate.iUplinkRate < qosR99_R4Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iUplinkRate"));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iBER < qosR99_R4Requested.iReqBER, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iBER."));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iSDUErrorRatio < qosR99_R4Requested.iReqSDUErrorRatio, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSDUErrorRatio."));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iTrafficHandlingPriority > qosR99_R4Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficHandlingPriority."));	
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iTransferDelay > qosR99_R4Requested.iReqTransferDelay, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTransferDelay"));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iGuaranteedRate.iDownlinkRate < qosR99_R4Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iDownlinkRate"));
+		ASSERT_TRUE(r99_r4NegotiatedQoSValues.iGuaranteedRate.iUplinkRate < qosR99_R4Requested.iReqGuaranteedRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iUplinkRate"));
+		break;
+		
+		case EQoSR5: // R5
+		packetQoS.GetProfileParameters(getProfileParametersStatus, r5NegotiatedQoSPk);
+		ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileParametersStatus, ETimeLong), KErrNone, _L("RPacketQoS::GetProfileParameters timed out"));
+		ASSERT_EQUALS(getProfileParametersStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileParameters returned with an error"));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iTrafficClass > qosR5Requested.iReqTrafficClass, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficClass"));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iDeliveryOrderReqd > qosR5Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliveryOrderReqd."));	
+		ASSERT_TRUE(r5NegotiatedQoSValues.iDeliverErroneousSDU > qosR5Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliverErroneousSDU."));								
+		ASSERT_TRUE(r5NegotiatedQoSValues.iMaxSDUSize < qosR5Requested.iReqMaxSDUSize, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxSDUSize."));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iMaxRate.iDownlinkRate < qosR5Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iDownlinkRate"));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iMaxRate.iUplinkRate < qosR5Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iUplinkRate"));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iBER < qosR5Requested.iReqBER, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iBER."));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iSDUErrorRatio < qosR5Requested.iReqSDUErrorRatio, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSDUErrorRatio."));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iTrafficHandlingPriority > qosR5Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficHandlingPriority."));	
+		ASSERT_TRUE(r5NegotiatedQoSValues.iTransferDelay > qosR5Requested.iReqTransferDelay, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTransferDelay"));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iGuaranteedRate.iDownlinkRate < qosR5Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iDownlinkRate"));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iGuaranteedRate.iUplinkRate < qosR5Requested.iReqGuaranteedRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iUplinkRate"));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iSignallingIndication < qosR5Requested.iSignallingIndication, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSignallingIndication."));
+		ASSERT_TRUE(r5NegotiatedQoSValues.iSourceStatisticsDescriptor < qosR5Requested.iSourceStatisticsDescriptor, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSourceStatisticsDescriptor."));				
+		break;
+		}
+		
+	//Release QoS
+	iEtelSessionMgr.ReleasePrimaryPacketContextQoS(KMainServer,
+											KMainPhone, 
+											KMainPacketService, 
+											KPrimaryPacketContext1);
+
+	// Release packet context
+	iEtelSessionMgr.ReleasePrimaryPacketContext(KMainServer,
+											KMainPhone, 
+											KMainPacketService, 
+											KPrimaryPacketContext1);
+
+	// Pop
+	// setProfileParamStatus
+	// setConfigStatus
+	// notifyProfileChangedStatus
+	// contextActivateStatus
+	// getProfileParametersStatus
+	CleanupStack::PopAndDestroy(5, &setProfileParamStatus);		
+    }
+ 
+TPtrC CCTSYIntegrationTestPacketContext0060::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0060");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0061::CCTSYIntegrationTestPacketContext0061(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0061::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0061::~CCTSYIntegrationTestPacketContext0061()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0061::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0061
+ * @SYMFssID BA/CTSY/PKTC-0061
+ * @SYMTestCaseDesc Initialise a context.
+ * @SYMTestPriority High
+ * @SYMTestActions RPacketContext::InitialiseContext, RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketContext::SetConfig, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters, RPacketContext::OpenNewSecondaryContext
+ * @SYMTestExpectedResults Pass - RPacketContext::InitialiseContext returns TDataChannelV2 information.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify comm port information received.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure phone is attached to the packet service. 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Open a new primary context. 
+
+	// Initialise the context with RPacketContext::InitialiseContext 
+
+	// Check RPacketContext::InitialiseContext returns TDataChannelV2::iChannelId of length > 0
+	// Check RPacketContext::InitialiseContext returns TDataChannelV2::iCsy of length > 0
+	// Check RPacketContext::InitialiseContext returns TDataChannelV2::iPort of length > 0
+
+	// Set a valid context config using RPacketContext::SetConfig 
+
+	// Activate the context 
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus returns EStatusActive
+
+	// Open a new secondary context 
+
+	// Initialise the secondary context with RPacketContext::InitialiseContext 
+
+	// Check RPacketContext::InitialiseContext for the secondary context returns TDataChannelV2::iChannelId of length > 0
+	// Check RPacketContext::InitialiseContext for the secondary context returns TDataChannelV2::iCsy of length > 0
+	// Check RPacketContext::InitialiseContext for the secondary context returns TDataChannelV2::iPort of length > 0
+
+	// ===  Add packet filter ===
+
+	// Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter 
+
+	// ===  Add QoS ===
+
+	// Open a new QoS from the secondary context 
+
+	// Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities 
+
+	// Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities 
+
+	// Activate the secondary context with RPacketContext::Activate 
+
+	// Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive
+
+	// Check RPacketContext::GetStatus for the secondary context returns EStatusActive
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0061::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0061");
+	}
+
+
+
+CCTSYIntegrationTestPacketContext0062::CCTSYIntegrationTestPacketContext0062(CEtelSessionMgr& aEtelSessionMgr)
+	: CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+	{
+	SetTestStepName(CCTSYIntegrationTestPacketContext0062::GetTestStepName());
+	}
+
+CCTSYIntegrationTestPacketContext0062::~CCTSYIntegrationTestPacketContext0062()
+/**
+ * Destructor.
+ */
+	{
+	}
+
+TVerdict CCTSYIntegrationTestPacketContext0062::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-PKTC-0062
+ * @SYMFssID BA/CTSY/PKTC-0062
+ * @SYMTestCaseDesc Ensure change in QoS from network is handled correct when new QoS is not acceptable.
+ * @SYMTestPriority High
+ * @SYMTestActions 
+ * @SYMTestExpectedResults Pass - Context is deactivated.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify context is deactivated.
+ *
+ * @return - TVerdict code
+ */
+	{
+
+	////////////////////////////////////////////////////////////////
+	// SET UP
+	////////////////////////////////////////////////////////////////
+
+	
+	// Ensure there is a primary PDP context active. 
+
+
+	////////////////////////////////////////////////////////////////
+	// SET UP END
+	////////////////////////////////////////////////////////////////
+	
+	StartTest();
+	
+	////////////////////////////////////////////////////////////////
+	// TEST START
+	////////////////////////////////////////////////////////////////
+	
+	
+	// Simulator sends a modify PDP context request message with a QoS that is not acceptable to the phone.  
+
+	// Check RPacketContext::NotifyStatusChange completes with EStatusInactive
+
+	
+	////////////////////////////////////////////////////////////////
+	// TEST END
+	////////////////////////////////////////////////////////////////
+
+    StartCleanup();
+	
+	// Put any required test clean up here, then remove this comment
+	
+	return TestStepResult();
+	}
+
+TPtrC CCTSYIntegrationTestPacketContext0062::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+	{
+	return _L("CCTSYIntegrationTestPacketContext0062");
+	}
+
+
+