os/ossrv/lowlevellibsandfws/pluginfw/TestExecute/EComPerfTest/src/Te_EComPluginReDiscoverPerfTestStep.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// Te_EComPluginReDiscoverPerfTest.cpp
sl@0
    15
// Implements the performance loggr for ECOM
sl@0
    16
// 
sl@0
    17
//
sl@0
    18
sl@0
    19
/**
sl@0
    20
 @file
sl@0
    21
 @internalComponent
sl@0
    22
*/
sl@0
    23
sl@0
    24
#include "Te_EComPluginReDiscoverPerfTestStep.h"
sl@0
    25
#include <e32test.h>
sl@0
    26
#include <bautils.h>
sl@0
    27
#include <startup.hrh>
sl@0
    28
#include <ecom/ecom.h>
sl@0
    29
#include "Interface.h"
sl@0
    30
#include "EcomTestUtils.h"
sl@0
    31
sl@0
    32
#ifdef __ECOM_SERVER_PERFORMANCE__
sl@0
    33
const TInt KOneSecond = 1000000;
sl@0
    34
sl@0
    35
const TReal KNotifierRunLTimeLimitH2RAM = 2;					// mSec
sl@0
    36
const TReal KTimerRunLScanTwoRSCsOnOneDriveLimitH2RAM = 80;	// mSec
sl@0
    37
const TReal KTimerRunLScanZeroRSCOnOneDriveLimitH2RAM = 40;	// mSec
sl@0
    38
sl@0
    39
const TReal KNotifierRunLTimeLimitH4RAM = 1;               // mSec
sl@0
    40
const TReal KTimerRunLScanTwoRSCsOnOneDriveLimitH4RAM = 40;   // mSec
sl@0
    41
const TReal KTimerRunLScanZeroRSCOnOneDriveLimitH4RAM = 20;   // mSec 
sl@0
    42
		
sl@0
    43
const TReal KNotifierRunLTimeLimitH4NAND = 6;               // mSec
sl@0
    44
const TReal KTimerRunLScanTwoRSCsOnOneDriveLimitH4NAND = 50;   // mSec
sl@0
    45
const TReal KTimerRunLScanZeroRSCOnOneDriveLimitH4NAND = 20;   // mSec 
sl@0
    46
sl@0
    47
const TReal KNotifierRunLTimeLimitH6RAM = 1;               // mSec
sl@0
    48
const TReal KTimerRunLScanTwoRSCsOnOneDriveLimitH6RAM = 20;   // mSec
sl@0
    49
const TReal KTimerRunLScanZeroRSCOnOneDriveLimitH6RAM = 8;   // mSec 
sl@0
    50
		
sl@0
    51
const TReal KNotifierRunLTimeLimitH6NAND = 4;               // mSec
sl@0
    52
const TReal KTimerRunLScanTwoRSCsOnOneDriveLimitH6NAND = 25;   // mSec
sl@0
    53
const TReal KTimerRunLScanZeroRSCOnOneDriveLimitH6NAND = 8;   // mSec 
sl@0
    54
sl@0
    55
// The default benchmark checking threshold are defined as zero, for emulator platform.
sl@0
    56
// The values will be changed for H2 or H4 OR H6 boards.
sl@0
    57
// See CEComPluginReDiscoverPerfTest::SetBenchmarks()
sl@0
    58
static TReal NotifierRunLTimeLimit = 0;				
sl@0
    59
static TReal TimerRunLScanTwoRSCsOnOneDriveLimit = 0;	
sl@0
    60
static TReal TimerRunLScanZeroRSCOnOneDriveLimit = 0;	
sl@0
    61
sl@0
    62
_LIT(KRamOnlyEComCR629Example2RSC,			"Z:\\RAMOnly\\EComCR629Example2.rsc");
sl@0
    63
_LIT(KEComExample12RSCOnZ,						"Z:\\RAMOnly\\EComExample12.rsc");
sl@0
    64
_LIT(KEComExample12RSC1OnC,						"C:\\Resource\\Plugins\\EComExample12_1.rsc");
sl@0
    65
_LIT(KEComExample12RSC2OnC,						"C:\\Resource\\Plugins\\EComExample12_2.rsc");
sl@0
    66
_LIT(KEComRscDirName,						"\\Resource\\Plugins");
sl@0
    67
_LIT(KEComCR629RSCFileName,					"\\Resource\\Plugins\\EComCR629Example1_");
sl@0
    68
_LIT(KEComRSCFileExt,						".rsc");
sl@0
    69
_LIT(KEComAllRSCFilesName,					"\\Resource\\Plugins\\*.rsc");
sl@0
    70
#endif //__ECOM_SERVER_PERFORMANCE__
sl@0
    71
sl@0
    72
CEComPluginReDiscoverPerfTest::CEComPluginReDiscoverPerfTest() : CEComPerfTestBase(KEComPluginReDiscoverPerfTest)
sl@0
    73
	{
sl@0
    74
	}
sl@0
    75
sl@0
    76
CEComPluginReDiscoverPerfTest::~CEComPluginReDiscoverPerfTest()
sl@0
    77
	{
sl@0
    78
	}
sl@0
    79
sl@0
    80
#ifdef __ECOM_SERVER_PERFORMANCE__
sl@0
    81
/*
sl@0
    82
	Set different benchmark thresholds for H2 or H4 or H6 boards. 
sl@0
    83
	Emulator tests will not disable benchmark checking, so don't need to set values for it.
sl@0
    84
**/
sl@0
    85
