os/ossrv/genericopenlibs/posixrealtimeextensions/test/testtimer/src/ttimerthread.cpp
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/ossrv/genericopenlibs/posixrealtimeextensions/test/testtimer/src/ttimerthread.cpp	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,142 @@
     1.4 +/*
     1.5 +* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.6 +* All rights reserved.
     1.7 +* This component and the accompanying materials are made available
     1.8 +* under the terms of "Eclipse Public License v1.0"
     1.9 +* which accompanies this distribution, and is available
    1.10 +* at the URL "http://www.eclipse.org/legal/epl-v10.html".
    1.11 +*
    1.12 +* Initial Contributors:
    1.13 +* Nokia Corporation - initial contribution.
    1.14 +*
    1.15 +* Contributors:
    1.16 +*
    1.17 +* Description:test cases for concurrency test for timer_settime ,timer_gettime 
    1.18 +* Name        : ttimerthread.cpp
    1.19 +* 
    1.20 +*
    1.21 +*/
    1.22 +
    1.23 +#include "ttimerthread.h"
    1.24 +#include <stdapis/errno.h>
    1.25 +
    1.26 +CTimerTestThread* CTimerTestThread::NewL(TTimerTestThreadParams& aParams)
    1.27 +    {
    1.28 +    CTimerTestThread* self = new (ELeave) CTimerTestThread(aParams); 
    1.29 +     return self;
    1.30 +    }
    1.31 +CTimerTestThread::CTimerTestThread(TTimerTestThreadParams& aParams)
    1.32 +    :iParentStep(aParams.iTestStep),iParams(aParams)
    1.33 +    {
    1.34 +    }
    1.35 +
    1.36 +CTimerTestThread::~CTimerTestThread()
    1.37 +    {
    1.38 +    }
    1.39 +
    1.40 +TInt CTimerTestThread::OEEntry(TAny* aData)
    1.41 +    {
    1.42 +    TTimerTestThreadParams* params = static_cast<TTimerTestThreadParams*>(aData);
    1.43 +    CTrapCleanup* cleanup = CTrapCleanup::New();
    1.44 +    if (!cleanup)
    1.45 +        {
    1.46 +        return KErrNoMemory;
    1.47 +        }
    1.48 +
    1.49 +    TRAPD(err, OEMainL(*params));
    1.50 +    delete cleanup;
    1.51 +    return err;
    1.52 +    }
    1.53 +void CTimerTestThread::OEMainL(TTimerTestThreadParams& aParams)
    1.54 +    {
    1.55 +
    1.56 +    CTimerTestThread* timerThread = CTimerTestThread::NewL(aParams);
    1.57 +    timerThread->doOperation();
    1.58 +    delete timerThread;
    1.59 +    }
    1.60 +void CTimerTestThread::doOperation()
    1.61 +    {   
    1.62 +    timer_t timerid;
    1.63 +    struct itimerspec timeSpec1;
    1.64 +    struct itimerspec timeSpec2;
    1.65 +
    1.66 +    iParams.iTestResult=EFalse;
    1.67 +
    1.68 +    int ret = timer_create(CLOCK_REALTIME, NULL, &timerid);
    1.69 +    if(ret != -1)
    1.70 +    {
    1.71 +        iParams.iTestStep.INFO_PRINTF1(_L("Timer Created"));
    1.72 +    
    1.73 +        timeSpec1.it_value.tv_sec = 10;
    1.74 +        /* 500 million nsecs = .5 secs */
    1.75 +        timeSpec1.it_value.tv_nsec = 500000000;
    1.76 +
    1.77 +        timeSpec1.it_interval.tv_sec = 10;
    1.78 +        /* 500 million nsecs = .5 secs */
    1.79 +        timeSpec1.it_interval.tv_nsec = 500000000;
    1.80 +
    1.81 +        ret = timer_settime(timerid, 0, &timeSpec1, NULL);
    1.82 +        if (ret == -1)
    1.83 +        {
    1.84 +
    1.85 +            iParams.iTestStep.ERR_PRINTF2(_L("Timer Set Time Failed - %d"), errno);
    1.86 +            return;
    1.87 +        }
    1.88 +        iParams.iTestStep.INFO_PRINTF1(_L("Set Timer Success"));
    1.89 +
    1.90 +        //    get_timer()
    1.91 +        ret = timer_gettime(timerid, &timeSpec2);
    1.92 +
    1.93 +        if(ret == -1)
    1.94 +        {
    1.95 +            iParams.iTestStep.ERR_PRINTF2(_L("Timer Get Time Failed - %d"), errno);
    1.96 +            return;
    1.97 +
    1.98 +        }
    1.99 +        iParams.iTestStep.INFO_PRINTF1(_L("Get Timer Success"));
   1.100 +        
   1.101 +        compareTimeSpec(timeSpec1, timeSpec2);
   1.102 +
   1.103 +        ret = timer_delete(timerid);
   1.104 +
   1.105 +        if(ret == -1)
   1.106 +        {
   1.107 +            iParams.iTestStep.ERR_PRINTF2(_L("Timer Get Time Failed - %d"), errno);
   1.108 +            return;
   1.109 +
   1.110 +        }
   1.111 +      iParams.iTestStep.INFO_PRINTF1(_L("Timer Deleted"));
   1.112 +
   1.113 +
   1.114 +    }
   1.115 +    else
   1.116 +    {
   1.117 +        iParams.iTestStep.ERR_PRINTF2(_L("Timer Create Failed - %d"), errno);
   1.118 +        return;
   1.119 +
   1.120 +    }
   1.121 +   iParams.iTestResult=ETrue;
   1.122 +    return;
   1.123 +
   1.124 +    }
   1.125 +
   1.126 +TBool CTimerTestThread::compareTimeSpec(struct itimerspec timeSpec1, struct itimerspec timeSpec2)
   1.127 +    {
   1.128 +
   1.129 +    if((timeSpec1.it_value.tv_sec == timeSpec2.it_value.tv_sec )
   1.130 +        && (timeSpec1.it_value.tv_nsec  == timeSpec2.it_value.tv_nsec )
   1.131 +        && (timeSpec1.it_interval.tv_sec == timeSpec2.it_interval.tv_sec )
   1.132 +        && (timeSpec1.it_interval.tv_nsec == timeSpec2.it_interval.tv_nsec ))
   1.133 +        {
   1.134 +            iParams.iTestStep.INFO_PRINTF1(_L("Timer Spec Matched"));
   1.135 +            return ETrue;
   1.136 +
   1.137 +        }
   1.138 +    else
   1.139 +        {
   1.140 +            iParams.iTestStep.INFO_PRINTF1(_L("Timer spec Not Matched"));
   1.141 +            return EFalse;
   1.142 +        }
   1.143 +
   1.144 +
   1.145 +    }