--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simtsy/test/Te_SimPacket/Te_SimPacket.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,1547 @@
+// Copyright (c) 2002-2009 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:
+// This program is designed the test of the .
+//
+//
+
+/**
+ @file
+*/
+
+#include "Te_SimPacket.h"
+
+//******************************************************************************
+// Context Configuration
+//******************************************************************************
+#define SIMTSY_PDP_TYPE1 RPacketContext::EPdpTypePPP
+#define SIMTSY_ACCESS_POINT1 _L8("ACME INTERNET PROVIDERS LTD")
+#define SIMTSY_PDP_ADDRESS1 _L8("i-MODE GATEWAY")
+#define SIMTSY_COMPRESSION1 RPacketContext::KPdpDataCompression
+#define SIMTSY_ANONYMOUS_ACCESS1 RPacketContext::ENotRequired
+#define SIMTSY_EGPRS_REQUIRED TRUE
+
+#define SIMTSY_PDP_TYPE2 RPacketContext::EPdpTypeIPv6
+#define SIMTSY_ACCESS_POINT2 _L8("SYMBIAN EMPLOYEE INTRANET")
+#define SIMTSY_PDP_ADDRESS2 _L8("A WAP PORTAL")
+#define SIMTSY_COMPRESSION2 RPacketContext::KPdpHeaderCompression
+#define SIMTSY_ANONYMOUS_ACCESS2 RPacketContext::ERequired
+
+#define SIMTSY_CSY _L("LOOPBACK.CSY")
+#define SIMTSY_PORT _L("LOOPBACK::0")
+
+#define SIM_PACKET_SERVICE_CAPS (RPacketService::KCapsSuspendSupported | \
+ RPacketService::KCapsMSClassSupported |\
+ RPacketService::KCapsCDMA2000HighSpeedDataSupported |\
+ RPacketService::KCapsNetworkAvailabilitySupported | \
+ RPacketService::KCapsProtocolPPPSupported)
+
+#define SIM_PACKET_SERVICE_OPTION RPacketContext::KHighSpeedCDMA2000Data
+#define SIM_PACKET_PROTOCOL RPacketContext::EPdpTypePPP
+#define SIM_DEFAULT_PARAM RPacketContext::KHighSpeedCDMA2000Data
+
+// CHAP authentication
+#define SIM_PACKET_CONTEXT_PROTOCOL1 RPacketContext::EProtocolCHAP
+#define SIM_PACKET_CONTEXT_USERNAME1 _L8("USER1")
+#define SIM_PACKET_CONTEXT_PASSWORD1 _L8("PASSWORD1")
+#define SIM_PACKET_CONTEXT_CHALLENGE1 _L8("CHALLENGE1")
+#define SIM_PACKET_CONTEXT_RESPONSE1 _L8("RESPONSE1")
+#define SIM_PACKET_CONTEXT_PRIMARYSERVER1 _L8("PRIMARYSERVER1")
+#define SIM_PACKET_CONTEXT_SECONDARYSERVER1 _L8("SECONDARYSERVER1")
+#define SIM_PACKET_CONTEXT_ID1 1
+
+// PAP authentication
+#define SIM_PACKET_CONTEXT_PROTOCOL2 RPacketContext::EProtocolPAP
+#define SIM_PACKET_CONTEXT_USERNAME2 _L("USER2")
+#define SIM_PACKET_CONTEXT_PASSWORD2 _L("PASSWORD2")
+#define SIM_PACKET_CONTEXT_CHALLENGE2 _L("NULL")
+#define SIM_PACKET_CONTEXT_RESPONSE2 _L("NULL")
+#define SIM_PACKET_CONTEXT_PRIMARYSERVER2 _L("PRIMARYSERVER2")
+#define SIM_PACKET_CONTEXT_SECONDARYSERVER2 _L("SECONDARYSERVER2")
+#define SIM_PACKET_CONTEXT_ID2 2
+
+//MBMS information
+#define SIM_PACKET_MBMS_TESTNUMBER 0
+#define SIM_PACKET_MBMS_SESSIONID 2
+#define SIM_PACKET_MBMS_SERVICEID 1155
+#define SIM_PACKET_MBMS_MNCID 1122
+#define SIM_PACKET_MBMS_MCCID 1234
+
+//******************************************************************************
+
+static TInt NTRasThreadFunction(TAny* /*aThreadData*/)
+/**
+* Does 'durty' work to start NT RAS session
+* @note It sets
+* iRate = EBps38400;
+* iDataBits = EData8;
+* iStopBits = EStop1 ;
+* iParity = EParityNone;
+* be sure that your NT comport has the same settings.
+*/
+ {
+ _LIT(KCsyName,"LOOPBACK.CSY");
+ _LIT(KPortName,"LOOPBACK::1");
+
+ _LIT8(KServerText,"SERVER");
+
+ CTrapCleanup* cleanup;
+ if ((cleanup=CTrapCleanup::New())==NULL)
+ return KErrGeneral;
+
+ RCommServ commServ;
+ TInt r=commServ.Connect();
+ r=commServ.LoadCommModule(KCsyName);
+ if( KErrNone == r)
+ {
+ RComm comm;
+ r=comm.Open(commServ,KPortName,ECommShared);
+ if( KErrNone == r)
+ {
+ TBuf8<6> readBuf;
+ TRequestStatus stat0;
+ comm.Read(stat0,readBuf);
+ User::WaitForRequest(stat0) ;
+
+ comm.Write(stat0,KServerText);
+ User::WaitForRequest(stat0) ;
+ }
+ comm.Close() ;
+ }
+ commServ.Close() ;
+ delete cleanup;
+ return r;
+ }
+
+TInt StartNTRasSimulation()
+/**
+* Starts virual, because of lookback serial driver,
+* NT RAS session
+*/
+ {
+ const TInt KStackSize=0x8000;
+ const TInt KHeapSize=0x8000;
+ const TInt KMaxHeapSize=0x80000;
+ TInt res = KErrNone ;
+ _LIT(KNtRasName,"NTRasEmulation");
+
+ RThread t;
+ res=t.Create(KNtRasName,NTRasThreadFunction,
+ KStackSize,KHeapSize,KMaxHeapSize,NULL);
+ t.Resume();
+ t.Close();
+
+ return res;
+ }
+
+//------------------------------------------------------------------
+// ** TEST SimPacket STEPS ***
+
+//------------------------------------------------------------------
+
+CGprsDefaultContextParamsTest::CGprsDefaultContextParamsTest()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("GprsDefaultContextParamsTest"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CGprsDefaultContextParamsTest::doTestStepL( void )
+/**
+ * This tests the default context params
+ */
+ {
+ SetSimtsyTestNumberL(0);
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+
+ // Some default params to set, does not matter what it is.
+ // The default params used are defined at the beginning of this file
+
+ TESTL(iPacketService.Open(iPhone) == KErrNone);
+
+ RPacketContext::TContextConfigGPRS setDefaultParams;
+ TPckg<RPacketContext::TContextConfigGPRS> setcontextConfigPckg(setDefaultParams);
+
+ setDefaultParams.iPdpType = SIMTSY_PDP_TYPE1;
+ setDefaultParams.iAccessPointName = SIMTSY_ACCESS_POINT1;
+ setDefaultParams.iPdpAddress = SIMTSY_PDP_ADDRESS1;
+ setDefaultParams.iPdpCompression = SIMTSY_COMPRESSION1;
+ setDefaultParams.iAnonymousAccessReqd = SIMTSY_ANONYMOUS_ACCESS1;
+ setDefaultParams.iUseEdge = SIMTSY_EGPRS_REQUIRED;
+ setDefaultParams.iProtocolConfigOption.iAuthInfo.iProtocol = SIM_PACKET_CONTEXT_PROTOCOL1;
+ setDefaultParams.iProtocolConfigOption.iAuthInfo.iUsername = SIM_PACKET_CONTEXT_USERNAME1;
+ setDefaultParams.iProtocolConfigOption.iAuthInfo.iPassword = SIM_PACKET_CONTEXT_PASSWORD1;
+ setDefaultParams.iProtocolConfigOption.iChallenge = SIM_PACKET_CONTEXT_CHALLENGE1;
+ setDefaultParams.iProtocolConfigOption.iResponse = SIM_PACKET_CONTEXT_RESPONSE1;
+ setDefaultParams.iProtocolConfigOption.iDnsAddresses.iPrimaryDns = SIM_PACKET_CONTEXT_PRIMARYSERVER1;
+ setDefaultParams.iProtocolConfigOption.iDnsAddresses.iSecondaryDns = SIM_PACKET_CONTEXT_SECONDARYSERVER1;
+ setDefaultParams.iProtocolConfigOption.iId = SIM_PACKET_CONTEXT_ID1;
+
+ TESTL(iPacketService.SetDefaultContextParams(setcontextConfigPckg) == KErrNone);
+
+ RPacketContext::TContextConfigGPRS getDefaultParams;
+ TPckg<RPacketContext::TContextConfigGPRS> getcontextConfigPckg(getDefaultParams);
+
+ TESTL(iPacketService.GetDefaultContextParams(getcontextConfigPckg) == KErrNone);
+ TestConfigParamsL(setDefaultParams, getDefaultParams);
+
+ iPacketService.Close();
+ iPhone.Close();
+ User::After(100000L);
+ return TestStepResult();
+ }
+//------------------------------------------------------------------
+
+CQoSTest::CQoSTest()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("QoSTest"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CQoSTest::doTestStepL( void )
+/**
+ * This tests the static GPRS caps.
+ */
+ {
+ SetSimtsyTestNumberL(0);
+ TBuf<30> contextName;
+ TBuf<30> profileName;
+ TRequestStatus stat1;
+ TRequestStatus stat2;
+ RPacketQoS qoS;
+ RPacketQoS::TQoSCapsGPRS staticQoSCaps;
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+ TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone);
+ qoS.OpenNewQoS(iPacketContext[0], profileName);
+
+ TPckg<RPacketQoS::TQoSCapsGPRS> staticQoSCapsPkg(staticQoSCaps);
+ qoS.GetProfileCapabilities(stat1, staticQoSCapsPkg);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ TESTL(staticQoSCaps.ExtensionId()==TPacketDataConfigBase::KConfigGPRS);
+
+ TESTL(staticQoSCaps.iPrecedence == RPacketQoS::EPriorityMediumPrecedence);
+ TESTL(staticQoSCaps.iDelay == RPacketQoS::EDelayClass2 );
+ TESTL(staticQoSCaps.iReliability == RPacketQoS::EReliabilityClass2);
+ TESTL(staticQoSCaps.iPeak == RPacketQoS::EPeakThroughput64000);
+ TESTL(staticQoSCaps.iMean == RPacketQoS::EMeanThroughput100);
+
+ RPacketQoS::TQoSGPRSNegotiated negotiatedQoS;
+ RPacketQoS::TQoSGPRSRequested SetQoS;
+ RPacketQoS::TQoSGPRSNegotiated comparenegotiatedQoS;
+ RPacketQoS::TQoSGPRSRequested notifyQoS;
+ // Setting to Best effort.
+ comparenegotiatedQoS.iPrecedence = RPacketQoS::EPriorityMediumPrecedence;
+ comparenegotiatedQoS.iDelay = RPacketQoS::EDelayClass2;
+ comparenegotiatedQoS.iReliability = RPacketQoS::EReliabilityClass2;
+ comparenegotiatedQoS.iPeakThroughput = RPacketQoS::EPeakThroughput64000;
+ comparenegotiatedQoS.iMeanThroughput = RPacketQoS::EMeanThroughput100;
+ TPckg<RPacketQoS::TQoSGPRSNegotiated> negotiatedQoSPkg(negotiatedQoS);
+ qoS.GetProfileParameters(stat1, negotiatedQoSPkg);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ TestConfigParamsL(negotiatedQoS, comparenegotiatedQoS);
+
+ // Set to anything just to test that it can be done..
+ SetQoS.iReqPrecedence = RPacketQoS::EPriorityMediumPrecedence;
+ SetQoS.iMinPrecedence = RPacketQoS::EPriorityLowPrecedence;
+ SetQoS.iReqDelay = RPacketQoS::EDelayClass2;
+ SetQoS.iMinDelay = RPacketQoS::EDelayClass1;
+ SetQoS.iReqReliability = RPacketQoS::EReliabilityClass2;
+ SetQoS.iMinReliability = RPacketQoS::EReliabilityClass1;
+ SetQoS.iReqPeakThroughput = RPacketQoS::EPeakThroughput64000;
+ SetQoS.iMinPeakThroughput = RPacketQoS::EPeakThroughput16000;
+ SetQoS.iReqMeanThroughput = RPacketQoS::EMeanThroughput2000;
+ SetQoS.iMinMeanThroughput = RPacketQoS::EMeanThroughput200;
+
+
+ TPckg<RPacketQoS::TQoSGPRSRequested> SetQoSPkg(SetQoS);
+ TPckg<RPacketQoS::TQoSGPRSRequested> notifyQoSPkg(notifyQoS);
+ qoS.NotifyProfileChanged(stat2, notifyQoSPkg);
+ qoS.SetProfileParameters(stat1, SetQoSPkg);
+ User::WaitForRequest(stat2);
+ User::WaitForRequest(stat1);
+ TESTL(stat2.Int() == KErrNone);
+ TESTL(stat1.Int() == KErrNone);
+
+ qoS.Close();
+ iPacketContext[0].Close();
+ iPacketService.Close();
+ iPhone.Close();
+ return TestStepResult();
+ }
+//------------------------------------------------------------------
+
+CGprsUnSupportedTest::CGprsUnSupportedTest()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("GprsUnSupportedTest"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CGprsUnSupportedTest::doTestStepL( void )
+/**
+ * Tests all unsupported GPRS API calls to the TSY.
+ */
+ {
+ SetSimtsyTestNumberL(0);
+ TRequestStatus stat1;
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+ iPacketService.RejectActivationRequest(stat1);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int()== KErrNotSupported);
+
+ iPacketService.RejectActivationRequest(stat1);
+ iPacketService.CancelAsyncRequest(EPacketRejectActivationRequest);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNotSupported);
+
+ RPacketService::TMSClass msClass;
+ iPacketService.NotifyMSClassChange(stat1, msClass);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNotSupported);
+
+ RPacketService::TAttachMode attachMode = RPacketService::EAttachWhenPossible;
+ TESTL(iPacketService.SetAttachMode(attachMode) == KErrNotSupported);
+ TESTL(iPacketService.GetAttachMode(attachMode) == KErrNone);
+ RPacketService::TRegistrationStatus registrationStatus = RPacketService::ERegisteredRoaming;
+ iPacketService.GetNtwkRegStatus(stat1, registrationStatus);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+/* //This test should not be here as this method is supported
+ iPacketService.NotifyChangeOfNtwkRegStatus(stat1, registrationStatus);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNotSupported);
+*/
+ iPacketService.Close();
+ iPhone.Close();
+ return TestStepResult();
+ }
+
+/** Each test step initialises its own name
+*/
+CTestDynamicCaps::CTestDynamicCaps()
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("TestDynamicCaps"));
+ }
+
+/**
+ * Tests the dynamic capabilities APIs: RPacketService::GetDynamicCaps and RPacketService::NotifyDynamicCapsChange
+ * @return Test step verdict.
+ */
+TVerdict CTestDynamicCaps::doTestStepL()
+ {
+ SetSimtsyTestNumberL(0);
+
+ // Initialise and open the packet service...
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+
+ //
+ // test GetDynamicCaps
+ //
+ RPacketService::TDynamicCapsFlags dynCapsFlags;
+ TEST(iPacketService.GetDynamicCaps(dynCapsFlags) == KErrNone);
+ TEST(dynCapsFlags == RPacketService::KCapsEGPRS);
+
+ //
+ // test NotifyDynamicCapsChange
+ //
+ TRequestStatus requestStatus;
+ dynCapsFlags = 0;
+ iPacketService.NotifyDynamicCapsChange(requestStatus, dynCapsFlags);
+ User::WaitForRequest(requestStatus);
+ TEST(requestStatus == KErrNone);
+ TEST(dynCapsFlags == RPacketService::KCapsHSDPA);
+
+ //
+ // test cancellation of NotifyDynamicCapsChange
+ //
+ iPacketService.NotifyDynamicCapsChange(requestStatus, dynCapsFlags);
+ iPacketService.CancelAsyncRequest(EPacketNotifyDynamicCapsChange);
+ User::WaitForRequest(requestStatus);
+ TEST(requestStatus == KErrCancel);
+
+ iPacketService.Close();
+ iPhone.Close();
+ return TestStepResult();
+ }
+
+//------------------------------------------------------------------
+
+CGprsContextAttachTest::CGprsContextAttachTest()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("GprsContextAttachTest"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CGprsContextAttachTest::doTestStepL( void )
+/**
+ * This tests the context attach and detach
+ */
+ {
+ SetSimtsyTestNumberL(0);
+ TRequestStatus stat1;
+ TRequestStatus stat2;
+ TBuf<50> contextName;
+ RPacketContext::TContextStatus contextStatus;
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+ StartNTRasSimulation() ;
+
+ TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone);
+
+ iPacketContext[0].NotifyStatusChange(stat1, contextStatus);
+ iPacketContext[0].CancelAsyncRequest(EPacketContextNotifyStatusChange);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrCancel);
+
+ iPacketContext[0].NotifyStatusChange(stat1, contextStatus);
+ iPacketContext[0].Activate(stat2);
+
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ TESTL(contextStatus == RPacketContext::EStatusActivating);
+
+ iPacketContext[0].NotifyStatusChange(stat1, contextStatus);
+ User::WaitForRequest(stat2);
+ TESTL(stat2.Int()== KErrNone);
+
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ TESTL(contextStatus == RPacketContext::EStatusActive);
+
+ iPacketContext[0].NotifyStatusChange(stat1, contextStatus);
+
+ // need a few seconds between activating and deactivating - allow NTRAS server to respond
+ User::After(100000L);
+ iPacketContext[0].Deactivate(stat2);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ TESTL(contextStatus == RPacketContext::EStatusDeactivating);
+
+ iPacketContext[0].NotifyStatusChange(stat1, contextStatus);
+ User::WaitForRequest(stat2);
+ TESTL(stat2.Int() == KErrNone);
+
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ TESTL(contextStatus == RPacketContext::EStatusInactive);
+
+ iPacketContext[0].Close();
+ iPacketService.Close();
+ iPhone.Close();
+ return TestStepResult();
+ }
+//------------------------------------------------------------------
+
+CGprsContextDeleteTest::CGprsContextDeleteTest()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("GprsContextDeleteTest"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CGprsContextDeleteTest::doTestStepL( void )
+/**
+ * This tests the context delete.
+ */
+ {
+ SetSimtsyTestNumberL(0);
+ TRequestStatus stat1;
+ TBuf<30> contextName;
+ RPacketContext::TContextStatus contextStatus;
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+ TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone);
+
+ iPacketContext[0].Delete(stat1);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+
+ iPacketContext[0].Activate(stat1);
+ User::WaitForRequest(stat1);
+
+ TESTL(stat1.Int() == KErrNotReady);
+ TESTL(iPacketContext[0].GetStatus(contextStatus) == KErrNone);
+ TESTL(contextStatus == RPacketContext::EStatusDeleted);
+
+ iPacketContext[0].Close();
+ iPacketService.Close();
+ iPhone.Close();
+ return TestStepResult();
+ }
+//------------------------------------------------------------------
+
+CGprsContextLoanComport::CGprsContextLoanComport()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("GprsContextLoanComport"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CGprsContextLoanComport::doTestStepL( void )
+/**
+ * This tests the comport loan.
+ */
+ {
+ SetSimtsyTestNumberL(0);
+ TRequestStatus stat1;
+ TBuf<30> contextName;
+ RCall::TCommPort dataPort;
+ StartNTRasSimulation() ;
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+ TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone);
+
+ iPacketContext[0].RecoverCommPort(stat1);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrEtelPortNotLoanedToClient);
+
+ //!!!!
+ iPacketContext[0].LoanCommPort(stat1, dataPort);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrEtelCallNotActive);
+
+ iPacketContext[0].Activate(stat1);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+
+ iPacketContext[0].LoanCommPort(stat1, dataPort);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+
+ iPacketContext[0].Activate(stat1);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrEtelCallAlreadyActive);
+
+ iPacketContext[0].RecoverCommPort(stat1);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+
+ iPacketContext[0].Deactivate(stat1);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+
+ iPacketContext[0].Close();
+ iPacketService.Close();
+ iPhone.Close();
+ return TestStepResult();
+ }
+//------------------------------------------------------------------
+
+CGprsContextUnSupportedTest::CGprsContextUnSupportedTest()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("GprsContextUnSupportedTest"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CGprsContextUnSupportedTest::doTestStepL( void )
+/**
+ * This tests all GPRS context API calls.
+ */
+ {
+ SetSimtsyTestNumberL(0);
+ TRequestStatus stat1;
+ TBuf<30> contextName;
+ TInt err = 0;
+ RPacketContext::TDataVolume volume;
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+ TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone);
+
+ TESTL(iPacketContext[0].GetDataVolumeTransferred(volume) == KErrNotSupported);
+ iPacketContext[0].NotifyDataTransferred(stat1, volume);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNotSupported);
+
+ TESTL(iPacketContext[0].GetLastErrorCause(err) == KErrNotSupported);
+
+ iPacketContext[0].Close();
+ iPacketService.Close();
+ iPhone.Close();
+ return TestStepResult();
+ }
+//------------------------------------------------------------------
+
+CGprsCancelTest::CGprsCancelTest()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("GprsCancelTest"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CGprsCancelTest::doTestStepL( void )
+/**
+ * This test will call all GPRS API calls
+ * that can be canceled with an outstanding request
+ * to the phone.
+ */
+ {
+ SetSimtsyTestNumberL(0);
+ TRequestStatus stat;
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+
+ iPacketService.Attach(stat);
+ iPacketService.CancelAsyncRequest(EPacketAttach);
+ User::WaitForRequest(stat);
+ TESTL((stat.Int() == KErrCancel) || (stat.Int() == KErrNone));
+
+ iPacketService.Detach(stat);
+ iPacketService.CancelAsyncRequest(EPacketDetach);
+ User::WaitForRequest(stat);
+ TESTL((stat.Int() == KErrCancel)||(stat.Int() == KErrNone));
+
+ RPacketService::TMSClass currentClass;
+ RPacketService::TMSClass maxClass;
+
+ iPacketService.GetMSClass(stat, currentClass, maxClass);
+ iPacketService.CancelAsyncRequest(EPacketGetMSClass);
+ User::WaitForRequest(stat);
+ TESTL((stat.Int() == KErrCancel)||(stat.Int() == KErrNone));
+
+ currentClass = RPacketService::EMSClassSuspensionRequired;
+ iPacketService.SetMSClass(stat, currentClass);
+ iPacketService.CancelAsyncRequest(EPacketSetMSClass);
+ User::WaitForRequest(stat);
+ TESTL((stat.Int() == KErrCancel)||(stat.Int() == KErrNone));
+
+ iPacketService.Close();
+ iPhone.Close();
+ return TestStepResult();
+ }
+//------------------------------------------------------------------
+
+CGprsAttachTest::CGprsAttachTest()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("GprsAttachTest"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CGprsAttachTest::doTestStepL( void )
+/**
+ * This tests the attach and detach.
+ */
+ {
+ SetSimtsyTestNumberL(0);
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TRequestStatus stat1;
+ RPacketService::TStatus status;
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+ iPacketService.Attach(stat1);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ iPacketService.GetStatus(status);
+ TESTL(status == RPacketService::EStatusAttached);
+ iPacketService.Detach(stat1);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ iPacketService.GetStatus(status);
+ TESTL(status == RPacketService::EStatusUnattached);
+ iPacketService.Close();
+ iPhone.Close();
+ return TestStepResult();
+ }
+//------------------------------------------------------------------
+
+CGprsNotificationTest::CGprsNotificationTest()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("GprsNotificationTest"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CGprsNotificationTest::doTestStepL( void )
+/**
+ * Tests Notify Context added, Tests Notify status
+ */
+ {
+ SetSimtsyTestNumberL(1);
+ TRequestStatus stat1,stat2,stat3;
+ TBuf<20> context= _L("");
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+ TBuf<40> contextId;
+
+ iPacketService.NotifyContextAdded(stat1, contextId);
+ iPacketService.CancelAsyncRequest(EPacketNotifyContextAdded);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int()== KErrCancel);
+ iPacketService.NotifyContextAdded(stat1, contextId);
+
+ TESTL(iPacketContext[0].OpenNewContext(iPacketService, context) == KErrNone);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+
+ RPacketService::TStatus gprsStatus;
+ iPacketService.NotifyStatusChange(stat2, gprsStatus);
+ iPacketService.CancelAsyncRequest(EPacketNotifyStatusChange);
+ User::WaitForRequest(stat2);
+ TESTL(stat2.Int() == KErrCancel);
+
+ iPacketService.NotifyStatusChange(stat2, gprsStatus);
+ iPacketService.Attach(stat1);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ User::WaitForRequest(stat2);
+ TESTL(stat2.Int() == KErrNone);
+ TESTL(gprsStatus == RPacketService::EStatusAttached);
+
+ iPacketService.NotifyStatusChange(stat3, gprsStatus);
+ iPacketService.Detach(stat1);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ User::WaitForRequest(stat3);
+ TESTL(stat3.Int() == KErrNone);
+ TESTL(gprsStatus == RPacketService::EStatusUnattached);
+
+ iPacketContext[0].Close();
+ iPacketService.Close();
+ iPhone.Close();
+ return TestStepResult();
+ }
+//------------------------------------------------------------------
+
+CGprsMsClassTest::CGprsMsClassTest()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("GprsMsClassTest"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CGprsMsClassTest::doTestStepL( void )
+/**
+ * This tests the MS Class.
+ */
+ {
+ SetSimtsyTestNumberL(0);
+ TRequestStatus stat1;
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+
+ RPacketService::TMSClass currentClass;
+ RPacketService::TMSClass maxClass;
+ iPacketService.GetMSClass(stat1, currentClass, maxClass);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+
+ iPacketService.SetMSClass(stat1, currentClass);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ TESTL(currentClass == RPacketService::EMSClassSuspensionRequired);
+ TESTL(maxClass == RPacketService::EMSClassSuspensionRequired);
+
+ iPacketService.Close();
+ iPhone.Close();
+ return TestStepResult();
+ }
+//------------------------------------------------------------------
+
+CGprsContextConfigTest::CGprsContextConfigTest()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("GprsContextConfigTest"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CGprsContextConfigTest::doTestStepL( void )
+/**
+ * Test context config.
+ */
+ {
+ SetSimtsyTestNumberL(0);
+ TRequestStatus stat1;
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+ TBuf<30> contextName;
+ TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone);
+ TESTL(iPacketContext[1].OpenNewContext(iPacketService, contextName) == KErrNone);
+
+ RPacketContext::TContextConfigGPRS Getparams;
+ RPacketContext::TContextConfigGPRS Setparams;
+ Setparams.iPdpType = SIMTSY_PDP_TYPE2;
+ Setparams.iAccessPointName = SIMTSY_ACCESS_POINT2;
+ Setparams.iPdpAddress = SIMTSY_PDP_ADDRESS2;
+ Setparams.iPdpCompression = SIMTSY_COMPRESSION2;
+ Setparams.iAnonymousAccessReqd = SIMTSY_ANONYMOUS_ACCESS2;
+ Setparams.iUseEdge = SIMTSY_EGPRS_REQUIRED;
+
+ TPckg<RPacketContext::TContextConfigGPRS> GetcontextConfigPckg(Getparams);
+ iPacketContext[0].GetConfig(stat1, GetcontextConfigPckg);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ Setparams = Getparams;
+
+ TPckg<RPacketContext::TContextConfigGPRS> SetcontextConfigPckg(Setparams);
+ iPacketContext[0].SetConfig(stat1, SetcontextConfigPckg);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ iPacketContext[1].SetConfig(stat1, SetcontextConfigPckg);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ iPacketContext[0].GetConfig(stat1, SetcontextConfigPckg);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ TRequestStatus stat;
+ iPacketContext[0].SetConfig(stat, SetcontextConfigPckg);
+ iPacketContext[0].CancelAsyncRequest(EPacketContextSetConfig);
+ User::WaitForRequest(stat);
+ TESTL(stat.Int() == KErrCancel || stat.Int() == KErrNone);
+ //!!!!
+ iPacketContext[0].GetConfig(stat, GetcontextConfigPckg);
+ iPacketContext[0].CancelAsyncRequest(EPacketContextGetConfig);
+ User::WaitForRequest(stat);
+ TESTL(stat.Int() == KErrCancel || stat.Int() == KErrNone);
+
+
+ Setparams.iPdpType = RPacketContext::TProtocolType(20); // Set out of range
+ TPckg<RPacketContext::TContextConfigGPRS> errorPackage(Setparams);
+ iPacketContext[0].SetConfig(stat1, errorPackage);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrCorrupt);
+
+
+ iPacketContext[0].Close();
+ iPacketContext[1].Close();
+ iPacketService.Close();
+ iPhone.Close();
+ return TestStepResult();
+ }
+//------------------------------------------------------------------
+
+CGprsContextConfigNotificationsTest::CGprsContextConfigNotificationsTest()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("GprsContextConfigNotificationsTest"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CGprsContextConfigNotificationsTest::doTestStepL( void )
+/**
+ * Test context notifications.
+ */
+ {
+ SetSimtsyTestNumberL(0);
+ TRequestStatus stat1, stat2;
+ TBuf<30> contextName;
+ RPacketContext::TContextConfigGPRS params, notifyParams;
+ TPckg<RPacketContext::TContextConfigGPRS> contextConfigPckg(params);
+ TPckg<RPacketContext::TContextConfigGPRS> notifyContextConfigPckg(notifyParams);
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+ TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone);
+ TESTL(iPacketContext[1].OpenNewContext(iPacketService, contextName) == KErrNone);
+ iPacketContext[0].NotifyConfigChanged(stat1, notifyContextConfigPckg);
+ iPacketContext[0].CancelAsyncRequest(EPacketContextNotifyConfigChanged);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrCancel);
+
+ iPacketContext[0].GetConfig(stat1, contextConfigPckg);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ iPacketContext[0].NotifyConfigChanged(stat1, notifyContextConfigPckg);
+
+ iPacketContext[0].SetConfig(stat2, contextConfigPckg);
+ User::WaitForRequest(stat2);
+ TESTL(stat2.Int() == KErrNone);
+
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ TestConfigParamsL(params, notifyParams);
+
+ iPacketContext[0].Close();
+ iPacketContext[1].Close();
+ iPacketService.Close();
+ iPhone.Close();
+ User::After(1000000); // to allow the next text to be able to see the contexts as closed
+ return TestStepResult();
+ }
+//------------------------------------------------------------------
+
+COpenGprsMaxContextsTest::COpenGprsMaxContextsTest()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("OpenGprsMaxContextsTest"));
+ }
+//------------------------------------------------------------------
+
+TVerdict COpenGprsMaxContextsTest::doTestStepL( void )
+/**
+ * Tests enumerate contexts, open new context, open existing context.
+ */
+ {
+ SetSimtsyTestNumberL(0);
+ TRequestStatus stat1;
+ TBuf<20> contextName = _L("");
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+ TInt countContexts;
+ TInt maxAllowedContexts;
+ //!!!
+ iPacketService.EnumerateContexts(stat1, countContexts, maxAllowedContexts);
+ User::WaitForRequest(stat1);
+ TESTL(countContexts == 0);
+
+ TESTL(maxAllowedContexts == 11);
+
+ TInt i = 0;
+ RPacketService::TContextInfo contextinfo;
+
+ for(i = 0; i < maxAllowedContexts;i++)
+ {
+ RPacketContext contextPacket;
+ TBuf<30> tmpContextName;
+ tmpContextName = _L("PRIMARY");
+ tmpContextName.AppendNum(i+1);
+ TESTL(iPacketContext[i].OpenNewContext(iPacketService, contextName) == KErrNone);
+ iPacketService.GetContextInfo(stat1, i, contextinfo);
+ User::WaitForRequest(stat1);
+ TESTL(contextinfo.iName == tmpContextName);
+ TESTL(contextinfo.iStatus == RPacketContext::EStatusInactive);
+ TESTL(contextPacket.OpenExistingContext(iPacketService, contextName) == KErrNone);
+ TESTL(contextName == tmpContextName);
+ contextPacket.Close();
+ iPhone.Close();
+ }
+
+ iPacketService.GetContextInfo(stat1, i+1, contextinfo);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrArgument);
+ for(i = 0; i < maxAllowedContexts;i++)
+ {
+ iPacketContext[i].Close();
+ }
+ iPacketService.Close();
+ iPhone.Close();
+ return TestStepResult();
+ }
+
+//------------------------------------------------------------------
+
+CGprsContextConfigArbitraryAddressTest::CGprsContextConfigArbitraryAddressTest()
+/** Each test step initialises it's own name
+*/
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("GprsContextConfigArbitraryAddressTest"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CGprsContextConfigArbitraryAddressTest::doTestStepL()
+/**
+ * Test context config.
+ */
+ {
+ SetSimtsyTestNumberL(0);
+ TRequestStatus stat1;
+ RPacketContext::TContextConfigGPRS getParams;
+ RPacketContext::TContextConfigGPRS setParams;
+
+ // Loading configuration from File
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+ TBuf<30> contextName;
+ TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone);
+
+ // Getting the Actual Configuration
+ TPckg<RPacketContext::TContextConfigGPRS> getContextConfigPckg(getParams);
+ iPacketContext[0].GetConfig(stat1, getContextConfigPckg);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+ setParams = getParams;
+
+ // Hacking the PdpAddress with an Arbitrary String (doesn't need to be a proper IP)
+ setParams.iPdpAddress = _L8("ARBITRARY ADDRESS");
+
+ // Setting the New Configuration checking that it is accepted (no "KErrCorrupt")
+ TPckg<RPacketContext::TContextConfigGPRS> setContextConfigPckg(setParams);
+ iPacketContext[0].SetConfig(stat1, setContextConfigPckg);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() != KErrCorrupt && stat1.Int() == KErrNone);
+
+ // Getting the Configuration
+ iPacketContext[0].GetConfig(stat1, setContextConfigPckg);
+ User::WaitForRequest(stat1);
+ TESTL(stat1.Int() == KErrNone);
+
+ // Checking the Configuration was correctly changed by Sim.tsy
+ TESTL(setParams.iPdpAddress.Compare(getParams.iPdpAddress) == 0);
+
+ iPacketContext[0].Close();
+ iPacketService.Close();
+ iPhone.Close();
+ return TestStepResult();
+ }
+
+//------------------------------------------------------------------
+
+CMbmsOpenNewContextTest::CMbmsOpenNewContextTest()
+/** Each test step initialises it's own name
+ */
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("EtelPcktMbmsCap1"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CMbmsOpenNewContextTest::doTestStepL( void )
+/**
+ * Tests creation of new MBMS context activation using
+ * OpenNewContext of RPacketMbmsContext
+ */
+ {
+ SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER);
+ TRequestStatus reqStatus;
+ TBuf<20> contextName = _L("");
+
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+
+ TInt ret= iPacketMbmsContext.OpenNewContext(iPacketService, contextName);
+ TEST(ret == KErrNone); //OpenNewContext will not use any capabilities.
+
+ iPacketMbmsContext.Close();
+ iPacketService.Close();
+ iPhone.Close();
+
+ return TestStepResult();
+ }
+
+
+//-------------------------------------------------------------------------
+
+CMbmsUpdateSessionTest::CMbmsUpdateSessionTest()
+/** Each test step initialises it's own name
+ */
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("EtelPcktMbmsCap2"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CMbmsUpdateSessionTest::doTestStepL( void )
+/**
+ * Tests creation of new MBMS context activation and
+ * tests the update session functionality of the MBMS context using the
+ * API MbmsUpdateSessionTest of RPacketMbmsContext
+ */
+ {
+ SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER);
+ TRequestStatus reqStatus;
+ TBuf<20> contextName = _L("");
+
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+
+ TInt ret= iPacketMbmsContext.OpenNewContext(iPacketService, contextName);
+ TESTL(ret == KErrNone);
+
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> contextConfigPckg(contextConfig);
+
+ //Get configuration for the MBMS
+ iPacketMbmsContext.GetConfig(reqStatus, contextConfigPckg);
+ User::WaitForRequest(reqStatus);
+
+ RPacketContext::TContextStatus contextStatus;
+ TRequestStatus notifyStatusRequest;
+ iPacketMbmsContext.NotifyStatusChange(notifyStatusRequest, contextStatus);
+
+ // Activate the MBMS context
+ iPacketMbmsContext.Activate(reqStatus);
+ User::WaitForRequest(reqStatus);
+
+ User::WaitForRequest(notifyStatusRequest);//completes NotifyStatusChange with state “ctivating”
+
+ /** Session is added to the activated services table */
+ TMbmsAction aAction=EAddEntries;
+ TUint sessionid=SIM_PACKET_MBMS_SESSIONID;
+ TRequestStatus updateSessionRequest;
+ iPacketMbmsContext.UpdateMbmsSessionList(updateSessionRequest,reinterpret_cast<TMbmsAction &>(aAction), sessionid);
+
+ /** the state of the session added changes from inactive to activated */
+ User::WaitForRequest(updateSessionRequest);//completes UpdateSession
+ TESTL(updateSessionRequest.Int() == KErrPermissionDenied);
+
+ iPacketMbmsContext.Close();
+ iPacketService.Close();
+ iPhone.Close();
+
+ return TestStepResult();
+ }
+
+//-------------------------------------------------------------------------
+CGetMbmsNetworkServiceStatus::CGetMbmsNetworkServiceStatus()
+/** Each test step initialises it's own name
+ */
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("EtelPcktMbmsCap3"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CGetMbmsNetworkServiceStatus::doTestStepL( void )
+/**
+ * Tests the functionality of GetMbmsNetworkServiceStatus of RPacketService.
+ *
+ */
+ {
+ SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER);
+ TRequestStatus reqStatus;
+ TBuf<20> contextName = _L("");
+
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+
+ TMbmsNetworkServiceStatus tMbmsNetworkServiceStatus;
+ TBool attemptAttached = ETrue;
+
+ iPacketService.GetMbmsNetworkServiceStatus(reqStatus, attemptAttached, tMbmsNetworkServiceStatus);
+ User::WaitForRequest(reqStatus);
+ TESTL(reqStatus.Int() == KErrPermissionDenied);
+
+ iPacketService.Close();
+ iPhone.Close();
+
+ return TestStepResult();
+ }
+
+//-------------------------------------------------------------------------
+
+CNotifyMbmsNetworkServiceStatusChange::CNotifyMbmsNetworkServiceStatusChange()
+/** Each test step initialises it's own name
+ */
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("EtelPcktMbmsCap4"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CNotifyMbmsNetworkServiceStatusChange::doTestStepL( void )
+/**
+ * Tests the functionality of NotifyMbmsNetworkServiceStatusChange of RPacketService.
+ *
+ */
+ {
+ SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER);
+ TRequestStatus reqStatus;
+ TBuf<20> contextName = _L("");
+
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+
+ TMbmsNetworkServiceStatus tMbmsNetworkServiceStatus;
+
+ //To get notified when the network service status changes
+ iPacketService.NotifyMbmsNetworkServiceStatusChange(reqStatus, tMbmsNetworkServiceStatus);
+ User::WaitForRequest(reqStatus);
+
+ TESTL(reqStatus.Int() == KErrPermissionDenied);
+
+ iPacketService.Close();
+ iPhone.Close();
+
+ return TestStepResult();
+ }
+
+//-------------------------------------------------------------------------
+
+CNotifyMbmsServiceAvailabilityChange::CNotifyMbmsServiceAvailabilityChange()
+/** Each test step initialises it's own name
+ */
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("EtelPcktMbmsCap5"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CNotifyMbmsServiceAvailabilityChange::doTestStepL( void )
+/**
+ * Tests Notification of the Service Availability List using the
+ * API NotifyMbmsServiceAvailabilityListChange of RPacketService.
+ */
+ {
+ SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER);
+ TRequestStatus reqStatus;
+ TBuf<20> contextName = _L("");
+
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+
+ CPcktMbmsMonitoredServiceList* mbmslist = CPcktMbmsMonitoredServiceList::NewL();
+ CleanupStack::PushL(mbmslist);
+
+ //Update the Mbms service availability List
+ TMbmsAction aAction=EAddEntries;
+ iPacketService.UpdateMbmsMonitorServiceListL(reqStatus, reinterpret_cast<TMbmsAction &>(aAction), mbmslist);
+ User::WaitForRequest(reqStatus);
+
+ //Notify the change in the mbms service parameter list
+ iPacketService.NotifyMbmsServiceAvailabilityChange (reqStatus);
+ User::WaitForRequest(reqStatus);
+ TESTL(reqStatus.Int() == KErrNone);
+
+ CleanupStack::PopAndDestroy(); //mbmslist
+ iPacketService.Close();
+ iPhone.Close();
+
+ return TestStepResult();
+ }
+
+
+//-------------------------------------------------------------------------
+
+CUpdateMbmsMonitorServiceList::CUpdateMbmsMonitorServiceList()
+/** Each test step initialises it's own name
+ */
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("EtelPcktMbmsCap6"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CUpdateMbmsMonitorServiceList::doTestStepL( void )
+/**
+ * Tests updation of the Service Monitoring List using the
+ * API UpdateMbmsMonitorServiceListL of RPacketService.
+ */
+ {
+ SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER);
+ TRequestStatus reqStatus;
+ TBuf<20> contextName = _L("");
+
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+
+ CPcktMbmsMonitoredServiceList* mbmsList = CPcktMbmsMonitoredServiceList::NewL();
+ CleanupStack::PushL(mbmsList);
+
+ /* ADD SERVICE */
+
+ RPacketService::TMbmsServiceAvailabilityV1 mbmsServAvail;
+ TMbmsAction action=EAddEntries;
+ TInt ab1=0,s1=1,a1=0;
+ TInt ab2=1,s2=2,a2=0;
+
+ mbmsServAvail.iTmgi.SetServiceId(SIM_PACKET_MBMS_SERVICEID);
+ mbmsServAvail.iTmgi.SetMCC(SIM_PACKET_MBMS_MCCID);
+ mbmsServAvail.iTmgi.SetMNC(SIM_PACKET_MBMS_MNCID);
+ mbmsServAvail.iMbmsServiceMode = reinterpret_cast<TMbmsServiceMode&>(s1);
+ mbmsServAvail.iMbmsAvailabilityStatus = reinterpret_cast<TMbmsAvailabilityStatus&>(a1);
+ mbmsServAvail.iMbmsAccessBearer = reinterpret_cast<TMbmsScope&>(ab1);
+ mbmsList->AddEntryL(mbmsServAvail);
+
+ mbmsServAvail.iTmgi.SetServiceId(SIM_PACKET_MBMS_SERVICEID);
+ mbmsServAvail.iTmgi.SetMCC(SIM_PACKET_MBMS_MCCID);
+ mbmsServAvail.iTmgi.SetMNC(SIM_PACKET_MBMS_MNCID);
+ mbmsServAvail.iMbmsServiceMode = reinterpret_cast<TMbmsServiceMode&>(s2);
+ mbmsServAvail.iMbmsAvailabilityStatus = reinterpret_cast<TMbmsAvailabilityStatus&>(a2);
+ mbmsServAvail.iMbmsAccessBearer = reinterpret_cast<TMbmsScope&>(ab2);
+ mbmsList->AddEntryL(mbmsServAvail);
+
+ iPacketService.UpdateMbmsMonitorServiceListL(reqStatus,action,mbmsList);
+ User::WaitForRequest(reqStatus);
+ CleanupStack::PopAndDestroy();
+ TESTL(reqStatus.Int() == KErrPermissionDenied);
+
+ /* REMOVE SPECIFIC SERVICE */
+ mbmsList= CPcktMbmsMonitoredServiceList::NewL();
+ CleanupStack::PushL(mbmsList);
+ action=ERemoveEntries;
+ mbmsServAvail.iTmgi.SetServiceId(2345);
+ mbmsServAvail.iTmgi.SetMCC(2345);
+ mbmsServAvail.iTmgi.SetMNC(2345);
+ mbmsServAvail.iMbmsServiceMode = reinterpret_cast<TMbmsServiceMode&>(s2);
+ mbmsServAvail.iMbmsAvailabilityStatus = reinterpret_cast<TMbmsAvailabilityStatus&>(a2);
+ mbmsServAvail.iMbmsAccessBearer = reinterpret_cast<TMbmsScope&>(ab2);
+ mbmsList->AddEntryL(mbmsServAvail);
+
+ iPacketService.UpdateMbmsMonitorServiceListL(reqStatus,action,mbmsList);
+ User::WaitForRequest(reqStatus);
+ CleanupStack::PopAndDestroy();
+ TESTL(reqStatus.Int() == KErrPermissionDenied);
+
+ /* REMOVE_ALL */
+ action=ERemoveAllEntries;
+ iPacketService.UpdateMbmsMonitorServiceListL(reqStatus,action);
+ User::WaitForRequest(reqStatus);
+
+ TESTL(reqStatus.Int() == KErrPermissionDenied);
+
+ iPacketService.Close();
+ iPhone.Close();
+
+ return TestStepResult();
+ }
+
+//-------------------------------------------------------------------------
+
+CEnumerateMbmsActiveServiceList::CEnumerateMbmsActiveServiceList()
+/** Each test step initialises it's own name
+ */
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("EtelPcktMbmsCap7"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CEnumerateMbmsActiveServiceList::doTestStepL( void )
+/**
+ * Tests the functionality of EnumerateMbmsActiveServiceList of RPacketService.
+ *
+ */
+ {
+ SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER);
+ TRequestStatus reqStatus;
+ TBuf<20> contextName = _L("");
+
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+
+ TInt currActiveServices, maxActiveServices;
+ iPacketService.EnumerateMbmsActiveServiceList(reqStatus,currActiveServices, maxActiveServices);
+ User::WaitForRequest(reqStatus);
+
+ TESTL(reqStatus.Int() == KErrPermissionDenied);
+
+ iPacketService.Close();
+ iPhone.Close();
+
+ return TestStepResult();
+ }
+
+
+//-------------------------------------------------------------------------
+
+CEnumerateMbmsMonitorServiceList::CEnumerateMbmsMonitorServiceList()
+/** Each test step initialises it's own name
+ */
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ SetTestStepName(_L("EtelPcktMbmsCap8"));
+ }
+//------------------------------------------------------------------
+
+TVerdict CEnumerateMbmsMonitorServiceList::doTestStepL( void )
+/**
+ * Tests the functionality of EnumerateMbmsActiveServiceList of RPacketService.
+ *
+ */
+ {
+ SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER);
+ TRequestStatus reqStatus;
+ TBuf<20> contextName = _L("");
+
+ TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone);
+ TESTL(iPhone.Initialise()==KErrNone);
+ TESTL(iPacketService.Open(iPhone ) == KErrNone);
+
+ TInt currActiveServices, maxActiveServices;
+ iPacketService.EnumerateMbmsActiveServiceList(reqStatus,currActiveServices, maxActiveServices);
+ User::WaitForRequest(reqStatus);
+
+ TESTL(reqStatus.Int() == KErrPermissionDenied);
+
+ iPacketService.Close();
+ iPhone.Close();
+
+ return TestStepResult();
+ }
+
+
+/**
+ * Tests closing one of two handles that both have notifications on them.
+ * This can cause ETel to close multiple requests during the same cancel
+ * request, which in turn can panic ETel if the iterator gets corrupted.
+ *
+ * @return Test step verdict.
+ */
+TVerdict CTestMultipleCompletionWithClosingContext::doTestStepL()
+ {
+ //
+ // Initialise and open the packet service...
+ //
+ SetSimtsyTestNumberL(2);
+
+ TESTL(iPhone.Open(iTelServer, KPhoneName) == KErrNone);
+ TESTL(iPhone.Initialise() == KErrNone);
+ TESTL(iPacketService.Open(iPhone) == KErrNone);
+ StartNTRasSimulation();
+
+ //
+ // Open the first context...
+ //
+ TRequestStatus activateContext1Status;
+ TBuf<50> contextName;
+
+ TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone);
+ iPacketContext[0].Activate(activateContext1Status);
+ User::WaitForRequest(activateContext1Status);
+
+ //
+ // Open the second context...
+ //
+ TRequestStatus activateContext2Status;
+
+ TESTL(iPacketContext[1].OpenNewContext(iPacketService, contextName) == KErrNone);
+ iPacketContext[1].Activate(activateContext2Status);
+ User::WaitForRequest(activateContext2Status);
+
+ //
+ // Open another handle to the second context by name...
+ //
+ TESTL(iPacketContext[2].OpenExistingContext(iPacketService, _L("PRIMARY2")) == KErrNone);
+
+ //
+ // Post notifications on both handles for the second context...
+ //
+ TRequestStatus notifyContext1Status, notifyContext2Status;
+ RPacketContext::TContextStatus contextStatus1, contextStatus2;
+
+ iPacketContext[1].NotifyStatusChange(notifyContext1Status, contextStatus1);
+ iPacketContext[2].NotifyStatusChange(notifyContext2Status, contextStatus2);
+
+ //
+ // Delete second context using the first handle...
+ //
+ TRequestStatus deleteContext2Status;
+
+ iPacketContext[1].Delete(deleteContext2Status);
+ User::WaitForRequest(deleteContext2Status);
+
+ //
+ // The notifications will have triggered and a request will have
+ // been reposted to the TSY.
+ //
+ User::WaitForRequest(notifyContext1Status);
+ User::WaitForRequest(notifyContext2Status);
+
+ //
+ // Deactivate the fist context...
+ //
+ TRequestStatus deactivateContext1Status;
+
+ iPacketContext[0].Deactivate(deactivateContext1Status);
+ User::WaitForRequest(deactivateContext1Status);
+
+ //
+ // Close the contexts. Note this is closing iPacketContext[1] before
+ // iPacketContext[2]! This forces the notification from the first handle
+ // to move to the second handle, but there it errors as the context is
+ // closed. This would cause ETel server to panic with KERN-EXEC:3.
+ //
+ iPacketContext[1].Close();
+ iPacketContext[2].Close();
+ iPacketContext[0].Close();
+ iPacketService.Close();
+ iPhone.Close();
+
+ //
+ // Now check that ETel is still up...
+ //
+ TEST(iPhone.Open(iTelServer, KPhoneName) == KErrNone);
+ iPhone.Close();
+
+ return TestStepResult();
+ } // CTestMultipleCompletionWithClosingContext::doTestStepL