void CEComPluginReDiscoverPerfTest::SetBenchmarksL()
sl@0
    86
	{
sl@0
    87
	THardwareConfiguration hardware_configuration = EComTestUtils::GetHardwareConfiguration();
sl@0
    88
	switch (hardware_configuration)
sl@0
    89
		{
sl@0
    90
		case EPlatformH2RAM:
sl@0
    91
	    	NotifierRunLTimeLimit = KNotifierRunLTimeLimitH2RAM;
sl@0
    92
			TimerRunLScanTwoRSCsOnOneDriveLimit = KTimerRunLScanTwoRSCsOnOneDriveLimitH2RAM;
sl@0
    93
			TimerRunLScanZeroRSCOnOneDriveLimit = KTimerRunLScanZeroRSCOnOneDriveLimitH2RAM;
sl@0
    94
			INFO_PRINTF1(_L("Hardware configuration: H2 RAM"));
sl@0
    95
			break;
sl@0
    96
		
sl@0
    97
		case EPlatformH2NAND:		
sl@0
    98
			INFO_PRINTF1(_L("Hardware configuration: H2 NAND"));
sl@0
    99
			INFO_PRINTF1(_L("***Performance testing on H2 NAND is not supported!***"));
sl@0
   100
			SetTestStepResult(EFail);			
sl@0
   101
			break;
sl@0
   102
sl@0
   103
		case EPlatformH2NANDDP:
sl@0
   104
			INFO_PRINTF1(_L("Hardware configuration: H2 NAND DP"));
sl@0
   105
			INFO_PRINTF1(_L("***Performance testing on H2 NAND DP is not supported!***"));
sl@0
   106
			SetTestStepResult(EFail);			
sl@0
   107
			break;
sl@0
   108
		
sl@0
   109
		case EPlatformH4RAM:
sl@0
   110
			NotifierRunLTimeLimit = KNotifierRunLTimeLimitH4RAM;
sl@0
   111
			TimerRunLScanTwoRSCsOnOneDriveLimit = KTimerRunLScanTwoRSCsOnOneDriveLimitH4RAM;
sl@0
   112
			TimerRunLScanZeroRSCOnOneDriveLimit = KTimerRunLScanZeroRSCOnOneDriveLimitH4RAM;
sl@0
   113
			INFO_PRINTF1(_L("Hardware configuration: H4 RAM"));
sl@0
   114
			break;
sl@0
   115
		
sl@0
   116
		case EPlatformH4NAND:		
sl@0
   117
			NotifierRunLTimeLimit = KNotifierRunLTimeLimitH4NAND;
sl@0
   118
			TimerRunLScanTwoRSCsOnOneDriveLimit = KTimerRunLScanTwoRSCsOnOneDriveLimitH4NAND;
sl@0
   119
			TimerRunLScanZeroRSCOnOneDriveLimit = KTimerRunLScanZeroRSCOnOneDriveLimitH4NAND;
sl@0
   120
			INFO_PRINTF1(_L("Hardware configuration: H4 NAND"));
sl@0
   121
			break;
sl@0
   122
		
sl@0
   123
		case EPlatformH4NANDDP:	
sl@0
   124
			INFO_PRINTF1(_L("Hardware configuration: H4 NAND DP"));
sl@0
   125
			break;
sl@0
   126
sl@0
   127
		case EPlatformH6RAM:
sl@0
   128
			NotifierRunLTimeLimit = KNotifierRunLTimeLimitH6RAM;
sl@0
   129
			TimerRunLScanTwoRSCsOnOneDriveLimit = KTimerRunLScanTwoRSCsOnOneDriveLimitH6RAM;
sl@0
   130
			TimerRunLScanZeroRSCOnOneDriveLimit = KTimerRunLScanZeroRSCOnOneDriveLimitH6RAM;
sl@0
   131
			INFO_PRINTF1(_L("Hardware configuration: H6 RAM"));
sl@0
   132
			break;
sl@0
   133
		
sl@0
   134
		case EPlatformH6NAND:		
sl@0
   135
			NotifierRunLTimeLimit = KNotifierRunLTimeLimitH6NAND;
sl@0
   136
			TimerRunLScanTwoRSCsOnOneDriveLimit = KTimerRunLScanTwoRSCsOnOneDriveLimitH6NAND;
sl@0
   137
			TimerRunLScanZeroRSCOnOneDriveLimit = KTimerRunLScanZeroRSCOnOneDriveLimitH6NAND;
sl@0
   138
			INFO_PRINTF1(_L("Hardware configuration: H6 NAND"));
sl@0
   139
			break;
sl@0
   140
		
sl@0
   141
		case EPlatformH6NANDDP:	
sl@0
   142
			INFO_PRINTF1(_L("Hardware configuration: H6 NAND DP"));
sl@0
   143
			break;
sl@0
   144
			
sl@0
   145
		case EPlatformWINSCW:
sl@0
   146
			INFO_PRINTF1(_L("Hardware configuration: WINSCW"));
sl@0
   147
			break;
sl@0
   148
		
sl@0
   149
		default:		
sl@0
   150
			SetTestStepResult(EFail);
sl@0
   151
			INFO_PRINTF1(_L("***Unrecognized platform!***"));
sl@0
   152
			break;		
sl@0
   153
		}
sl@0
   154
	}
sl@0
   155
sl@0
   156
TBool CEComPluginReDiscoverPerfTest::CheckTimeResults(TReal aTimeLimit, RArray<TEComPerfRealTimeResult>& aTimeResults)
sl@0
   157
	{
sl@0
   158
	TInt count = aTimeResults.Count();
sl@0
   159
	
sl@0
   160
	if(count)
sl@0
   161
		{
sl@0
   162
		switch(aTimeResults[0].iType)
sl@0
   163
			{
sl@0
   164
			case ECDiscovererNotifierRunL:
sl@0
   165
				{
sl@0
   166
				for(TInt idx = 0; idx < count; ++idx)
sl@0
   167
					{
sl@0
   168
					TReal elapsedTime = aTimeResults[idx].iEndTime - aTimeResults[idx].iStartTime;
sl@0
   169
					INFO_PRINTF2(_L("Notifier RunL gets called for drive: %d"), aTimeResults[idx].iInfo);
sl@0
   170
					CheckPerformance(elapsedTime, aTimeLimit, _L("Notifier RunL"));
sl@0
   171
					}
sl@0
   172
				break;
sl@0
   173
				}
sl@0
   174
			case ECDiscovererTimerRunL:
sl@0
   175
				{
sl@0
   176
				// Check timer runl only ran once
sl@0
   177
				if(count>1)
sl@0
   178
					{
sl@0
   179
					INFO_PRINTF1(_L("Timer RunL ran more than once!\n"));
sl@0
   180
					return EFalse;
sl@0
   181
					}
sl@0
   182
				else
sl@0
   183
					{
sl@0
   184
					const TEComPerfRealTimeResult& timeResult = aTimeResults[0];
sl@0
   185
					TReal elapsedTime = aTimeResults[0].iEndTime - aTimeResults[0].iStartTime;
sl@0
   186
					CheckPerformance(elapsedTime, aTimeLimit, _L("Timer RunL"));
sl@0
   187
					}
sl@0
   188
				break;
sl@0
   189
				}
sl@0
   190
			default:
sl@0
   191
				{
sl@0
   192
				INFO_PRINTF1(_L("Unrecognizable type for checking performance!\n"));
sl@0
   193
				return EFalse;
sl@0
   194
				}
sl@0
   195
			}
sl@0
   196
		return ETrue;
sl@0
   197
		}
sl@0
   198
	else // No time result retrieved
sl@0
   199
		{
sl@0
   200
		INFO_PRINTF1(_L("No time result Retrieved!\n"));
sl@0
   201
		return EFalse;
sl@0
   202
		}
sl@0
   203
	}
