diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/cctsypacketcontextfu.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/cctsypacketcontextfu.cpp Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,340 @@ +// Copyright (c) 2007-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: +// The TEFUnit test suite for PacketContext in the Common TSY. +// +// + +#include "cctsypacketcontextfu.h" +#include "cctsypacketservicesfu.h" + +#include +#include +#include +#include +#include +#include +#include + +CTestSuite* CCTsyPacketContextFU::CreateSuiteL(const TDesC& aName) + { + SUB_SUITE; + + ADD_TEST_STEP_ISO_CPP(CCTsyPacketContextFU, TestUnit00027L); + ADD_TEST_STEP_ISO_CPP(CCTsyPacketContextFU, TestUnit00028L); + ADD_TEST_STEP_ISO_CPP(CCTsyPacketContextFU, TestUnit00029L); + + END_SUITE; + } + + +// +// Actual test cases +// + +/** +@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-UN00027 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for RPacketContext::Delete +@SYMTestPriority High +@SYMTestActions Invokes RPacketContext::Delete +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCTsyPacketContextFU::TestUnit00027L() + { + + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RBuf8 data; + CleanupClosePushL(data); + + RBuf8 expectData; + CleanupClosePushL(expectData); + + RPacketService packetService; + OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached); + + // Open new context + TInfoName contextId; + RPacketContext packetContext; + packetContext.OpenNewContext(packetService, contextId); + CleanupClosePushL(packetContext); + + TInfoName primaryContext; + TInfoName secondaryContext; + primaryContext.Copy(KFirstAllocatedContextName); + secondaryContext.Copy(KDefaultContextName); + + //------------------------------------------------------------------------- + // SEND Delete request when ContextStatus is Unknown + //------------------------------------------------------------------------- + TRequestStatus requestStatus; + packetContext.Delete(requestStatus); + + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrNotReady, requestStatus.Int()); + AssertMockLtsyStatusL(); + + // Set context in Active state + SetContextActiveL(contextId); + + //---------------------------------- + // Send an unsupported request + //---------------------------------- + + RPacketContext::TDataVolume volume; + packetContext.GetDataVolumeTransferred(requestStatus, volume); + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrNotSupported, requestStatus.Int()); + AssertMockLtsyStatusL(); + + + //------------------------------------------------------------------------- + // TEST E: Unsolicited completion of RPacketContext::Delete + // from LTSY. + //------------------------------------------------------------------------- + TMockLtsyData1 ltsyData(contextId); + data.Close(); + ltsyData.SerialiseL(data); + + TRequestStatus mockLtsyStatus; + + iMockLTSY.NotifyTerminated(mockLtsyStatus); + // send completion + iMockLTSY.CompleteL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, KErrNone, data); + + // wait for completion + User::WaitForRequest(mockLtsyStatus); + ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int()); + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST A: failure to dispatch request to LTSY + //------------------------------------------------------------------------- + //TMockLtsyData1 expData(contextId); + TMockLtsyData1 expData(primaryContext); + expectData.Close(); + expData.SerialiseL(expectData); + + iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData, KErrNotSupported); + + packetContext.Delete(requestStatus); + + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrNotSupported, requestStatus.Int()); + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST B: failure on completion of pending request from LTSY->CTSY + //------------------------------------------------------------------------- + iMockLTSY.ExpectL (MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData); + iMockLTSY.CompleteL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, KErrGeneral, data); + + packetContext.Delete(requestStatus); + + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrGeneral, requestStatus.Int()); + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST C: Successful completion request of + // RPacketContext::Delete when result is not cached. + //------------------------------------------------------------------------- + iMockLTSY.ExpectL (MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData); + iMockLTSY.CompleteL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, KErrNone, data); + + packetContext.Delete(requestStatus); + + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrNone, requestStatus.Int()); + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST D: failure to modify context parameters when context deleted + //------------------------------------------------------------------------- + packetContext.ModifyActiveContext(requestStatus); + User::WaitForRequest(requestStatus); + AssertMockLtsyStatusL(); + ASSERT_EQUALS(KErrNotReady, requestStatus.Int()); + + iMockLTSY.ExpectL (MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData); + CleanupStack::PopAndDestroy(5, this); //packetContext, packetService, expectData, data, this + + } + +/** +@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-UN00028 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for multiple client requests to RPacketContext::Delete +@SYMTestPriority High +@SYMTestActions Invokes multiple client requests to RPacketContext::Delete +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCTsyPacketContextFU::TestUnit00028L() + { + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RBuf8 data; + CleanupClosePushL(data); + + RBuf8 data2; + CleanupClosePushL(data2); + + RBuf8 expectData; + CleanupClosePushL(expectData); + + RBuf8 expectData2; + CleanupClosePushL(expectData2); + + // Open second client + RTelServer telServer2; + TInt ret = telServer2.Connect(); + ASSERT_EQUALS(KErrNone, ret); + CleanupClosePushL(telServer2); + + RMobilePhone phone2; + ret = phone2.Open(iTelServer,KMmTsyPhoneName); + ASSERT_EQUALS(KErrNone, ret); + CleanupClosePushL(phone2); + + RPacketService packetService; + OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached); + + RPacketService packetService2; + ret = packetService2.Open(phone2); + ASSERT_EQUALS(KErrNone, ret); + CleanupClosePushL(packetService2); + + // Open first context + TInfoName contextId; + RPacketContext packetContext; + packetContext.OpenNewContext(packetService, contextId); + CleanupClosePushL(packetContext); + + // Open second context + TInfoName contextId2; + RPacketContext packetContext2; + packetContext2.OpenNewContext(packetService2, contextId2); + CleanupClosePushL(packetContext2); + + // Set first context in Active state + SetContextActiveL(contextId); + + // Set second context in Active state + SetContextActiveL(contextId2); + + //------------------------------------------------------------------------- + // Test A: Test multiple clients requesting RPacketContext::Delete + //------------------------------------------------------------------------- + + // data for first CompleteL + TMockLtsyData1 ltsyData(contextId); + ltsyData.SerialiseL(data); + + // data for second CompleteL + TMockLtsyData1 ltsyData2(contextId2); + ltsyData2.SerialiseL(data2); + + // for the first request + TRequestStatus requestStatus; + TMockLtsyData1 expData(contextId); + expData.SerialiseL(expectData); + + // for the second request + TRequestStatus requestStatus2; + TMockLtsyData1 expData2(contextId2); + expData2.SerialiseL(expectData2); + + iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData); + iMockLTSY.CompleteL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, KErrNone, data); + iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData2); + iMockLTSY.CompleteL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, KErrNone, data2); + + // send first request + packetContext.Delete(requestStatus); + + // send second request + packetContext2.Delete(requestStatus2); + + // wait for first answer + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrNone, requestStatus.Int()); + + // wait for second answer + User::WaitForRequest(requestStatus2); + ASSERT_EQUALS(KErrNone, requestStatus2.Int()); + + AssertMockLtsyStatusL(); + iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData2); + iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData); + CleanupStack::PopAndDestroy(2); // expectData2, expectData + CleanupStack::PopAndDestroy(9, this); //packetContext2, packetContext, packetService2, packetService, phone2, telServer2, data,data2 this + } + +/** +@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-UN00029 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for RPacketContext::Delete with timeout +@SYMTestPriority High +@SYMTestActions Invokes RPacketContext::Delete and tests for timeout +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCTsyPacketContextFU::TestUnit00029L() + { + + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RBuf8 data; + CleanupClosePushL(data); + + RBuf8 expectData; + CleanupClosePushL(expectData); + + RPacketService packetService; + OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached); + + // Open new context + TInfoName contextId; + RPacketContext packetContext; + packetContext.OpenNewContext(packetService, contextId); + CleanupClosePushL(packetContext); + + // Set context in Active state + SetContextActiveL(contextId); + + //------------------------------------------------------------------------- + // Test A: Test timeout of RPacketContext::Delete + //------------------------------------------------------------------------- + TRequestStatus requestStatus; + TMockLtsyData1 expData(contextId); + expData.SerialiseL(expectData); + iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData); + + packetContext.Delete(requestStatus); + + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrTimedOut, requestStatus.Int()); + AssertMockLtsyStatusL(); + + iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData); + CleanupStack::PopAndDestroy(5, this); //packetContext, packetService, data, expectData, this + }