First public contribution.
1 // Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
20 #ifndef EGLTEST_SYNCOBJECT_H
21 #define EGLTEST_SYNCOBJECT_H
23 #include "eglteststep.h"
24 #include <test/egltestcommonsession.h>
27 _LIT(KSyncObject_Positive_Base, "SyncObject_Base");
28 NONSHARABLE_CLASS(CEglTest_SyncObject_Base) : public CEglTestStep
31 CEglTest_SyncObject_Base();
32 ~CEglTest_SyncObject_Base();
33 TBool GetProcAddress();
34 void CreateEglSessionL();
35 void CheckSyncAttrib(EGLint attribute, EGLint expectedValue);
39 @param aEndTime End time obtained from the user nano kernel tick counter
40 @param aStartTime Start time obtained from the user nano kernel tick counter
41 @return elapsed time in microsecond
43 inline TInt ElapsedTime(TUint32 aEndTime, TUint32 aStartTime) const
45 return ((aEndTime - aStartTime) * iTickPeriodMicroSeconds);
49 TVerdict doTestStepPreambleL();
52 CTestEglSession* iEglSess;
53 EGLSyncKHR iSyncObject;
54 EGLSyncKHR iSyncObject1;
55 EGLSyncKHR iSyncObject2;
57 TBool iIsSyncObjectExtensionSupported; //sync object API, defined in EGL Khronos API spec with the name KHR_reusable_sync
58 TBool iIsSyncObjectPrivateExtensionSupported; //internal NOKIA extension which is not the part of the Khronos API spec
60 TInt iThreshold; //level of tolerance
61 TInt iDelaySignalling; //delay before the signal occurs
62 TInt iWaitSyncTimeout; //timeout client waits on sync object, must be greater than iDelaySignalling
63 TInt iLongDelaySignalling; //long delay before signalling occurs, must be greater than iWaitSyncTimeout
64 TInt iNumStressIterations; //number of iterations before stress test exits
67 TFPtrEglCreateSyncKhr iPfnEglCreateSyncKHR;
68 TFPtrEglDestroySyncKhr iPfnEglDestroySyncKHR;
69 TFPtrEglClientWaitSyncKhr iPfnEglClientWaitSyncKHR;
70 TFPtrEglSignalSyncKhr iPfnEglSignalSyncKHR;
71 TFPtrEglGetSyncAttribKhr iPfnEglGetSyncAttribKHR;
72 TFPtrEglPrivateSignalSyncNok iPfnEglPrivateSignalSyncNOK;
74 TInt iTickPeriodMicroSeconds; //nanokernel ticks, in microseconds
77 _LIT(KSyncObject_Positive_GetProcAddress, "SyncObject_Positive_GetProcAddress");
78 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_GetProcAddress) : public CEglTest_SyncObject_Base
81 TVerdict doTestStepL();
84 _LIT(KSyncObject_Positive_CreateDestroy, "SyncObject_Positive_CreateDestroy");
85 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_CreateDestroy) : public CEglTest_SyncObject_Base
88 TVerdict doTestStepL();
91 _LIT(KSyncObject_Positive_WaitSignal, "SyncObject_Positive_WaitSignal");
92 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_WaitSignal) : public CEglTest_SyncObject_Base
95 TVerdict doTestStepL();
98 void doThreadFunctionL(TInt aIdx);
101 _LIT(KSyncObject_Positive_WaitSignal2, "SyncObject_Positive_WaitSignal2");
102 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_WaitSignal2) : public CEglTest_SyncObject_Base
105 TVerdict doTestStepL();
108 void doThreadFunctionL(TInt aIdx);
111 _LIT(KSyncObject_Positive_WaitDelete, "SyncObject_Positive_WaitDelete");
112 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_WaitDelete) : public CEglTest_SyncObject_Base
115 TVerdict doTestStepL();
118 void doThreadFunctionL(TInt aIdx);
121 _LIT(KSyncObject_Positive_WaitWithTimeoutExpired, "SyncObject_Positive_WaitWithTimeoutExpired");
122 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_WaitWithTimeoutExpired) : public CEglTest_SyncObject_Base
125 TVerdict doTestStepL();
128 _LIT(KSyncObject_Positive_SignalBeforeTimeoutExpired, "SyncObject_Positive_SignalBeforeTimeoutExpired");
129 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_SignalBeforeTimeoutExpired) : public CEglTest_SyncObject_Base
132 TVerdict doTestStepL();
135 void doThreadFunctionL(TInt aIdx);
138 _LIT(KSyncObject_Positive_DeleteBeforeTimeoutExpired, "SyncObject_Positive_DeleteBeforeTimeoutExpired");
139 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_DeleteBeforeTimeoutExpired) : public CEglTest_SyncObject_Base
142 TVerdict doTestStepL();
145 void doThreadFunctionL(TInt aIdx);
148 _LIT(KSyncObject_Positive_Multithread_SignalBeforeTimeout, "SyncObject_Positive_Multithread_SignalBeforeTimeout");
149 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_Multithread_SignalBeforeTimeout) : public CEglTest_SyncObject_Base
152 TVerdict doTestStepL();
155 void doThreadFunctionL(TInt aIdx);
158 _LIT(KSyncObject_Positive_Multithread_SignalAfterTimeout, "SyncObject_Positive_Multithread_SignalAfterTimeout");
159 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_Multithread_SignalAfterTimeout) : public CEglTest_SyncObject_Base
162 TVerdict doTestStepL();
165 void doThreadFunctionL(TInt aIdx);
168 _LIT(KSyncObject_Positive_Multithread_WaitOnTwoSyncObject, "SyncObject_Positive_Multithread_WaitOnTwoSyncObject");
169 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_Multithread_WaitOnTwoSyncObject) : public CEglTest_SyncObject_Base
172 TVerdict doTestStepL();
175 void doThreadFunctionL(TInt aIdx);
178 _LIT(KSyncObject_Positive_Wait_TestMode, "SyncObject_Positive_Wait_TestMode");
179 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_Wait_TestMode) : public CEglTest_SyncObject_Base
182 TVerdict doTestStepL();
185 _LIT(KSyncObject_Positive_Multithread_Deletion, "SyncObject_Positive_Multithread_Deletion");
186 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_Multithread_Deletion) : public CEglTest_SyncObject_Base
189 TVerdict doTestStepL();
192 void doThreadFunctionL(TInt aIdx);
195 _LIT(KSyncObject_Positive_Stress, "SyncObject_Positive_Stress");
196 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_Stress) : public CEglTest_SyncObject_Base
199 TVerdict doTestStepL();
202 void doThreadFunctionL(TInt aIdx);
204 TBool iStopTest; //to ensure that we are not going to signal on deleted sync objects
205 TInt iLastThreadToSignal; //varies from 0..2, where 2 is the main client thread
208 _LIT(KSyncObject_Positive_WaitFlush, "SyncObject_Positive_WaitFlush");
209 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_WaitFlush) : public CEglTest_SyncObject_Base
212 TVerdict doTestStepL();
215 void doThreadFunctionL(TInt aIdx);
218 _LIT(KSyncObject_Positive_Terminate, "SyncObject_Positive_Terminate");
219 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_Terminate) : public CEglTest_SyncObject_Base
222 TVerdict doTestStepL();
225 _LIT(KSyncObject_Positive_TerminateBeforeTimeoutExpired, "SyncObject_Positive_TerminateBeforeTimeoutExpired");
226 NONSHARABLE_CLASS(CEglTest_SyncObject_Positive_TerminateBeforeTimeoutExpired) : public CEglTest_SyncObject_Base
229 TVerdict doTestStepL();
232 void doThreadFunctionL(TInt aIdx);
235 _LIT(KSyncObject_Negative_WrongParameters, "SyncObject_Negative_WrongParameters");
236 NONSHARABLE_CLASS(CEglTest_SyncObject_Negative_WrongParameters) : public CEglTest_SyncObject_Base
239 TVerdict doTestStepL();
242 _LIT(KSyncObject_Negative_SignalImpl, "SyncObject_Negative_SignalImpl");
243 NONSHARABLE_CLASS(CEglTest_SyncObject_Negative_SignalImpl) : public CEglTest_SyncObject_Base
246 TVerdict doTestStepL();
249 _LIT(KSyncObject_Negative_OOM, "SyncObject_Negative_OOM");
250 NONSHARABLE_CLASS(CEglTest_SyncObject_Negative_OOM) : public CEglTest_SyncObject_Base
253 TVerdict doTestStepL();
256 void doThreadFunctionL(TInt aIdx);
259 #endif // EGLTEST_SYNCOBJECT_H