sl@0
   204
sl@0
   205
void CEComPluginReDiscoverPerfTest::CopyPluginCR629TestRSCOnDrive(TUint aDriveNum, TInt aNumOfCopies)
sl@0
   206
	{
sl@0
   207
	if(aNumOfCopies > 0)
sl@0
   208
		{
sl@0
   209
		TInt err=KErrNone;
sl@0
   210
		TDriveUnit aDrive(aDriveNum);
sl@0
   211
		TBuf<256> resourceFileName;
sl@0
   212
		for(TInt num = 1; num<= aNumOfCopies; num++ )
sl@0
   213
			{
sl@0
   214
			resourceFileName.Zero();
sl@0
   215
			resourceFileName.Append(aDrive.Name());
sl@0
   216
			resourceFileName.Append(KEComCR629RSCFileName);
sl@0
   217
			resourceFileName.AppendNum(num);
sl@0
   218
			resourceFileName.Append(KEComRSCFileExt);
sl@0
   219
			TRAP(err, EComTestUtils::FileManCopyFileL(KRamOnlyEComCR629Example2RSC, resourceFileName));
sl@0
   220
			TEST(err ==KErrNone);
sl@0
   221
			}
sl@0
   222
		}
sl@0
   223
	else
sl@0
   224
		{
sl@0
   225
		INFO_PRINTF1(_L("Number of file copies should be greater than 0!\n"));
sl@0
   226
		}
sl@0
   227
	}
sl@0
   228
sl@0
   229
void CEComPluginReDiscoverPerfTest::DeleteRSCFilesOnDrive(TUint aDriveNum)
sl@0
   230
	{
sl@0
   231
	TInt err=KErrNone;
sl@0
   232
	TDriveUnit aDrive(aDriveNum);
sl@0
   233
sl@0
   234
	TBuf<256> resourceFileName;
sl@0
   235
	resourceFileName.Append(aDrive.Name());
sl@0
   236
	resourceFileName.Append(KEComAllRSCFilesName);
sl@0
   237
	TRAP(err, EComTestUtils::FileManDeleteFileL(resourceFileName));
sl@0
   238
	}
sl@0
   239
sl@0
   240
void CEComPluginReDiscoverPerfTest::DeleteRSCFolderOnDrive(TUint aDriveNum)
sl@0
   241
	{
sl@0
   242
	TInt err=KErrNone;
sl@0
   243
	TDriveUnit aDrive(aDriveNum);
sl@0
   244
sl@0
   245
	TBuf<256> resourceFileName;
sl@0
   246
	resourceFileName.Append(aDrive.Name());
sl@0
   247
	resourceFileName.Append(KEComAllRSCFilesName);
sl@0
   248
	TRAP(err, EComTestUtils::FileManDeleteFileL(resourceFileName));
sl@0
   249
sl@0
   250
	TBuf<256> resourceDirName;
sl@0
   251
	resourceDirName.Append(aDrive.Name());
sl@0
   252
	resourceDirName.Append(KEComRscDirName);
sl@0
   253
	TRAP(err, EComTestUtils::FileManDeleteDirL(resourceDirName));
sl@0
   254
	}
sl@0
   255
sl@0
   256
#endif //__ECOM_SERVER_PERFORMANCE__
sl@0
   257
sl@0
   258
/*
sl@0
   259
	Test cases covered in the test step:
sl@0
   260
	1. Multiple notification processing on single drive (C:)
sl@0
   261
sl@0
   262
		1.1 Rediscovery on adding RSC files
sl@0
   263
				Performance check on Notifier RunL
sl@0
   264
				Functionality check on Notifier RunL
sl@0
   265
				Performance check on Timer RunL
sl@0
   266
				Functionality check on RediscoveryScanDirectoryL
sl@0
   267
sl@0
   268
		1.2 Rediscovery on deleting RSC files
sl@0
   269
				As above.
sl@0
   270
		1.3 Rediscovery on adding RSC PlugIn3 files. It does the performance test 
sl@0
   271
			for parsing new registry data.
sl@0
   272
				As above.
sl@0
   273
				
sl@0
   274
	2. Multiple notification processing on multiple drives (C: and X: or E:)
sl@0
   275
sl@0
   276
		2.1 Rediscovery on adding RSC files
sl@0
   277
				As above.
sl@0
   278
				
sl@0
   279
		2.2 Rediscovery on deleting RSC filles
sl@0
   280
				As above.
sl@0
   281
				
sl@0
   282
	3. MMC Remounting tests on drive E:
sl@0
   283
sl@0
   284
		3.1 Before: has plugins
sl@0
   285
			After: 	has plugins
sl@0
   286
				As above.
sl@0
   287
				
sl@0
   288
		3.2 Before: has plugins
sl@0
   289
			After: 	has no plugins
sl@0
   290
				As above.
sl@0
   291
				
sl@0
   292
		3.3 Before: has no plugins
sl@0
   293
			After: 	has plugins
sl@0
   294
				As above.
sl@0
   295
				
sl@0
   296
		3.4 Before: has no plugins
sl@0
   297
			After: 	has no plugins
sl@0
   298
				As above.
sl@0
   299
sl@0
   300
@pre For hardware test, MMC (E:) drive should be available.
sl@0
   301
@return EPass if the test succeeds and the measured times pass the checks
sl@0
   302
		EFail otherwise.
sl@0
   303
 */
sl@0
   304
