diff -r bf7481649c98 -r 7f25ef56562d graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.cpp --- a/graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.cpp Fri Jun 11 14:58:47 2010 +0300 +++ b/graphicscomposition/surfaceupdate/tsrc/tsurfaceupdate.cpp Wed Jun 23 19:41:15 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 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" @@ -1758,13 +1758,70 @@ session.Close(); } + +/** + @SYMTestCaseID GRAPHICS-SURFACEUPDATE-0019 + + + @SYMPREQ 1007 + + @SYMREQ 8223 + + @SYMTestCaseDesc Starting the surface update server in two different threads. + + @SYMTestPriority High + + @SYMTestStatus Implemented + + @SYMTestActions Start the surface update server in two different threads. + + @SYMTestExpectedResults Thread 1: KErrNone + Thread 2: KErrNone + The "provider" returned to both threads should also be the same value! +*/ +void CTSurfaceUpdate::TestCase12L() + { + MSurfaceUpdateServerProvider *surfaceUpdateProvider = NULL; + TInt res = StartSurfaceUpdateServer(surfaceUpdateProvider); + TEST(res == KErrNone); + User::LeaveIfError(res); + + _LIT(KThreadName, "TestServerStartupTwoThreads"); + TTime tm; + TBuf<32> buf; + tm.UniversalTime(); + TRAP(res, tm.FormatL(buf, _L("_%H%T%S%C"))); + TEST(res == KErrNone); + User::LeaveIfError(res); + TBuf<128> threadName(KThreadName); + threadName.Append(buf); //guarantee uniqueness of the thread name + RThread thread; + MSurfaceUpdateServerProvider *surfaceUpdateProvider2 = NULL; + res = thread.Create(threadName, + TestServerStartupTwoThreads, + KDefaultStackSize, + &User::Heap(), + &surfaceUpdateProvider2); + TEST(res == KErrNone); + User::LeaveIfError(res); + TRequestStatus rendezvousStatus; + thread.Rendezvous(rendezvousStatus); + thread.Resume(); + User::WaitForRequest(rendezvousStatus); + TEST(KErrNone == rendezvousStatus.Int()); + // Check that we get the same provider for both threads! + TEST(surfaceUpdateProvider2 == surfaceUpdateProvider); + } + + /** Starting the update server in another thread - called from TestCase12 */ -TInt CTSurfaceUpdate::TestServerStartupTwoThreads(TAny*) +TInt CTSurfaceUpdate::TestServerStartupTwoThreads(TAny *aArgPtr) { - MSurfaceUpdateServerProvider *surfaceUpdateProvider = NULL; - TInt res = StartSurfaceUpdateServer(surfaceUpdateProvider); + MSurfaceUpdateServerProvider **surfaceUpdateProviderPtr = + reinterpret_cast(aArgPtr); + TInt res = StartSurfaceUpdateServer(*surfaceUpdateProviderPtr); return res; } @@ -2200,7 +2257,15 @@ TEST(ret == KErrNone); break; } - case 12: + case 12: + { + ((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0019")); + INFO_PRINTF1(_L("TestCase12L")); + TRAPD(ret, TestCase12L()); + TEST(ret == KErrNone); + break; + } + case 13: { ((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0020")); INFO_PRINTF1(_L("TestCase13L")); @@ -2208,14 +2273,14 @@ TEST(ret == KErrNone); break; } - case 13: + case 14: { ((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0022")); INFO_PRINTF1(_L("TestCase14")); TestCase14(); break; } - case 14: + case 15: { ((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0023")); INFO_PRINTF1(_L("TestCase15")); @@ -2223,7 +2288,7 @@ TEST(ret == KErrNone); break; } - case 15: + case 16: { ((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0024")); INFO_PRINTF1(_L("TestCase16")); @@ -2231,7 +2296,7 @@ TEST(ret == KErrNone); break; } - case 16: + case 17: { ((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0028")); INFO_PRINTF1(_L("TestCase17")); @@ -2239,7 +2304,7 @@ TEST(ret == KErrNone); break; } - case 17: + case 18: { ((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0025")); INFO_PRINTF1(_L("TestCase18")); @@ -2247,7 +2312,7 @@ TEST(ret == KErrNone); break; } - case 18: + case 19: { ((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0027")); INFO_PRINTF1(_L("TestCaseNotifyWhenAvailableGlobal")); @@ -2255,7 +2320,7 @@ TEST(ret == KErrNone); break; } - case 19: + case 20: { ((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0029")); INFO_PRINTF1(_L("TestCaseRegisterIdenticalPrioritiesL")); @@ -2263,7 +2328,7 @@ TEST(ret == KErrNone); break; } - case 20: + case 21: {//should be the last test case ((CTSurfaceUpdateStep*)iStep)->SetTestStepID(_L("GRAPHICS-SURFACEUPDATE-0021")); INFO_PRINTF1(_L("TestCaseTerminateServer"));