Update contrib.
2 * Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of the License "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.
15 * File Name: f32test/bench/t_fat_perf.h
16 * Include file for t_fat_perf.cpp (PREQ 1885).
28 #include "fat_utils.h"
29 #include "f32_test_utils.h"
31 using namespace F32_Test_Utils;
32 using namespace Fat_Test_Utils;
34 extern TInt gTestCaseNo;
36 extern TFileName gPath;
37 extern TFileName gFileNameBase;
39 extern TInt gTestCase;
40 extern TInt gCacheClear;
41 extern TInt gZeroPadFileNumberForFixedLengthFileNames;
43 //////////////////////////////////////////////////////////////////////////////
46 // File Operation Modes
47 enum TFileOperationMode
57 // File Creation Options
71 // Test function names
83 // For DirCache info printing
84 // These enum values are based on enum TControlIO defined in \f32\sfat\common_constants.h
85 enum TDirCacheControlIOMap
87 ETestDumpFATDirCache = 15, ///<15
88 ETestFATDirCacheInfo = 16, ///<16
91 // File Naming schemes
92 class TNamingSchemeParam
98 TNamingConOrRan iConOrRan;
99 TNamingUniOrAsc iUniOrAsc;
100 TBool iZeroPadFileNumber; // Only applies to consecutive file name generation
101 TFileName iFileNameBase;
102 TUint iMaxFileNameLength; // Applies only to random name generation
103 TUint iMinStringLength;
106 class CMeasureAndLogUnit;
108 // File Operation Parameters
109 struct TFileOpUnitParam
112 TNamingSchemeParam iNamingSchemeParam;
113 TFileOperationMode iFileOpMode;
114 CMeasureAndLogUnit* iMLUnitPtr;
117 // Directory Unit Parameters
124 TUint iSampleInterval;
125 TNamingSchemeParam iNamingScheme;
126 TFileOperationMode iFileOpMode;
138 TNamingSchemeParam iNamingScheme;
140 TFileOperationMode iFileOpMode;
143 /////////////////////////////////////////////////////////////////////////////////////////////
147 // Measurement and Log Unit
148 class CMeasureAndLogUnit : CBase
151 static CMeasureAndLogUnit* NewLC(const TMLUnitParam& aParam);
152 static CMeasureAndLogUnit* NewL(const TMLUnitParam& aParam);
153 ~CMeasureAndLogUnit();
156 TInt Log(const TFileName& aDirName, const TFileName& aFileName, TUint aCurrentFileNo, TUint aCurrentFilePos);
158 CMeasureAndLogUnit();
159 void ConstructL(const TMLUnitParam& aParam);
160 TInt DoMeasureStart();
162 TInt DoLog(const TFileName& aFileName, TUint aCurrentFileNo, TUint aCurrentFilePos);
166 TUint32 iStartStatus;
173 // File Operation Unit
174 class CFileOperationUnit : CBase
177 static CFileOperationUnit* NewLC(const TFileOpUnitParam& aParam);
178 static CFileOperationUnit* NewL(const TFileOpUnitParam& aParam);
179 ~CFileOperationUnit();
181 TInt Run(const TFileName& aDirName, const TFileName& aFileName, TBool aIsTakingMeasurement, TUint aCurFileNo, TUint aCurFilePos);
182 void SetMLUnit(CMeasureAndLogUnit* aMLUnit);
185 CFileOperationUnit();
186 void ConstructL(const TFileOpUnitParam& aParam);
190 TNamingSchemeParam iNamingSchemeParam;
191 TFileOperationMode iFileOpMode;
192 CMeasureAndLogUnit* iMLUnitPtr;
198 class CDirUnit : public CBase
201 static CDirUnit* NewLC(const TDirUnitParam& aParam, const TChar aDriveChar);
202 static CDirUnit* NewL(const TDirUnitParam& aParam, const TChar aDriveChar);
204 TInt Run(const TInt aCurPriority);
205 void SetMLUnit(CMeasureAndLogUnit* aMLUnit);
207 const TFileName& Name();
211 void ConstructL(const TDirUnitParam& aParam, const TChar aDriveChar);
213 TInt GenerateFileName(TFileName& aFileName); // uses iNameGen
214 TBool CheckMeasurementTaking(); // uses currentFileNo,
217 TInt DoFileOperation();
218 TFileName GenerateRandomString(const TUint aMinStringLength, const TUint aMaxStringLength, const TNamingUniOrAsc aUniOrAsc);
219 TBool FileNameIsUnique(const TFileName& aFileName);
226 TUint iCurrentFileNo;
228 TUint iSampleInterval;
230 TUint iNumDigitsInTotalFileNo; // The number of digits iTotalFileNo has.
231 // Used to zero pad the file number if iZeroPadFileNumberForFixedWidthFileNames is ETrue
233 TNamingConOrRan iConOrRan; // Consecutive or random
234 TNamingUniOrAsc iUniOrAsc; // ASCII or Unicode
235 TBool iZeroPadFileNumberForFixedLengthFileNames;
236 TFileName iFileNameBase;
237 TUint iMaxFileNameLength; // Applies only to random name generation
238 TUint iMinStringLength; // Applies only to random name generation
240 CFileOperationUnit* iFileOpUnit;
241 CMeasureAndLogUnit* iMLUnitPtr;
246 class CExecutionUnit : public CBase
249 static CExecutionUnit* NewLC(CMeasureAndLogUnit* aMLUnit, const TChar aDriveChar);
250 static CExecutionUnit* NewL(CMeasureAndLogUnit* aMLUnit, const TChar aDriveChar);
254 TInt AddDirUnitL(const TDirUnitParam& aParam);
255 TInt RecalculateCurrentPrioirty();
259 TUint ForDebug_AddrOfDirUnit(TUint aDirUnitIter);
260 TUint ForDebug_AddrOfDirUnitArray();
264 void ConstructL(CMeasureAndLogUnit* aMLUnit, const TChar aDriveChar);
268 RPointerArray<CDirUnit> iDirUnitArray;
271 CMeasureAndLogUnit* iMLUnitPtr; // no ownership