TVerdict CEComPluginReDiscoverPerfTest::doTestStepL()
sl@0
   305
	{
sl@0
   306
#ifdef __ECOM_SERVER_PERFORMANCE__
sl@0
   307
	// Set benchmark threshold for different hardware platform, default values are 0s, for emulator.
sl@0
   308
	SetBenchmarksL();
sl@0
   309
	
sl@0
   310
	//1. Multiple notification processing on single drive (C:)
sl@0
   311
	INFO_PRINTF1(_L("1. Multiple notification processing on single drive (C:)"));		
sl@0
   312
	
sl@0
   313
	//1.1 Testing rediscovery performance on adding RSC files on C:
sl@0
   314
		INFO_PRINTF1(_L("1.1 Testing rediscovery on adding RSC files onto drive C:"));
sl@0
   315
		// Clean up Plugins
sl@0
   316
		DeleteRSCFilesOnDrive(EDriveC);
sl@0
   317
		User::After(KOneSecond * 3);
sl@0
   318
		REComPerfTimeRecords timeRecords;
sl@0
   319
sl@0
   320
		// Clean up time records on server.
sl@0
   321
		TRAPD(err, timeRecords.ResetRecordsOnServerL());
sl@0
   322
		TEST(err==KErrNone);
sl@0
   323
		timeRecords.Reset();
sl@0
   324
		CopyPluginCR629TestRSCOnDrive(EDriveC, 2);
sl@0
   325
		User::After(KOneSecond * 3);
sl@0
   326
		
sl@0
   327
		// Now get all time records from server
sl@0
   328
		TRAP(err, timeRecords.OpenL());
sl@0
   329
		TEST(err==KErrNone);
sl@0
   330
		TEST(timeRecords.Count() > 0);
sl@0
   331
		
sl@0
   332
		RArray<TEComPerfRealTimeResult> timeResults;
sl@0
   333
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererNotifierRunL, timeResults));
sl@0
   334
		TEST(err==KErrNone);
sl@0
   335
		// Test notifications were triggered and check performance of RunL of Notifiers
sl@0
   336
		TEST(CheckTimeResults(NotifierRunLTimeLimit, timeResults));
sl@0
   337
		timeResults.Reset();
sl@0
   338
		
sl@0
   339
		RArray<TInt> timeResultsInfos;
sl@0
   340
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererNotifierRunL, timeResultsInfos));
sl@0
   341
		TEST(err==KErrNone);
sl@0
   342
		// Test notifications ONLY triggered on C: drive
sl@0
   343
		TEST(timeResultsInfos.Count()==1);
sl@0
   344
		TEST(timeResultsInfos[0] == EDriveC);
sl@0
   345
		timeResultsInfos.Reset();
sl@0
   346
		
sl@0
   347
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererTimerRunL, timeResults));
sl@0
   348
		TEST(err==KErrNone);
sl@0
   349
		// Test Timer RunL ran only once and check performance.
sl@0
   350
		TEST(CheckTimeResults(TimerRunLScanTwoRSCsOnOneDriveLimit, timeResults));
sl@0
   351
		timeResults.Reset();
sl@0
   352
		
sl@0
   353
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererRediscoveryScanDirectoryL, timeResultsInfos));
sl@0
   354
		TEST(err==KErrNone);
sl@0
   355
		// Test directory scanning has and ONLY performed on C: drive
sl@0
   356
		TEST(timeResultsInfos.Count()==1);
sl@0
   357
		TEST(timeResultsInfos[0] == EDriveC);
sl@0
   358
		timeResultsInfos.Reset();
sl@0
   359
sl@0
   360
	//1.2 Testing rediscovery performance on deleting RSC files
sl@0
   361
		INFO_PRINTF1(_L("1.2 Testing rediscovery on removing RSC files from drive C:"));
sl@0
   362
		// Clean up time records on server.
sl@0
   363
		TRAP(err, timeRecords.ResetRecordsOnServerL());
sl@0
   364
		TEST(err==KErrNone);
sl@0
   365
		timeRecords.Reset();
sl@0
   366
		DeleteRSCFilesOnDrive(EDriveC);
sl@0
   367
		User::After(KOneSecond * 3);
sl@0
   368
		
sl@0
   369
		// Now get all time records from server.
sl@0
   370
		TRAP(err, timeRecords.OpenL());
sl@0
   371
		TEST(err==KErrNone);
sl@0
   372
		TEST(timeRecords.Count() > 0);
sl@0
   373
		
sl@0
   374
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererNotifierRunL, timeResults));
sl@0
   375
		TEST(err==KErrNone);
sl@0
   376
		// Test notifications were triggered and check performance of RunL of Notifiers
sl@0
   377
		TEST(CheckTimeResults(NotifierRunLTimeLimit, timeResults));
sl@0
   378
		timeResults.Reset();
sl@0
   379
		
sl@0
   380
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererNotifierRunL, timeResultsInfos));
sl@0
   381
		TEST(err==KErrNone);
sl@0
   382
		// Test notifications ONLY triggered on C: drive
sl@0
   383
		TEST(timeResultsInfos.Count()==1);
sl@0
   384
		TEST(timeResultsInfos[0] == EDriveC);
sl@0
   385
		timeResultsInfos.Reset();
sl@0
   386
		
sl@0
   387
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererTimerRunL, timeResults));
sl@0
   388
		TEST(err==KErrNone);
sl@0
   389
		// Test Timer RunL ran only once and check performance.
sl@0
   390
		TEST(CheckTimeResults(TimerRunLScanZeroRSCOnOneDriveLimit, timeResults));
sl@0
   391
		timeResults.Reset();
sl@0
   392
		
sl@0
   393
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererRediscoveryScanDirectoryL, timeResultsInfos));
sl@0
   394
		TEST(err==KErrNone);
sl@0
   395
		// Test directory scanning has and ONLY performed on C: drive
sl@0
   396
		TEST(timeResultsInfos.Count()==1);
sl@0
   397
		TEST(timeResultsInfos[0] == EDriveC);
sl@0
   398
		timeResultsInfos.Reset();
sl@0
   399
sl@0
   400
	//1.3 Testing rediscovery performance on adding RSC PLUGIN3 files on C:
