diff -r 3f227a47ad75 -r 2492a6e4aed7 telephonyserverplugins/common_tsy/test/component/src/cctsypacketservicefu.cpp --- a/telephonyserverplugins/common_tsy/test/component/src/cctsypacketservicefu.cpp Wed Apr 14 17:11:46 2010 +0300 +++ b/telephonyserverplugins/common_tsy/test/component/src/cctsypacketservicefu.cpp Tue Apr 27 17:51:07 2010 +0300 @@ -39,6 +39,8 @@ #define MBMS_MONITORSERVICECOUNTONE 1 #define MBMS_MONITORSERVICECOUNTMULTIPLE 3 +const TInt KOneSecond=1000000; // Used in a time out function, 1 second (in microSeconds) + CTestSuite* CCTsyPacketServiceFU::CreateSuiteL(const TDesC& aName) { SUB_SUITE; @@ -50,7 +52,8 @@ ADD_TEST_STEP_ISO_CPP(CCTsyPacketServiceFU, TestNotifyContextAdded0004L); ADD_TEST_STEP_ISO_CPP(CCTsyPacketServiceFU, TestNotifyStatusChange0001L); ADD_TEST_STEP_ISO_CPP(CCTsyPacketServiceFU, TestNotifyStatusChange0002L); - ADD_TEST_STEP_ISO_CPP(CCTsyPacketServiceFU, TestNotifyStatusChange0004L); + ADD_TEST_STEP_ISO_CPP(CCTsyPacketServiceFU, TestNotifyStatusChange0004L); + ADD_TEST_STEP_ISO_CPP(CCTsyPacketServiceFU, TestNotifyStatusChange0004aL); ADD_TEST_STEP_ISO_CPP(CCTsyPacketServiceFU, TestNotifyStatusChange0001aL); ADD_TEST_STEP_ISO_CPP(CCTsyPacketServiceFU, TestSetPreferredBearer0001L); ADD_TEST_STEP_ISO_CPP(CCTsyPacketServiceFU, TestSetPreferredBearer0004L); @@ -892,6 +895,97 @@ } /** +@SYMTestCaseID BA-CTSY-PKTS-PSNSC-0004a +@SYMPREQ 1551 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for multiple client requests to RPacketService::NotifyStatusChange +@SYMTestPriority High +@SYMTestActions Invokes multiple client requests to RPacketService::NotifyStatusChange +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCTsyPacketServiceFU::TestNotifyStatusChange0004aL() + { + + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RBuf8 data; + CleanupClosePushL(data); + + // 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; + OpenPacketServiceL(packetService); + CleanupClosePushL(packetService); + + RPacketService packetService2; + ret = packetService2.Open(phone2); + ASSERT_EQUALS(KErrNone, ret); + CleanupClosePushL(packetService2); + + //------------------------------------------------------------------------- + // Test A: Test multiple clients requesting RPacketService::NotifyStatusChange + //------------------------------------------------------------------------- + + // Data for CompleteL + RPacketService::TStatus sendStatus = RPacketService::EStatusAttached; + TBool isResumed = EFalse; + TMockLtsyData2 ltsyData(sendStatus, isResumed); + ltsyData.SerialiseL(data); + + TRequestStatus requestStatus; + RPacketService::TStatus contextStatus; + // sent first request + packetService.NotifyStatusChange(requestStatus, contextStatus); + + TRequestStatus requestStatus2; + RPacketService::TStatus contextStatus2; + // sent second request + packetService2.NotifyStatusChange(requestStatus2, contextStatus2); + + // Issue the Complete... + iMockLTSY.CompleteL(EPacketNotifyStatusChange, KErrNone, data); + + // wait for the first request + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrNone, requestStatus.Int()); + ASSERT_EQUALS(sendStatus, contextStatus); + // wait for the second request + User::WaitForRequest(requestStatus2); + ASSERT_EQUALS(KErrNone, requestStatus2.Int()); + ASSERT_EQUALS(sendStatus, contextStatus2); + + AssertMockLtsyStatusL(); + + // Activate both clients again + packetService.NotifyStatusChange(requestStatus, contextStatus); + User::After(KOneSecond); + packetService2.NotifyStatusChange(requestStatus2, contextStatus2); + User::After(KOneSecond); + + // Send cancel to the first client + packetService.CancelAsyncRequest(EPacketNotifyStatusChange); + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrCancel, requestStatus.Int()); + + AssertMockLtsyStatusL(); + + CleanupStack::PopAndDestroy(2); // packetService, packetService2 + CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, data, this + } + +/** @SYMTestCaseID BA-CTSY-PKTS-PSNSC-0001a @SYMPREQ 1551 @SYMComponent telephony_ctsy