os/ossrv/genericopenlibs/posixrealtimeextensions/test/testtimer/src/ttimerthread.cpp
First public contribution.
2 * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
14 * Description:test cases for concurrency test for timer_settime ,timer_gettime
15 * Name : ttimerthread.cpp
20 #include "ttimerthread.h"
21 #include <stdapis/errno.h>
23 CTimerTestThread* CTimerTestThread::NewL(TTimerTestThreadParams& aParams)
25 CTimerTestThread* self = new (ELeave) CTimerTestThread(aParams);
28 CTimerTestThread::CTimerTestThread(TTimerTestThreadParams& aParams)
29 :iParentStep(aParams.iTestStep),iParams(aParams)
33 CTimerTestThread::~CTimerTestThread()
37 TInt CTimerTestThread::OEEntry(TAny* aData)
39 TTimerTestThreadParams* params = static_cast<TTimerTestThreadParams*>(aData);
40 CTrapCleanup* cleanup = CTrapCleanup::New();
46 TRAPD(err, OEMainL(*params));
50 void CTimerTestThread::OEMainL(TTimerTestThreadParams& aParams)
53 CTimerTestThread* timerThread = CTimerTestThread::NewL(aParams);
54 timerThread->doOperation();
57 void CTimerTestThread::doOperation()
60 struct itimerspec timeSpec1;
61 struct itimerspec timeSpec2;
63 iParams.iTestResult=EFalse;
65 int ret = timer_create(CLOCK_REALTIME, NULL, &timerid);
68 iParams.iTestStep.INFO_PRINTF1(_L("Timer Created"));
70 timeSpec1.it_value.tv_sec = 10;
71 /* 500 million nsecs = .5 secs */
72 timeSpec1.it_value.tv_nsec = 500000000;
74 timeSpec1.it_interval.tv_sec = 10;
75 /* 500 million nsecs = .5 secs */
76 timeSpec1.it_interval.tv_nsec = 500000000;
78 ret = timer_settime(timerid, 0, &timeSpec1, NULL);
82 iParams.iTestStep.ERR_PRINTF2(_L("Timer Set Time Failed - %d"), errno);
85 iParams.iTestStep.INFO_PRINTF1(_L("Set Timer Success"));
88 ret = timer_gettime(timerid, &timeSpec2);
92 iParams.iTestStep.ERR_PRINTF2(_L("Timer Get Time Failed - %d"), errno);
96 iParams.iTestStep.INFO_PRINTF1(_L("Get Timer Success"));
98 compareTimeSpec(timeSpec1, timeSpec2);
100 ret = timer_delete(timerid);
104 iParams.iTestStep.ERR_PRINTF2(_L("Timer Get Time Failed - %d"), errno);
108 iParams.iTestStep.INFO_PRINTF1(_L("Timer Deleted"));
114 iParams.iTestStep.ERR_PRINTF2(_L("Timer Create Failed - %d"), errno);
118 iParams.iTestResult=ETrue;
123 TBool CTimerTestThread::compareTimeSpec(struct itimerspec timeSpec1, struct itimerspec timeSpec2)
126 if((timeSpec1.it_value.tv_sec == timeSpec2.it_value.tv_sec )
127 && (timeSpec1.it_value.tv_nsec == timeSpec2.it_value.tv_nsec )
128 && (timeSpec1.it_interval.tv_sec == timeSpec2.it_interval.tv_sec )
129 && (timeSpec1.it_interval.tv_nsec == timeSpec2.it_interval.tv_nsec ))
131 iParams.iTestStep.INFO_PRINTF1(_L("Timer Spec Matched"));
137 iParams.iTestStep.INFO_PRINTF1(_L("Timer spec Not Matched"));