sl@0
   401
		INFO_PRINTF1(_L("1.3 Testing rediscovery on adding RSC PLUGIN3 files onto drive C:"));
sl@0
   402
		// Clean up Plugins
sl@0
   403
		DeleteRSCFilesOnDrive(EDriveC);
sl@0
   404
		User::After(KOneSecond * 3);
sl@0
   405
		
sl@0
   406
		// Clean up time records on server.
sl@0
   407
		TRAP(err, timeRecords.ResetRecordsOnServerL());
sl@0
   408
		TEST(err==KErrNone);
sl@0
   409
		timeRecords.Reset();
sl@0
   410
		// Adding RSC PLUGIN3 file twice
sl@0
   411
		TRAP(err, EComTestUtils::FileManCopyFileL(KEComExample12RSCOnZ, KEComExample12RSC1OnC));
sl@0
   412
		TEST(err==KErrNone);
sl@0
   413
		TRAP(err, EComTestUtils::FileManCopyFileL(KEComExample12RSCOnZ, KEComExample12RSC2OnC));
sl@0
   414
		TEST(err==KErrNone);
sl@0
   415
		User::After(KOneSecond * 3);
sl@0
   416
		
sl@0
   417
		// Now get all time records from server
sl@0
   418
		TRAP(err, timeRecords.OpenL());
sl@0
   419
		TEST(err==KErrNone);
sl@0
   420
		TEST(timeRecords.Count() > 0);
sl@0
   421
		
sl@0
   422
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererNotifierRunL, timeResults));
sl@0
   423
		TEST(err==KErrNone);
sl@0
   424
		// Test notifications were triggered and check performance of RunL of Notifiers
sl@0
   425
		TEST(CheckTimeResults(NotifierRunLTimeLimit, timeResults));
sl@0
   426
		timeResults.Reset();
sl@0
   427
		
sl@0
   428
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererNotifierRunL, timeResultsInfos));
sl@0
   429
		TEST(err==KErrNone);
sl@0
   430
		// Test notifications ONLY triggered on C: drive
sl@0
   431
		TEST(timeResultsInfos.Count()==1);
sl@0
   432
		TEST(timeResultsInfos[0] == EDriveC);
sl@0
   433
		timeResultsInfos.Reset();
sl@0
   434
		
sl@0
   435
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererTimerRunL, timeResults));
sl@0
   436
		TEST(err==KErrNone);
sl@0
   437
		// Test Timer RunL ran only once and check performance.
sl@0
   438
		TEST(CheckTimeResults(TimerRunLScanTwoRSCsOnOneDriveLimit, timeResults));
sl@0
   439
		timeResults.Reset();
sl@0
   440
		
sl@0
   441
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererRediscoveryScanDirectoryL, timeResultsInfos));
sl@0
   442
		TEST(err==KErrNone);
sl@0
   443
		// Test directory scanning has and ONLY performed on C: drive
sl@0
   444
		TEST(timeResultsInfos.Count()==1);
sl@0
   445
		TEST(timeResultsInfos[0] == EDriveC);
sl@0
   446
		timeResultsInfos.Reset();
sl@0
   447
		// Delete the RSC files
sl@0
   448
		TRAP(err, EComTestUtils::FileManDeleteFileL(KEComExample12RSC1OnC));
sl@0
   449
		TRAP(err, EComTestUtils::FileManDeleteFileL(KEComExample12RSC2OnC));
sl@0
   450
		User::After(KOneSecond * 3);
sl@0
   451
		
sl@0
   452
	//2. Multiple notification processing on multiple drives (C: and X: or E:)
sl@0
   453
		RFs fs;
sl@0
   454
		TEST(fs.Connect()==KErrNone);
sl@0
   455
sl@0
   456
	//2.1 Testing rediscovery performance on adding RSC files on multiple drives
sl@0
   457
		// Clean up time records on server.
sl@0
   458
		TRAP(err, timeRecords.ResetRecordsOnServerL());
sl@0
   459
		TEST(err==KErrNone);
sl@0
   460
		timeRecords.Reset();
sl@0
   461
		CopyPluginCR629TestRSCOnDrive(EDriveC, 2);
sl@0
   462
#if defined(__WINSCW__) // C: and X: on emulator
sl@0
   463
		INFO_PRINTF1(_L("2. Multiple notification processing on multiple drives (C: and X:)"));
sl@0
   464
		INFO_PRINTF1(_L("2.1 Testing rediscovery on adding RSC files onto drive C: and X:"));
sl@0
   465
		CopyPluginCR629TestRSCOnDrive(EDriveX, 2);
sl@0
   466
#else // C: and E: on hardware
sl@0
   467
		INFO_PRINTF1(_L("2. Multiple notification processing on multiple drives (C: and E:)"));
sl@0
   468
		INFO_PRINTF1(_L("2.1 Testing rediscovery on adding RSC files onto drive C: and E:"));
sl@0
   469
		
sl@0
   470
		// Check the availability of E: drive and MMC card.
sl@0
   471
		TDriveList drivelist;
sl@0
   472
		TEST(fs.DriveList(drivelist)==KErrNone);
sl@0
   473
		if (!(drivelist[EDriveE]))
sl@0
   474
			{
sl@0
   475
			SetTestStepResult(EFail);
sl@0
   476
			INFO_PRINTF1(_L("*** Drive E: is not available for hardware tests! ***"));
sl@0
   477
			DeleteRSCFilesOnDrive(EDriveC);
sl@0
   478
			return TestStepResult();
sl@0
   479
			}
sl@0
   480
		
sl@0
   481
		TDriveInfo aDriveInfo;
sl@0
   482
		TEST(fs.Drive(aDriveInfo, EDriveE)==KErrNone);
sl@0
   483
		if (aDriveInfo.iType != EMediaHardDisk)
sl@0
   484
			{
sl@0
   485
			SetTestStepResult(EFail);
sl@0
   486
			INFO_PRINTF1(_L("*** MMC card is not available for hardware tests! ***"));
sl@0
   487
			DeleteRSCFilesOnDrive(EDriveC);
sl@0
   488
			return TestStepResult();
sl@0
   489
			}		
sl@0
   490
		
sl@0
   491
		// Now copy files
sl@0
   492
		CopyPluginCR629TestRSCOnDrive(EDriveE, 2);
