diff -r 000000000000 -r bde4ae8d615e os/ossrv/genericservices/systemagent/test/rtest/t_persisthal/t_persisthal.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/genericservices/systemagent/test/rtest/t_persisthal/t_persisthal.cpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,186 @@ +// Copyright (c) 2006-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: +// For testing Persist HAL : +// +// + +/** + @file + @internalComponent + @test +*/ + +#include +#include +#include +#include + +#define TEST(arg) ::Check((arg), __LINE__) +#define TEST2(aValue, aExpected) ::Check(aValue, aExpected, __LINE__) + +LOCAL_D RTest TheTest (_L ("T_PersistHAL")); + +TInt noSample = 25; + +LOCAL_C void Check(TInt aValue, TInt aLine) + { + if(!aValue) + { + TheTest(EFalse, aLine); + } + } + +LOCAL_C void Check(TInt aValue, TInt aExpected, TInt aLine) + { + if(aValue != aExpected) + { + RDebug::Print(_L("*** Expected error: %d, got: %d\r\n"), aExpected, aValue); + TheTest(EFalse, aLine); + } + } + +TInt TestPersistHALWaitDirectL() + { + RProcess process; + TEST2(process.Create(_L("HALSettings.exe"), _L("PERSIST")),KErrNone); + TRequestStatus status; + process.Logon(status); + process.Resume(); + User::WaitForRequest(status); + TInt exitReason = process.ExitReason(); + process.Close(); + return exitReason; + } + +//Tests +//==================================================================== + +/** +@SYMTestCaseID SYSLIB-HALSETTINGS-CT-1721 +@SYMTestCaseDesc Performance Test Persist HAL +@SYMTestPriority Medium +@SYMTestActions This test trys to persist HAL settings by starting HALSetting.exe + directly +@SYMTestExpectedResults Tests must not fail +@SYMDEF DEF083235: Prop: HAL Attributes (eg screen calibration) lost if the battery is pulled out +*/ +void TestPerformancePersistDirectL() + { + TheTest.Next (_L (" @SYMTestCaseID:SYSLIB-HALSETTINGS-CT-1721 Performance Persist test directly calling EXE ")); + TInt fastTimerFreq; + HAL::Get(HALData::EFastCounterFrequency, fastTimerFreq); + TReal ticksPerMicroSec = 1.0E-6 * fastTimerFreq; + + TUint prevTime; + TUint timeDiff; + + prevTime = User::FastCounter(); + TInt noSuccessfulSamples=0; + for(; noSuccessfulSamples < noSample; ++noSuccessfulSamples) + { + if(TestPersistHALWaitDirectL() !=KErrNone ) + { + break;//Stop performing the tests, calculate average with no of successful Samples. + } + } + TEST(noSuccessfulSamples >0); + timeDiff = User::FastCounter() - prevTime; + TReal64 fsSessionMicroSecs = timeDiff / (noSuccessfulSamples * ticksPerMicroSec); + TheTest.Printf(_L("Time to Persist HAL directly calling exe = %10.2lf microseconds\n"), fsSessionMicroSecs); + } + +/** +@SYMTestCaseID SYSLIB-HALSETTINGS-CT-1722 +@SYMTestCaseDesc Performance Test Persist HAL through BAFL DLL +@SYMTestPriority Medium +@SYMTestActions This test trys to persist HAL settings by calling BAFL + API +@SYMTestExpectedResults Tests must not fail +@SYMDEF DEF083235: Prop: HAL Attributes (eg screen calibration) lost if the battery is pulled out +*/ +void TestPerformancePersistThroughBAFL() + { + + TheTest.Next (_L (" @SYMTestCaseID:SYSLIB-HALSETTINGS-CT-1722 Performance Persist test Through BAFL DLL ")); + TInt fastTimerFreq; + HAL::Get(HALData::EFastCounterFrequency, fastTimerFreq); + TReal ticksPerMicroSec = 1.0E-6 * fastTimerFreq; + + TUint prevTime; + TUint timeDiff; + + prevTime = User::FastCounter(); + TInt noSuccessfulSamples=0; + for(;noSuccessfulSamples< noSample; ++noSuccessfulSamples) + { + if(BaflUtils::PersistHAL()!=KErrNone) + { + break;//Stop performing the tests, calculate average with no of successful Samples. + } + } + TEST(noSuccessfulSamples >0); + timeDiff = User::FastCounter() - prevTime; + TReal64 fsSessionMicroSecs = timeDiff / (noSuccessfulSamples * ticksPerMicroSec); + TheTest.Printf(_L("Time to Persist HAL through BAFL DLL = %10.2lf microseconds\n"), fsSessionMicroSecs); + } + +/** +@SYMTestCaseID SYSLIB-HALSETTINGS-CT-1723 +@SYMTestCaseDesc Capability Test +@SYMTestPriority Medium +@SYMTestActions This test exe do not have the capability to initialise HAL settings + try to initialise HAL setting by starting HALSetting.exe +@SYMTestExpectedResults Tests must not fail +@SYMDEF DEF083235: Prop: HAL Attributes (eg screen calibration) lost if the battery is pulled out +*/ +void CapabilityTest() + { + TheTest.Next (_L (" @SYMTestCaseID:SYSLIB-HALSETTINGS-CT-1723 Capability Test ")); + RProcess process; + //To initialise processes should have SID == SID of EStart, This process's SID is '0' + TEST2(process.Create(_L("HALSettings.exe"), _L("INITIALISE")),KErrNone); + TRequestStatus status; + process.Logon(status); + process.Resume(); + User::WaitForRequest(status); + TInt exitReason = process.ExitReason(); + process.Close(); + TEST2(exitReason,KErrPermissionDenied); + } + +LOCAL_C void RunTestsL() + { + TEST2(TestPersistHALWaitDirectL (),KErrNone); + TEST2(BaflUtils::PersistHAL(),KErrNone); + + CapabilityTest(); + TestPerformancePersistDirectL (); + TestPerformancePersistThroughBAFL (); + } + +GLDEF_C TInt E32Main() + { + __UHEAP_MARK; + TheTest.Title (); + TheTest.Start (_L ("HAL Persist test")); + CTrapCleanup* tc = CTrapCleanup::New(); + + TRAPD(err, ::RunTestsL()); + + delete tc; + TheTest.End (); + TheTest.Close (); + __UHEAP_MARKEND; + return err; + }