--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/psmservices/psmserver/tsrc/PsmTestModule/src/PSMTestBlocks.cpp Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,1247 @@
+/*
+* Copyright (c) 2002 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: ?Description
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include <StifItemParser.h>
+#include <psmclient.h>
+#include <psmsettings.h>
+#include <psmtypes.h>
+
+#include <psmsrvdomaincrkeys.h>
+#include <centralrepository.h>
+
+#include "PSMTest.h"
+
+
+ // CONSTANT DEFINITIONS
+
+ // For Settings API tests
+ const TUint32 KCenRepUid2 = 0x10200EE4;
+ const TUint32 KCenRepUid5 = 0x10200EE5;
+
+ _LIT( KKey1FullPsm, "FullPowerSaveMode" );
+ _LIT( KKey1PartialPsm, "PartialPowerSaveMode" );
+ _LIT( KKey1NormalMode, "NormalMode" );
+
+ const TInt KKey2FullPsm = 600;
+ const TInt KKey2NormalMode = 450;
+
+ const TInt KKey3FullPsm = 10;
+ const TInt KKey3NormalMode = 50;
+
+ const TInt KKey4FullPsm = 1500;
+ const TInt KKey4PartialPsm = 2475;
+ const TInt KKey4NormalMode = 5250;
+
+ const TReal KKey5FullPsm = 2.75;
+ const TReal KKey5PartialPsm = 2.435;
+ const TReal KKey5NormalMode = 1.65;
+
+ // For CenRep change checkings
+ const TUint32 KCenRepUid = 0x10200EE3;
+ TUid KCenRepUidValue = { KCenRepUid };
+
+ _LIT8( KOriginalValue4, "ThirdFour" );
+
+ enum TPsmPluginFirstKeys
+ {
+ EPsmPluginSecondKey1 = 1,
+ EPsmPluginSecondKey2,
+ EPsmPluginSecondKey3,
+ EPsmPluginSecondKey4,
+ EPsmPluginSecondKey5
+ };
+
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPSMTest::Delete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// -----------------------------------------------------------------------------
+//
+void CPSMTest::Delete()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::RunMethodL(
+ CStifItemParser& aItem )
+ {
+
+ static TStifFunctionInfo const KFunctions[] =
+ {
+ // Copy this line for every implemented function.
+ // First string is the function name used in TestScripter script file.
+ // Second is the actual implementation member function.
+ ENTRY( "InitTest", CPSMTest::InitializeTest ),
+ ENTRY( "FullPsmChange", CPSMTest::FullPowerSaveModeChange ),
+ ENTRY( "ChangePsmInit", CPSMTest::NotifyPowerSaveModeChangeInit ),
+ ENTRY( "ChangePsmWaitComplete", CPSMTest::PsmWaitComplete ),
+ ENTRY( "ChangePsmEnd", CPSMTest::NotifyPowerSaveModeChangeEnd ),
+ ENTRY( "CancelPsm", CPSMTest::CancelPowerSaveModeChange ),
+
+ ENTRY( "CheckPsmMode", CPSMTest::CheckPsmMode ),
+ ENTRY( "GetCurrentSettings", CPSMTest::GetCurrentSettings ),
+ ENTRY( "BackupSettings", CPSMTest::BackupSettings ),
+ ENTRY( "PSMNotificationInit", CPSMTest::PsmNotificationInit ),
+ ENTRY( "PSMNotificationCancel", CPSMTest::PsmNotificationCancel ),
+ ENTRY( "PSMNotificationEnd", CPSMTest::PsmNotificationEnd ),
+
+ ENTRY( "LoadUnload", CPSMTest::LoadAndUnload ),
+ ENTRY( "CenRepChange", CPSMTest::CenRepChange ),
+ ENTRY( "VerifyCenRepChange", CPSMTest::VerifyCenRepChangeL ),
+ ENTRY( "ChangeSettingsInit", CPSMTest::ChangeSettingsInit ),
+ ENTRY( "ChangeSettings", CPSMTest::ChangeSettings ),
+ ENTRY( "ChangeSettingsEnd", CPSMTest::ChangeSettingsEnd ),
+ ENTRY( "OpenClosePerformanceInit", CPSMTest::OpenClosePerformanceInit ),
+ ENTRY( "OpenClosePerformanceRequest", CPSMTest::OpenClosePerformanceRequest ),
+ ENTRY( "OpenClosePerformanceCancel", CPSMTest::OpenClosePerformanceCancel ),
+ ENTRY( "OpenClosePerformanceChange", CPSMTest::OpenClosePerformanceChange ),
+ ENTRY( "OpenClosePerformanceEnd", CPSMTest::OpenClosePerformanceEnd ),
+ ENTRY( "ChangePsmPerformance", CPSMTest::ChangePsmPerformance ),
+ ENTRY( "ChangeSettingsPerformance", CPSMTest::ChangeSettingsPerformance )
+ };
+
+ const TInt count = sizeof( KFunctions ) /
+ sizeof( TStifFunctionInfo );
+
+ return RunInternalL( KFunctions, count, aItem );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::InitializeTest
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::InitializeTest( CStifItemParser& aItem )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: InitializeTest") );
+
+ FullPowerSaveModeChange( aItem );
+
+ // reset error code
+ iErrorCode = KErrNone;
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::LoadAndUnload
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::LoadAndUnload( CStifItemParser& /*aItem*/ )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: LoadAndUnload") );
+
+__UHEAP_MARK;
+ // Create DLL and notify PSM change
+ iPsmClient = CPsmClient::NewL( *this );
+
+ delete iPsmClient;
+__UHEAP_MARKEND;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::CenRepChange
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::CenRepChange( CStifItemParser& aItem )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: CenRepChange") );
+
+ CRepository* cenrep = CRepository::NewLC( KCenRepUidValue );
+
+ TInt value1 = 0;
+ TInt value2 = 0;
+ TInt value3 = 0;
+ TInt value4 = 0;
+ TInt value5 = 0;
+
+ cenrep->Get( EPsmPluginSecondKey1, value1 );
+ cenrep->Get( EPsmPluginSecondKey2, value2 );
+ cenrep->Get( EPsmPluginSecondKey3, value3 );
+ cenrep->Get( EPsmPluginSecondKey4, value4 );
+ cenrep->Get( EPsmPluginSecondKey5, value5 );
+
+ CleanupStack::PopAndDestroy( cenrep );
+
+ // Print old values from array
+ RDebug::Print( _L( "PSMTest::CenRepChange(): oldValue info1: %d" ), value1 );
+ RDebug::Print( _L( "PSMTest::CenRepChange(): oldValue info2: %d" ), value2 );
+ RDebug::Print( _L( "PSMTest::CenRepChange(): oldValue info3: %d" ), value3 );
+ RDebug::Print( _L( "PSMTest::CenRepChange(): oldValue info4: %d" ), value4 );
+ RDebug::Print( _L( "PSMTest::CenRepChange(): oldValue info5: %d" ), value5 );
+
+ NotifyPowerSaveModeChangeInit( aItem );
+ PsmWaitComplete( aItem );
+
+ return iErrorCode;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::VerifyCenRepChangeL
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::VerifyCenRepChangeL( CStifItemParser& aItem )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: VerifyCenRepChangeL") );
+
+ // Get mode
+ TInt mode( 0 );
+ TInt err = aItem.GetNextInt( mode );
+
+ CRepository* cenrep = CRepository::NewLC( KCenRepUidValue );
+
+ TInt value1 = 0;
+ TInt value2 = 0;
+ TInt value3 = 0;
+ TInt value4 = 0;
+ TInt value5 = 0;
+
+ cenrep->Get( EPsmPluginSecondKey1, value1 );
+ cenrep->Get( EPsmPluginSecondKey2, value2 );
+ cenrep->Get( EPsmPluginSecondKey3, value3 );
+ cenrep->Get( EPsmPluginSecondKey4, value4 );
+ cenrep->Get( EPsmPluginSecondKey5, value5 );
+
+ CleanupStack::PopAndDestroy( cenrep );
+
+ // Print new values from array
+ RDebug::Print( _L( "PSMTest::CenRepChange(): newValue info1: %d" ), value1 );
+ RDebug::Print( _L( "PSMTest::CenRepChange(): newValue info2: %d" ), value2 );
+ RDebug::Print( _L( "PSMTest::CenRepChange(): newValue info3: %d" ), value3 );
+ RDebug::Print( _L( "PSMTest::CenRepChange(): newValue info4: %d" ), value4 );
+ RDebug::Print( _L( "PSMTest::CenRepChange(): newValue info5: %d" ), value5 );
+
+ // Checks
+ switch ( mode )
+ {
+ case EPsmsrvModeNormal:
+ {
+ if ( value1 == 5 && value2 == 6 &&
+ value3 == 7 && value4 == 8 &&
+ value5 == 9 )
+ {
+ err = KErrNone;
+ }
+ else
+ {
+ err = KErrArgument;
+ }
+ break;
+ }
+ case EPsmsrvModePowerSave:
+ {
+ if ( value1 == 55 && value2 == 66 &&
+ value3 == 77 && value4 == 88 &&
+ value5 == 99 )
+ {
+ err = KErrNone;
+ }
+ else
+ {
+ err = KErrArgument;
+ }
+ break;
+ }
+ case EPsmsrvPartialMode:
+ {
+ if ( value1 == 555 && value2 == 666 &&
+ value3 == 777 && value4 == 888 &&
+ value5 == 999 )
+ {
+ err = KErrNone;
+ }
+ else
+ {
+ err = KErrArgument;
+ }
+ break;
+ }
+ }
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::FullPowerSaveModeChange
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::FullPowerSaveModeChange( CStifItemParser& aItem )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: FullPowerSaveModeChange") );
+
+ NotifyPowerSaveModeChangeInit( aItem );
+ PsmWaitComplete( aItem );
+ return NotifyPowerSaveModeChangeEnd( aItem );
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::NotifyPowerSaveModeChangeInit
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::NotifyPowerSaveModeChangeInit( CStifItemParser& aItem )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: NotifyPowerSaveModeChangeInit") );
+
+ TInt tomode( 0 );
+ TInt err = aItem.GetNextInt( tomode );
+
+ iErrorCode = KErrNone;
+
+ // Store to-mode for later use
+ iChangedMode = tomode;
+ iPsmComplete = EFalse;
+
+ iLog->Log( _L("PSMTest: NotifyPowerSaveModeChangeInit: parameter[%d] error: %d"), tomode, err );
+
+ if ( !iPsmClient )
+ {
+ iPsmClient = CPsmClient::NewL( *this );
+ }
+
+ iPsmClient->ChangePowerSaveMode( tomode );
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::PsmWaitComplete
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::PsmWaitComplete( CStifItemParser& /*aItem*/ )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: PsmWaitComplete") );
+
+ if ( !iPsmComplete )
+ {
+ // Wait for PSM mode change complete
+ iSchedulerWait.Start();
+ }
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::NotifyPowerSaveModeChangeEnd
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::NotifyPowerSaveModeChangeEnd( CStifItemParser& /*aItem*/ )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: NotifyPowerSaveModeChangeEnd") );
+
+ delete iPsmClient;
+ iPsmClient = NULL;
+
+ return iErrorCode;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::CancelPowerSaveModeChange
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::CancelPowerSaveModeChange( CStifItemParser& /*aItem*/ )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: CancelPowerSaveModeChange") );
+
+ // Cancel PSM change
+ iPsmClient->CancelPowerSaveModeChange();
+
+ return iErrorCode;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::PsmNotification
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::PsmNotificationInit( CStifItemParser& /*aItem*/ )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: PsmNotificationInit") );
+
+ if ( !iPsmClient )
+ {
+ iPsmClient = CPsmClient::NewL( *this );
+ }
+
+ iPsmClient->RequestPowerSaveModeNotification();
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::PsmNotificationCancel
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::PsmNotificationCancel( CStifItemParser& /*aItem*/ )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: PsmNotificationCancel") );
+
+ TInt error( KErrNone );
+
+ if ( !iPsmClient )
+ {
+ error = KErrNotFound;
+ }
+ else
+ {
+ iPsmClient->CancelPowerSaveModeNotificationRequest();
+ }
+
+ return error;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::PsmNotification
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::PsmNotificationEnd( CStifItemParser& aItem )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: PsmNotificationEnd") );
+
+ TInt currentmode( 0 );
+ TInt err = aItem.GetNextInt( currentmode );
+
+ if ( KErrNone != err )
+ {
+ return KErrGeneral;
+ }
+
+ if ( currentmode == iChangedMode )
+ {
+ // Test pass
+ err = KErrNone;
+ }
+ else
+ {
+ err = KErrArgument;
+ }
+
+ delete iPsmClient;
+ iPsmClient = NULL;
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::ChangeSettingsInit
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::ChangeSettingsInit( CStifItemParser& aItem )
+ {
+ // Print to log file
+ iLog->Log( _L("PSMTest: ChangeSettingsInit") );
+
+ TInt initmode( 0 );
+ TInt err = aItem.GetNextInt( initmode );
+
+ if ( KErrNone != err )
+ {
+ return KErrGeneral;
+ }
+
+ // Initialize config array with init mode. This is different than the mode we are
+ // changing to
+ GenerateConfigArray( iPsmConfigArray, initmode, 0 );
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::GenerateConfigArray
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CPSMTest::GenerateConfigArray( RConfigInfoArray& aPsmConfigArray, TInt aMode, TInt aIncrement )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: GenerateConfigArray") );
+
+ // Initialize infos
+ TPsmsrvConfigInfo info1;
+ info1.iConfigId = 1 + aIncrement;
+ info1.iConfigType = EConfigTypeBuf;
+
+ TPsmsrvConfigInfo info2;
+ info2.iConfigId = 2 + aIncrement;
+ info2.iConfigType = EConfigTypeInt;
+
+ TPsmsrvConfigInfo info3;
+ info3.iConfigId = 3 + aIncrement;
+ info3.iConfigType = EConfigTypeInt;
+
+ TPsmsrvConfigInfo info4;
+ info4.iConfigId = 4 + aIncrement;
+ info4.iConfigType = EConfigTypeInt;
+
+ TPsmsrvConfigInfo info5;
+ info5.iConfigId = 5 + aIncrement;
+ info5.iConfigType = EConfigTypeReal;
+
+ switch ( aMode )
+ {
+ case EPsmsrvModeNormal:
+ {
+ info1.iDesValue.Append( KKey1NormalMode );
+ info2.iIntValue = KKey2NormalMode;
+ info3.iIntValue = KKey3NormalMode;
+ info4.iIntValue = KKey4NormalMode;
+ info5.iRealValue = KKey5NormalMode;
+ break;
+ }
+ case EPsmsrvModePowerSave:
+ {
+ info1.iDesValue.Append( KKey1FullPsm );
+ info2.iIntValue = KKey2FullPsm;
+ info3.iIntValue = KKey3FullPsm;
+ info4.iIntValue = KKey4FullPsm;
+ info5.iRealValue = KKey5FullPsm;
+ break;
+ }
+ case EPsmsrvPartialMode:
+ {
+ info1.iDesValue.Append( KKey1PartialPsm );
+ info2.iIntValue = KKey2NormalMode;
+ info3.iIntValue = KKey3NormalMode;
+ info4.iIntValue = KKey4PartialPsm;
+ info5.iRealValue = KKey5PartialPsm;
+ break;
+ }
+ default:
+ {
+ iLog->Log( _L("PSMTest: GenerateConfigArray - Unknown mode") );
+ }
+ }
+
+ aPsmConfigArray.AppendL( info1 );
+ aPsmConfigArray.AppendL( info2 );
+ aPsmConfigArray.AppendL( info3 );
+ aPsmConfigArray.AppendL( info4 );
+ aPsmConfigArray.AppendL( info5 );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::ChangeSettings
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::ChangeSettings( CStifItemParser& aItem )
+ {
+ // Print to log file
+ iLog->Log( _L("PSMTest: ChangeSettings") );
+
+ TBool useExistingApi( EFalse );
+ TInt err = aItem.GetNextInt( useExistingApi );
+
+ if ( KErrNone != err )
+ {
+ return KErrGeneral;
+ }
+
+ if ( !useExistingApi )
+ {
+ CPsmSettings* settings = CPsmSettings::NewLC();
+ err = settings->BackupAndGetSettings( iPsmConfigArray, KCenRepUid2 );
+ CleanupStack::PopAndDestroy( settings );
+ }
+ else
+ {
+ if ( iPsmClient )
+ {
+ iPsmClient->PsmSettings().BackupAndGetSettings( iPsmConfigArray, KCenRepUid2 );
+ }
+ else
+ {
+ err = KErrNotFound;
+ }
+ }
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::ChangeSettingsEnd
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::ChangeSettingsEnd( CStifItemParser& aItem )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: ChangeSettingsEnd") );
+
+ TInt mode( 0 );
+ TInt err = aItem.GetNextInt( mode );
+
+ if ( KErrNone != err )
+ {
+ return KErrGeneral;
+ }
+
+ // First, generate array for changed mode settings
+ RConfigInfoArray compareArray;
+ GenerateConfigArray( compareArray, mode, 0 );
+
+ // Compare iPsmConfigArray with changed mode settings
+ for ( TInt i = 0; i < iPsmConfigArray.Count() && !err; i++ )
+ {
+ TBool found( EFalse );
+ for ( TInt c = 0; c < compareArray.Count() && !found; c++ )
+ {
+ found = Compare( iPsmConfigArray[i], compareArray[c] );
+ }
+
+ if ( !found )
+ {
+ RDebug::Print( _L( " Compare failed with item: %i " ), i );
+ err = KErrArgument;
+ }
+ }
+
+ // Cleanup, no memory leaks
+ compareArray.Close();
+ iPsmConfigArray.Close();
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::Compare
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TBool CPSMTest::Compare( TPsmsrvConfigInfo aTarget, TPsmsrvConfigInfo aSource )
+ {
+ // Print to log file
+ iLog->Log( _L("PSMTest: Compare") );
+ TBool returnValue( EFalse );
+
+ if ( aTarget.iConfigId == aSource.iConfigId &&
+ aTarget.iConfigType == aSource.iConfigType )
+ {
+ iLog->Log( _L( "aTarget.iConfigId: %i, aSource.iConfigId: %i" ), aTarget.iConfigId, aSource.iConfigId );
+ iLog->Log( _L( "aTarget.iConfigType: %i, aSource.iConfigType: %i" ), aTarget.iConfigType, aSource.iConfigType );
+ switch ( aTarget.iConfigType )
+ {
+ case EConfigTypeInt:
+ {
+ iLog->Log( _L( "aTarget.iIntValue: %i, aSource.iIntValue: %i" ), aTarget.iIntValue, aSource.iIntValue );
+ returnValue = aTarget.iIntValue == aSource.iIntValue;
+ break;
+ }
+ case EConfigTypeReal:
+ {
+ iLog->Log( _L( "aTarget.iRealValue: %f, aSource.iRealValue: %f" ), aTarget.iRealValue, aSource.iRealValue );
+ returnValue = aTarget.iRealValue == aSource.iRealValue;
+ break;
+ }
+ case EConfigTypeBuf:
+ {
+ TBuf<256> targetBuf;
+ targetBuf.Copy( aTarget.iDesValue );
+ TBuf<256> sourceBuf;
+ sourceBuf.Copy( aSource.iDesValue );
+ iLog->Log( _L( "aTarget.iDesValue: %S, aSource.iDesValue: %S" ), &targetBuf, &sourceBuf );
+ // Compare returns zero if both descroptors are the same
+ if ( 0 == targetBuf.Compare( sourceBuf ) )
+ {
+ returnValue = ETrue;
+ }
+ break;
+ }
+ default:
+ {
+ iLog->Log( ( _L( "PSMTest: Compare - Unknown type" ) ) );
+ returnValue = EFalse;
+ }
+ }
+ }
+ return returnValue;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::OpenClosePerformanceInit
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::OpenClosePerformanceInit( CStifItemParser& /*aItem*/ )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: OpenClosePerformanceInit") );
+
+ /* TInt amount( 0 );
+ TInt err = aItem.GetNextInt( amount );
+
+ if ( KErrNone != err )
+ {
+ return KErrGeneral;
+ }
+
+ // Open amount of client connections
+ for ( TInt i = 0; i < amount; i++ )
+ {
+ CPSMTestObserver* observer = new ( ELeave ) CPSMTestObserver();
+ CPsmNotifier* client = CPsmNotifier::NewL( *observer );
+ iObserverArray.Append( observer );
+ iNotifierArray.Append( client );
+ }
+*/
+ return KErrNotSupported;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::OpenClosePerformanceRequest
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::OpenClosePerformanceRequest( CStifItemParser& /*aItem*/ )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: OpenClosePerformanceRequest") );
+
+ // Open amount of client connections
+ /* for ( TInt i = 0; i < iNotifierArray.Count(); i++ )
+ {
+ iNotifierArray[ i ]->RequestPSMChangeNotification();
+ }
+
+ // Put member variable to NULL
+ iPsmNotifier = NULL;
+ */
+
+ return KErrNotSupported;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::OpenClosePerformanceChange
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::OpenClosePerformanceChange( CStifItemParser& /*aItem*/ )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: OpenClosePerformanceChange") );
+
+ // aItem has three parameters:
+ // - First indicates initialization mode,
+ // - Second indicates use existing settings API and
+ // - Third indicates the mode to compare changed settings
+
+ // Open amount of client connections
+ /*for ( TInt i = 0; i < iNotifierArray.Count(); i++ )
+ {
+ // iPsmNotifier = iNotifierArray[ i ];
+ CStifItemParser* params = &aItem;
+ ChangeSettingsInit( *params );
+ ChangeSettings( *params );
+ ChangeSettingsEnd( *params );
+ }
+ */
+ // Put member variable to NULL
+ // iPsmNotifier = NULL;
+
+ return KErrNotSupported;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::OpenClosePerformanceCancel
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::OpenClosePerformanceCancel( CStifItemParser& /*aItem*/ )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: OpenClosePerformanceCancel") );
+
+/* if ( iNotifierArray.Count() != iObserverArray.Count() )
+ {
+ // Initialization error
+ return KErrBadHandle;
+ }
+
+ // Open amount of client connections
+ for ( TInt i = 0; i < iNotifierArray.Count(); i++ )
+ {
+ iPsmNotifier = iNotifierArray[ i ];
+ iChangeObserver = iObserverArray[ i ];
+ PsmNotificationCancel( aItem );
+ }
+
+ // Put member variable to NULL
+ iPsmNotifier = NULL;
+ iChangeObserver = NULL;
+*/
+ return KErrNotSupported;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::OpenClosePerformanceEnd
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::OpenClosePerformanceEnd( CStifItemParser& /*aItem*/ )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: OpenClosePerformanceEnd") );
+
+ /*for ( TInt i = 0; i < iNotifierArray.Count(); i++ )
+ {
+ delete iNotifierArray[i];
+ iNotifierArray.Remove( i );
+ i--;
+ }
+
+ for ( TInt i = 0; i < iObserverArray.Count(); i++ )
+ {
+ delete iObserverArray[i];
+ iObserverArray.Remove( i );
+ i--;
+ }
+
+ iNotifierArray.Close();
+ iObserverArray.Close();
+ */
+ return KErrNotSupported;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::CheckPsmMode
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::CheckPsmMode( CStifItemParser& aItem )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: CheckPsmMode") );
+
+
+ TInt mode( 0 );
+ TInt checkmode( 0 );
+
+ TInt err = aItem.GetNextInt( checkmode );
+
+ if ( KErrNone != err )
+ {
+ return KErrGeneral;
+ }
+
+ CPsmSettings* settings = CPsmSettings::NewLC();
+ err = settings->GetCurrentMode( mode );
+ CleanupStack::PopAndDestroy( settings );
+
+
+ /* CRepository* cenrep = CRepository::NewLC( KCRUidPowerSaveMode );
+ cenrep->Get( KPsmCurrentMode, mode );
+ CleanupStack::PopAndDestroy( cenrep );
+ */
+
+ if ( KErrNone == err && mode != checkmode )
+ {
+ err = KErrArgument;
+ }
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::GetCurrentSettings
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::GetCurrentSettings( CStifItemParser& aItem )
+ {
+ // Print to log file
+ iLog->Log( _L("PSMTest: GetCurrentSettings") );
+
+ TInt initmode( 0 );
+ TInt err = aItem.GetNextInt( initmode );
+
+ if ( KErrNone != err )
+ {
+ return KErrGeneral;
+ }
+
+ // Initialize config array with init mode. This is different than the mode we are
+ // changing to
+ RConfigInfoArray compareArray;
+ GenerateConfigArray( compareArray, initmode, 0 );
+
+ // Generate to normal mode settings
+ RConfigInfoArray currentSettings;
+ GenerateConfigArray( currentSettings, EPsmsrvModeNormal, 0 );
+
+ CPsmSettings* settings = CPsmSettings::NewLC();
+ err = settings->GetSettings( currentSettings, KCenRepUid2 );
+ CleanupStack::PopAndDestroy( settings );
+
+ // Compare arrays
+ for ( TInt i = 0; i < compareArray.Count() && !err; i++ )
+ {
+ TBool found( EFalse );
+ for ( TInt c = 0; c < currentSettings.Count() && !found; c++ )
+ {
+ found = Compare( currentSettings[i], compareArray[c] );
+ }
+
+ if ( !found )
+ {
+ err = KErrArgument;
+ }
+ }
+
+ // Cleanup, no memory leaks
+ compareArray.Close();
+ currentSettings.Close();
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::BackupSettings
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::BackupSettings( CStifItemParser& aItem )
+ {
+ // Print to log file
+ iLog->Log( _L("PSMTest: BackupSettings") );
+
+ TInt initmode( 0 );
+ TInt err = aItem.GetNextInt( initmode );
+
+ if ( KErrNone != err )
+ {
+ return KErrGeneral;
+ }
+
+ // Initialize config array with init mode. This is different than the mode we are
+ // changing to
+ RConfigInfoArray backupArray;
+ GenerateConfigArray( backupArray, initmode, 5 );
+
+ CPsmSettings* settings = CPsmSettings::NewLC();
+ err = settings->BackupSettings( backupArray, KCenRepUid5 );
+ CleanupStack::PopAndDestroy( settings );
+
+ // Cleanup, no memory leaks
+ backupArray.Close();
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::ChangePsmPerformance
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::ChangePsmPerformance( CStifItemParser& aItem )
+ {
+
+ // Print to log file
+ iLog->Log( _L("PSMTest: ChangePsmPerformance") );
+
+ // aItem has three parameters:
+ // - First one is the amount of actions to do
+ // - Second one is the first mode to change
+ // - Third one is the second mode to change
+
+ TInt amount( 0 );
+ TInt firstmode( 0 );
+ TInt secondmode( 0 );
+
+ TInt err = aItem.GetNextInt( amount );
+
+ if ( KErrNone != err )
+ {
+ return KErrGeneral;
+ }
+
+ err = aItem.GetNextInt( firstmode );
+
+ if ( KErrNone != err )
+ {
+ return KErrGeneral;
+ }
+
+ err = aItem.GetNextInt( secondmode );
+
+ if ( KErrNone != err )
+ {
+ return KErrGeneral;
+ }
+
+ // Create local client, no need for memeber
+ CPsmClient* client = CPsmClient::NewLC( *this );
+
+ // Need to change mode in turns
+ TBool changeFirstMode( ETrue );
+
+ // Loop and change mode
+ for ( TInt i = 0; i < amount && iErrorCode == KErrNone; i++ )
+ {
+ if ( changeFirstMode )
+ {
+ client->ChangePowerSaveMode( firstmode );
+ changeFirstMode = EFalse;
+ }
+ else
+ {
+ client->ChangePowerSaveMode( secondmode );
+ changeFirstMode = ETrue;
+ }
+
+ // Wait for mode to change
+ iSchedulerWait.Start();
+
+ // No need to do anything else, continue to next mode
+ }
+
+ CleanupStack::PopAndDestroy( client );
+
+ return iErrorCode;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::ChangeSettingsPerformance
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPSMTest::ChangeSettingsPerformance( CStifItemParser& /*aItem*/ )
+ {
+ // Print to log file
+ iLog->Log( _L("PSMTest: ChangeSettingsPerformance") );
+
+ TInt increment = 0;
+ TInt err = KErrNone;
+
+ // Initialize config array with normal mode.
+ for ( TInt i = 0; i < 10; i++ )
+ {
+ GenerateConfigArray( iPsmConfigArray, EPsmsrvModeNormal, increment );
+ increment = iPsmConfigArray.Count();
+ }
+
+ // Change settings
+ CPsmSettings* settings = CPsmSettings::NewLC();
+ err = settings->BackupAndGetSettings( iPsmConfigArray, KCenRepUid5 );
+ CleanupStack::PopAndDestroy( settings );
+
+ // Generate array for changed mode settings
+ increment = 0;
+ RConfigInfoArray compareArray;
+ for ( TInt k = 0; k < 10; k++ )
+ {
+ GenerateConfigArray( compareArray, EPsmsrvModePowerSave, increment );
+ increment = compareArray.Count();
+ }
+
+ // Compare iPsmConfigArray with changed mode settings
+ for ( TInt j = 0; j < iPsmConfigArray.Count() && !err; j++ )
+ {
+ TBool found( EFalse );
+ for ( TInt c = 0; c < compareArray.Count() && !found; c++ )
+ {
+ found = Compare( iPsmConfigArray[j], compareArray[c] );
+ }
+
+ if ( !found )
+ {
+ err = KErrArgument;
+ }
+ }
+
+ // Cleanup, no memory leaks
+ compareArray.Close();
+ iPsmConfigArray.Close();
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::PowerSaveModeChanged
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CPSMTest::PowerSaveModeChanged( const TPsmsrvMode aMode )
+ {
+ // Print to log file
+ iLog->Log( _L("PSMTest: PowerSaveModeChanged - mode: %d"), aMode );
+
+ iErrorCode = KErrNone;
+
+ iChangedMode = aMode;
+
+ iPsmComplete = ETrue;
+
+ // Stop scheduler wait
+ if ( iSchedulerWait.IsStarted() )
+ {
+ iSchedulerWait.AsyncStop();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::PowerSaveModeChangeError
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CPSMTest::PowerSaveModeChangeError( const TInt aError )
+ {
+ // Print to log file
+ iLog->Log( _L("PSMTest: PowerSaveModeChangeError - Error: %d"), aError );
+
+ iErrorCode = aError;
+
+ // Stop scheduler wait
+ if ( iSchedulerWait.IsStarted() )
+ {
+ iSchedulerWait.AsyncStop();
+ }
+ }
+
+/***************************************************************************
+ * TestObserver functions
+ ***************************************************************************/
+// -----------------------------------------------------------------------------
+// CPSMTest::PowerSaveModeChanged
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+/*void CPSMTestObserver::PowerSaveModeChanged( const TPsmsrvMode aMode )
+ {
+ // Print to log file
+ RDebug::Print( _L("CPSMTestObserver: PowerSaveModeChanged - Mode: %d"), aMode );
+ iNewMode = aMode;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::PowerSaveModeChangeError
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CPSMTestObserver::PowerSaveModeChangeError( const TInt aError )
+ {
+ // Print to log file
+ RDebug::Print( _L("CPSMTestObserver: PowerSaveModeChangeError - Error: %d"), aError );
+ iNewMode = aError;
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::CPSMTestObserver
+// -----------------------------------------------------------------------------
+//
+CPSMTestObserver::CPSMTestObserver()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CPSMTest::NotifyPowerSaveModeChange
+// -----------------------------------------------------------------------------
+//
+CPSMTestObserver::~CPSMTestObserver()
+ {
+ }
+*/
+// End of File