sl@0
   493
#endif // __WINSCW__
sl@0
   494
		User::After(KOneSecond * 3);
sl@0
   495
		
sl@0
   496
		// Now get all time records from server.
sl@0
   497
		TRAP(err, timeRecords.OpenL());
sl@0
   498
		TEST(err==KErrNone);
sl@0
   499
		TEST(timeRecords.Count() > 0);
sl@0
   500
		
sl@0
   501
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererNotifierRunL, timeResults));
sl@0
   502
		TEST(err==KErrNone);
sl@0
   503
		// Test notifications were triggered and check performance of RunL of Notifiers
sl@0
   504
		TEST(CheckTimeResults(NotifierRunLTimeLimit, timeResults));
sl@0
   505
		timeResults.Reset();
sl@0
   506
		
sl@0
   507
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererNotifierRunL, timeResultsInfos));
sl@0
   508
		TEST(err==KErrNone);
sl@0
   509
		// Test notifications ONLY triggered on C: and X: (or E:) drive
sl@0
   510
		TEST(timeResultsInfos.Count()==2);
sl@0
   511
		TEST(timeResultsInfos.Find(EDriveC)!=KErrNotFound);
sl@0
   512
#if defined(__WINSCW__) 
sl@0
   513
		TEST(timeResultsInfos.Find(EDriveX)!=KErrNotFound);
sl@0
   514
#else 
sl@0
   515
		TEST(timeResultsInfos.Find(EDriveE)!=KErrNotFound);
sl@0
   516
#endif // __WINSCW__
sl@0
   517
		timeResultsInfos.Reset();
sl@0
   518
		
sl@0
   519
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererTimerRunL, timeResults));
sl@0
   520
		TEST(err==KErrNone);
sl@0
   521
		// Test Timer RunL ran only once and check performance.
sl@0
   522
		TEST(CheckTimeResults(TimerRunLScanTwoRSCsOnOneDriveLimit * 2, timeResults));
sl@0
   523
		timeResults.Reset();
sl@0
   524
		
sl@0
   525
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererRediscoveryScanDirectoryL, timeResultsInfos));
sl@0
   526
		TEST(err==KErrNone);
sl@0
   527
		// Test directory scanning has and ONLY performed on C: and X: (or E:) drive
sl@0
   528
		TEST(timeResultsInfos.Count()==2);
sl@0
   529
		TEST(timeResultsInfos.Find(EDriveC)!=KErrNotFound);
sl@0
   530
#if defined(__WINSCW__) 
sl@0
   531
		TEST(timeResultsInfos.Find(EDriveX)!=KErrNotFound);
sl@0
   532
#else 
sl@0
   533
		TEST(timeResultsInfos.Find(EDriveE)!=KErrNotFound);
sl@0
   534
#endif // __WINSCW__
sl@0
   535
		timeResultsInfos.Reset();
sl@0
   536
		
sl@0
   537
		
sl@0
   538
	//2.2 Testing rediscovery performance on deleting RSC files on multiple drives
sl@0
   539
		// Clean up time records on server.
sl@0
   540
		TRAP(err, timeRecords.ResetRecordsOnServerL());
sl@0
   541
		TEST(err==KErrNone);
sl@0
   542
		timeRecords.Reset();
sl@0
   543
		DeleteRSCFilesOnDrive(EDriveC);
sl@0
   544
#if defined(__WINSCW__) // C: and X: on emulator
sl@0
   545
		INFO_PRINTF1(_L("2.2 Testing rediscovery on removing RSC files from drive C: and X:"));
sl@0
   546
		DeleteRSCFolderOnDrive(EDriveX);
sl@0
   547
#else // C: and E: on hardware
sl@0
   548
		INFO_PRINTF1(_L("2.2 Testing rediscovery on removing RSC files from drive C: and E:"));
sl@0
   549
		DeleteRSCFolderOnDrive(EDriveE);
sl@0
   550
#endif // __WINSCW__
sl@0
   551
		User::After(KOneSecond * 3);
sl@0
   552
		
sl@0
   553
		// Now get all time records from server.
sl@0
   554
		TRAP(err, timeRecords.OpenL());
sl@0
   555
		TEST(err==KErrNone);
sl@0
   556
		TEST(timeRecords.Count() > 0);
sl@0
   557
		
sl@0
   558
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererNotifierRunL, timeResults));
sl@0
   559
		TEST(err==KErrNone);
sl@0
   560
		// Test notifications were triggered and check performance of RunL of Notifiers
sl@0
   561
		TEST(CheckTimeResults(NotifierRunLTimeLimit, timeResults));
sl@0
   562
		timeResults.Reset();
sl@0
   563
		
sl@0
   564
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererNotifierRunL, timeResultsInfos));
sl@0
   565
		TEST(err==KErrNone);
sl@0
   566
		// Test notifications ONLY triggered on C: and X: (or E:) drive
sl@0
   567
		TEST(timeResultsInfos.Count()==2);
sl@0
   568
		TEST(timeResultsInfos.Find(EDriveC)!=KErrNotFound);
sl@0
   569
#if defined(__WINSCW__) 
sl@0
   570
		TEST(timeResultsInfos.Find(EDriveX)!=KErrNotFound);
sl@0
   571
#else 
sl@0
   572
		TEST(timeResultsInfos.Find(EDriveE)!=KErrNotFound);
sl@0
   573
#endif // __WINSCW__
sl@0
   574
		timeResultsInfos.Reset();
sl@0
   575
		
sl@0
   576
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererTimerRunL, timeResults));
sl@0
   577
		TEST(err==KErrNone);
sl@0
   578
		// Test Timer RunL ran only once and check performance.
sl@0
   579
		TEST(CheckTimeResults(TimerRunLScanZeroRSCOnOneDriveLimit * 2, timeResults));
sl@0
   580
		timeResults.Reset();
sl@0
   581
		
sl@0
   582
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererRediscoveryScanDirectoryL, timeResultsInfos));
sl@0
   583
		TEST(err==KErrNone);
sl@0
   584
		// Test directory scanning has and ONLY performed on C: and X: (or E:) drive
sl@0
   585
		TEST(timeResultsInfos.Count()==2);
