author | Gareth Stockwell <gareth.stockwell@accenture.com> |
Fri, 22 Oct 2010 11:38:29 +0100 | |
branch | bug235_bringup_0 |
changeset 206 | c170e304623f |
parent 0 | 5d03bc08d59c |
permissions | -rw-r--r-- |
// Copyright (c) 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: // /** @file @test */ #ifndef EGLTEST_SYNCOBJECT_H #define EGLTEST_SYNCOBJECT_H #include "eglteststep.h" #include <test/egltestcommonsession.h> _LIT(KSyncObject_Positive_Base, "SyncObject_Base"); NONSHARABLE_CLASS(CEglTest_SyncObject_Base) : public CEglTestStep { public: CEglTest_SyncObject_Base(); ~CEglTest_SyncObject_Base(); TBool GetProcAddress(); void CreateEglSessionL(); void CheckSyncAttrib(EGLint attribute, EGLint expectedValue); void CleanAll(); /** @param aEndTime End time obtained from the user nano kernel tick counter @param aStartTime Start time obtained from the user nano kernel tick counter @return elapsed time in microsecond */ inline TInt ElapsedTime(TUint32 aEndTime, TUint32 aStartTime) const { return ((aEndTime - aStartTime) * iTickPeriodMicroSeconds); } // from CTestStep TVerdict doTestStepPreambleL(); protected: CTestEglSession* iEglSess; EGLSyncKHR iSyncObject; EGLSyncKHR iSyncObject1; EGLSyncKHR iSyncObject2; TBool iIsSyncObjectExtensionSupported; //sync object API, defined in EGL Khronos API spec with the name KHR_reusable_sync TBool iIsSyncObjectPrivateExtensionSupported; //internal NOKIA extension which is not the part of the Khronos API spec TInt iThreshold; //level of tolerance TInt iDelaySignalling; //delay before the signal occurs TInt iWaitSyncTimeout; //timeout client waits on sync object, must be greater than iDelaySignalling TInt iLongDelaySignalling; //long delay before signalling occurs, must be greater than iWaitSyncTimeout TInt iNumStressIterations; //number of iterations before stress test exits TInt iTimeOverhead; TFPtrEglCreateSyncKhr iPfnEglCreateSyncKHR; TFPtrEglDestroySyncKhr iPfnEglDestroySyncKHR; TFPtrEglClientWaitSyncKhr iPfnEglClientWaitSyncKHR; TFPtrEglSignalSyncKhr iPfnEglSignalSyncKHR; TFPtrEglGetSyncAttribKhr iPfnEglGetSyncAttribKHR; TFPtrEglPrivateSignalSyncNok iPfnEglPrivateSignalSyncNOK; TInt iTickPeriodMicroSeconds; //nanokernel ticks, in microseconds }; _LIT(KSyncObject_Positive_GetProcAddress, "SyncObject_Positive_GetProcAddress"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_GetProcAddress) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); }; _LIT(KSyncObject_Positive_CreateDestroy, "SyncObject_Positive_CreateDestroy"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_CreateDestroy) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); }; _LIT(KSyncObject_Positive_WaitSignal, "SyncObject_Positive_WaitSignal"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_WaitSignal) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); protected: // from CEglTestStep void doThreadFunctionL(TInt aIdx); }; _LIT(KSyncObject_Positive_WaitSignal2, "SyncObject_Positive_WaitSignal2"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_WaitSignal2) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); protected: // from CEglTestStep void doThreadFunctionL(TInt aIdx); }; _LIT(KSyncObject_Positive_WaitDelete, "SyncObject_Positive_WaitDelete"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_WaitDelete) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); protected: // from CEglTestStep void doThreadFunctionL(TInt aIdx); }; _LIT(KSyncObject_Positive_WaitWithTimeoutExpired, "SyncObject_Positive_WaitWithTimeoutExpired"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_WaitWithTimeoutExpired) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); }; _LIT(KSyncObject_Positive_SignalBeforeTimeoutExpired, "SyncObject_Positive_SignalBeforeTimeoutExpired"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_SignalBeforeTimeoutExpired) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); protected: // from CEglTestStep void doThreadFunctionL(TInt aIdx); }; _LIT(KSyncObject_Positive_DeleteBeforeTimeoutExpired, "SyncObject_Positive_DeleteBeforeTimeoutExpired"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_DeleteBeforeTimeoutExpired) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); protected: // from CEglTestStep void doThreadFunctionL(TInt aIdx); }; _LIT(KSyncObject_Positive_Multithread_SignalBeforeTimeout, "SyncObject_Positive_Multithread_SignalBeforeTimeout"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_Multithread_SignalBeforeTimeout) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); protected: // from CEglTestStep void doThreadFunctionL(TInt aIdx); }; _LIT(KSyncObject_Positive_Multithread_SignalAfterTimeout, "SyncObject_Positive_Multithread_SignalAfterTimeout"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_Multithread_SignalAfterTimeout) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); protected: // from CEglTestStep void doThreadFunctionL(TInt aIdx); }; _LIT(KSyncObject_Positive_Multithread_WaitOnTwoSyncObject, "SyncObject_Positive_Multithread_WaitOnTwoSyncObject"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_Multithread_WaitOnTwoSyncObject) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); protected: // from CEglTestStep void doThreadFunctionL(TInt aIdx); }; _LIT(KSyncObject_Positive_Wait_TestMode, "SyncObject_Positive_Wait_TestMode"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_Wait_TestMode) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); }; _LIT(KSyncObject_Positive_Multithread_Deletion, "SyncObject_Positive_Multithread_Deletion"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_Multithread_Deletion) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); protected: // from CEglTestStep void doThreadFunctionL(TInt aIdx); }; _LIT(KSyncObject_Positive_Stress, "SyncObject_Positive_Stress"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_Stress) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); protected: // from CEglTestStep void doThreadFunctionL(TInt aIdx); private: TBool iStopTest; //to ensure that we are not going to signal on deleted sync objects TInt iLastThreadToSignal; //varies from 0..2, where 2 is the main client thread }; _LIT(KSyncObject_Positive_WaitFlush, "SyncObject_Positive_WaitFlush"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_WaitFlush) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); protected: // from CEglTestStep void doThreadFunctionL(TInt aIdx); }; _LIT(KSyncObject_Positive_Terminate, "SyncObject_Positive_Terminate"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_Terminate) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); }; _LIT(KSyncObject_Positive_TerminateBeforeTimeoutExpired, "SyncObject_Positive_TerminateBeforeTimeoutExpired"); NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_TerminateBeforeTimeoutExpired) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); protected: // from CEglTestStep void doThreadFunctionL(TInt aIdx); }; _LIT(KSyncObject_Negative_WrongParameters, "SyncObject_Negative_WrongParameters"); NONSHARABLE_CLASS(CEglTest_SyncObject_Negative_WrongParameters) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); }; _LIT(KSyncObject_Negative_SignalImpl, "SyncObject_Negative_SignalImpl"); NONSHARABLE_CLASS(CEglTest_SyncObject_Negative_SignalImpl) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); }; _LIT(KSyncObject_Negative_OOM, "SyncObject_Negative_OOM"); NONSHARABLE_CLASS(CEglTest_SyncObject_Negative_OOM) : public CEglTest_SyncObject_Base { public: TVerdict doTestStepL(); protected: // from CEglTestStep void doThreadFunctionL(TInt aIdx); }; #endif // EGLTEST_SYNCOBJECT_H