sl@0
   586
		TEST(timeResultsInfos.Find(EDriveC)!=KErrNotFound);
sl@0
   587
#if defined(__WINSCW__) 
sl@0
   588
		TEST(timeResultsInfos.Find(EDriveX)!=KErrNotFound);
sl@0
   589
#else 
sl@0
   590
		TEST(timeResultsInfos.Find(EDriveE)!=KErrNotFound);
sl@0
   591
#endif // __WINSCW__
sl@0
   592
		timeResultsInfos.Reset();
sl@0
   593
sl@0
   594
sl@0
   595
	//3. MMC Remounting tests on drive E:
sl@0
   596
	INFO_PRINTF1(_L("3. MMC Remounting tests on drive E:"));
sl@0
   597
#if defined(__WINSCW__)
sl@0
   598
	// Tests only run on hardware.
sl@0
   599
	INFO_PRINTF1(_L("This test can only run on hardware, please see test results of hardware for further information."));
sl@0
   600
#else
sl@0
   601
		CopyPluginCR629TestRSCOnDrive(EDriveE, 2);
sl@0
   602
		User::After(KOneSecond * 3);
sl@0
   603
		
sl@0
   604
	//3.1 before remounting: 	has plugins
sl@0
   605
	//    after remounting: 	has plugins
sl@0
   606
		INFO_PRINTF1(_L("3.1 Before Remount: has plugins; 	After Remount: has plugins"));
sl@0
   607
		// Clean up time records on server.
sl@0
   608
		TRAP(err, timeRecords.ResetRecordsOnServerL());
sl@0
   609
		TEST(err==KErrNone);
sl@0
   610
		timeRecords.Reset();
sl@0
   611
		TEST(fs.RemountDrive(EDriveE)==KErrNone);
sl@0
   612
		User::After(KOneSecond * 3);
sl@0
   613
		
sl@0
   614
		// Now get all time records from server.
sl@0
   615
		TRAP(err, timeRecords.OpenL());
sl@0
   616
		TEST(err==KErrNone);
sl@0
   617
		TEST(timeRecords.Count() > 0);
sl@0
   618
sl@0
   619
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererNotifierRunL, timeResults));
sl@0
   620
		TEST(err==KErrNone);
sl@0
   621
		// Test notifications were triggered and check performance of RunL of Notifiers
sl@0
   622
		TEST(CheckTimeResults(NotifierRunLTimeLimit, timeResults));
sl@0
   623
		timeResults.Reset();
sl@0
   624
sl@0
   625
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererNotifierRunL, timeResultsInfos));
sl@0
   626
		// Test notifications ONLY triggered on E: drive
sl@0
   627
		TEST(timeResultsInfos.Count()==1);
sl@0
   628
		TEST(timeResultsInfos[0] == EDriveE);
sl@0
   629
		timeResultsInfos.Reset();
sl@0
   630
		
sl@0
   631
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererTimerRunL, timeResults));
sl@0
   632
		TEST(err==KErrNone);
sl@0
   633
		// Test Timer RunL ran only once and check performance.
sl@0
   634
		TEST(CheckTimeResults(TimerRunLScanTwoRSCsOnOneDriveLimit, timeResults));
sl@0
   635
		timeResults.Reset();
sl@0
   636
		
sl@0
   637
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererRediscoveryScanDirectoryL, timeResultsInfos));
sl@0
   638
		TEST(err==KErrNone);
sl@0
   639
		// Test directory scanning has and ONLY performed on E: drive
sl@0
   640
		TEST(timeResultsInfos.Count()==1);
sl@0
   641
		TEST(timeResultsInfos[0] == EDriveE);
sl@0
   642
		timeResultsInfos.Reset();
sl@0
   643
sl@0
   644
	//3.2 before remounting: 	has plugins
sl@0
   645
	//    after remounting: 	has no plugins
sl@0
   646
		INFO_PRINTF1(_L("3.2 Before Remount: has plugins; 	After Remount: has no plugins"));
sl@0
   647
		// Clean up time records on server.
sl@0
   648
		TRAP(err, timeRecords.ResetRecordsOnServerL());
sl@0
   649
		TEST(err==KErrNone);
sl@0
   650
		timeRecords.Reset();
sl@0
   651
		DeleteRSCFolderOnDrive(EDriveE);
sl@0
   652
		TEST(fs.RemountDrive(EDriveE)==KErrNone);
sl@0
   653
		User::After(KOneSecond * 3);
sl@0
   654
		
sl@0
   655
		// Now get all time records from server.
sl@0
   656
		TRAP(err, timeRecords.OpenL());
sl@0
   657
		TEST(err==KErrNone);
sl@0
   658
		TEST(timeRecords.Count() > 0);
sl@0
   659
		
sl@0
   660
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererNotifierRunL, timeResults));
sl@0
   661
		TEST(err==KErrNone);
sl@0
   662
		// Test notifications were triggered and check performance of RunL of Notifiers
sl@0
   663
		TEST(CheckTimeResults(NotifierRunLTimeLimit, timeResults));
sl@0
   664
		timeResults.Reset();
sl@0
   665
		
sl@0
   666
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererNotifierRunL, timeResultsInfos));
sl@0
   667
		TEST(err==KErrNone);
sl@0
   668
		// Test notifications ONLY triggered for E: drive
sl@0
   669
		TEST(timeResultsInfos.Count()==1);
sl@0
   670
		TEST(timeResultsInfos[0] == EDriveE);
sl@0
   671
		timeResultsInfos.Reset();
sl@0
   672
		
sl@0
   673
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererTimerRunL, timeResults));
sl@0
   674
		TEST(err==KErrNone);
sl@0
   675
		// Test Timer RunL ran only once and check performance.
sl@0
   676
		TEST(CheckTimeResults(TimerRunLScanZeroRSCOnOneDriveLimit, timeResults));
sl@0
   677
		timeResults.Reset();
sl@0
   678
		
sl@0
   679
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererRediscoveryScanDirectoryL, timeResultsInfos));
sl@0
   680
		TEST(err==KErrNone);
sl@0
   681
		// Test directory scanning has and ONLY performed on E: drive
sl@0
   682
		TEST(timeResultsInfos.Count()==1);
sl@0
   683
		TEST(timeResultsInfos[0] == EDriveE);
sl@0
   684
		timeResultsInfos.Reset();
sl@0
   685
sl@0
   686
	//3.3 before remounting: 	has no plugins
sl@0
   687
	//    after remounting: 	has plugins
sl@0
   688
		INFO_PRINTF1(_L("3.3 Before Remount: has no plugins; 	After Remount: has plugins"));
sl@0
   689
		// Clean up time records on server.
sl@0
   690
		TRAP(err, timeRecords.ResetRecordsOnServerL());
sl@0
   691
		TEST(err==KErrNone);
sl@0
   692
		timeRecords.Reset();
sl@0
   693
		CopyPluginCR629TestRSCOnDrive(EDriveE, 2);
sl@0
   694
		TEST(fs.RemountDrive(EDriveE)==KErrNone);
sl@0
   695
		User::After(KOneSecond * 3);
sl@0
   696
		
sl@0
   697
		// Now get all time records from server.
sl@0
   698
		TRAP(err, timeRecords.OpenL());
sl@0
   699
		TEST(err==KErrNone);
sl@0
   700
		TEST(timeRecords.Count() > 0);
sl@0
   701
		
sl@0
   702
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererNotifierRunL, timeResults));
sl@0
   703
		TEST(err==KErrNone);
sl@0
   704
		// Test notifications were triggered and check performance of RunL of Notifiers
sl@0
   705
		TEST(CheckTimeResults(NotifierRunLTimeLimit, timeResults));
sl@0
   706
		timeResults.Reset();
sl@0
   707
		
sl@0
   708
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererNotifierRunL, timeResultsInfos));
sl@0
   709
		TEST(err==KErrNone);
sl@0
   710
		// Test notifications ONLY triggered for E: drive
sl@0
   711
		TEST(timeResultsInfos.Count()==1);
sl@0
   712
		TEST(timeResultsInfos[0] == EDriveE);
sl@0
   713
		timeResultsInfos.Reset();
sl@0
   714
		
sl@0
   715
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererTimerRunL, timeResults));
sl@0
   716
		TEST(err==KErrNone);
sl@0
   717
		// Test Timer RunL ran only once and check performance.
sl@0
   718
		TEST(CheckTimeResults(TimerRunLScanTwoRSCsOnOneDriveLimit, timeResults));
sl@0
   719
		timeResults.Reset();
sl@0
   720
		
sl@0
   721
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererRediscoveryScanDirectoryL, timeResultsInfos));
sl@0
   722
		TEST(err==KErrNone);
sl@0
   723
		// Test directory scanning has and ONLY performed on E: drive
sl@0
   724
		TEST(timeResultsInfos.Count()==1);
sl@0
   725
		TEST(timeResultsInfos[0] == EDriveE);
sl@0
   726
		timeResultsInfos.Reset();
sl@0
   727
sl@0
   728
		DeleteRSCFolderOnDrive(EDriveE);
sl@0
   729
		User::After(KOneSecond * 3);
sl@0
   730
sl@0
   731
	//3.4 before remounting: 	has no plugin
sl@0
   732
	//    after remounting: 	has no plugin
sl@0
   733
		INFO_PRINTF1(_L("3.4 Before Remount: has no plugins; 	After Remount: has no plugins"));
sl@0
   734
		// Clean up time records on server.
sl@0
   735
		TRAP(err, timeRecords.ResetRecordsOnServerL());
sl@0
   736
		TEST(err==KErrNone);
sl@0
   737
		timeRecords.Reset();
sl@0
   738
		TEST(fs.RemountDrive(EDriveE)==KErrNone);
sl@0
   739
		User::After(KOneSecond * 3);
sl@0
   740
		
sl@0
   741
		// Now get all time records from server.
sl@0
   742
		TRAP(err, timeRecords.OpenL());
sl@0
   743
		TEST(err==KErrNone);
sl@0
   744
		TEST(timeRecords.Count() > 0);
sl@0
   745
		
sl@0
   746
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererNotifierRunL, timeResults));
sl@0
   747
		TEST(err==KErrNone);
sl@0
   748
		// Test notifications were triggered and check performance of RunL of Notifiers
sl@0
   749
		TEST(CheckTimeResults(NotifierRunLTimeLimit, timeResults));
sl@0
   750
		timeResults.Reset();
sl@0
   751
		
sl@0
   752
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererNotifierRunL, timeResultsInfos));
sl@0
   753
		TEST(err==KErrNone);
sl@0
   754
		// Test notifications ONLY triggered for E: drive
sl@0
   755
		TEST(timeResultsInfos.Count()==1);
sl@0
   756
		TEST(timeResultsInfos[0] == EDriveE);
sl@0
   757
		timeResultsInfos.Reset();
sl@0
   758
		
sl@0
   759
		TRAP(err, timeRecords.RetrieveResultsByTypeL(ECDiscovererTimerRunL, timeResults));
sl@0
   760
		TEST(err==KErrNone);
sl@0
   761
		// Test Timer RunL ran only once and check performance.
sl@0
   762
		TEST(CheckTimeResults(TimerRunLScanZeroRSCOnOneDriveLimit, timeResults));
sl@0
   763
		timeResults.Reset();
sl@0
   764
		
sl@0
   765
		TRAP(err, timeRecords.RetrieveResultsInfoByTypeL(ECDiscovererRediscoveryScanDirectoryL, timeResultsInfos));
sl@0
   766
		TEST(err==KErrNone);
sl@0
   767
		// Test directory scanning has NOT performed
sl@0
   768
		TEST(timeResultsInfos.Count()==0);
sl@0
   769
		timeResultsInfos.Reset();
sl@0
   770
		
sl@0
   771
#endif // __WINSCW__
sl@0
   772
		
sl@0
   773
	// Final cleanup
sl@0
   774
	DeleteRSCFilesOnDrive(EDriveC);
sl@0
   775
	DeleteRSCFolderOnDrive(EDriveX);
sl@0
   776
	DeleteRSCFolderOnDrive(EDriveE);
sl@0
   777
#else
sl@0
   778
	MacroNotDefinedError();
sl@0
   779
#endif // __ECOM_SERVER_PERFORMANCE__
sl@0
   780
sl@0
   781
	return TestStepResult();
sl@0
   782
	}