kerneltest/f32test/server/t_dircache.cpp
author hgs
Tue, 26 Oct 2010 12:49:20 +0100
changeset 297 b2826f67641f
parent 176 af6ec97d9189
permissions -rw-r--r--
201043_03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
176
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     1
// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     2
// All rights reserved.
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     4
// under the terms of the License "Eclipse Public License v1.0"
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     7
//
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     8
// Initial Contributors:
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    10
//
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    11
// Contributors:
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    12
//
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    13
// Description:
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    14
// f32test\server\t_dircache.cpp
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    15
// 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    16
//
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    17
#define __E32TEST_EXTENSION__
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    18
#include <f32file.h>
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    19
#include <f32fsys.h>
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    20
#include <e32test.h>
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    21
#include <f32dbg.h>
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    22
#include "t_server.h"
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    23
#include "t_chlffs.h"
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    24
#include "f32_test_utils.h"
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    25
#include "fat_utils.h"
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    26
#include "d_pagestress.h"
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    27
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    28
RTest test(_L("T_DIRCACHE"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    29
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    30
/*
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    31
 * This whole test execute on UDEB mode only.
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    32
 */
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    33
#if defined(_DEBUG) || defined(_DEBUG_RELEASE)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    34
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    35
TInt gDrive=-1;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    36
const TInt32 KDef_KLeafDirCacheSize = 32;                    // default leaf dir cache number
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    37
const TInt32 KDef_DynamicDirCacheMinInBytes = 128 << 10;     // default minimum fat dir cache size in bytes
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    38
const TInt32 KDef_DynamicDirCacheMaxInBytes = 256 << 10;     // default maximum fat dir cache size in bytes
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    39
const TInt32 KDef_MaxDynamicDirCachePageSzLog2 = 14;         // default value for directory cache single page 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    40
                                                              //  maximal size Log2, 2^14 (16K) by default
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    41
const TInt32 KMaxThreadCount = 1;                            // the maximum number of multiple threads that can
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    42
                                                              //  access dir cache concurrently.
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    43
const TInt32 KSegmentSize = 1 << 12;                            // the smallest memory unit that Kernel manages  
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    44
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    45
template <class C>
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    46
TInt controlIo(RFs &fs, TInt drv, TInt fkn, C &c)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    47
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    48
    TPtr8 ptrC((TUint8 *)&c, sizeof(C), sizeof(C));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    49
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    50
    TInt r = fs.ControlIo(drv, fkn, ptrC);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    51
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    52
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    53
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    54
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    55
// See f32\sfile\sf_memory_man.cpp for the default value settings
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    56
const TInt  KDefaultGlobalCacheMemorySize = (8 << 10) << 10;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    57
const TInt  KDefaultLowMemoryThreshold = 10;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    58
//----------------------------------------------------------------------------------------------
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    59
//@SYMTestCaseID      PBASE-XXXX 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    60
//@SYMTestType        FT
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    61
//@SYMPREQ            PREQ1885
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    62
//@SYMTestCaseDesc    Check global cache settings. The global cache should be either:
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    63
//                      1. 0 (disabled)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    64
//                      2. no less than the sum of all per-drive settings
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    65
//----------------------------------------------------------------------------------------------
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    66
void TestGlobalSettings()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    67
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    68
    test.Next(_L("Test global cache settings"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    69
    // read global cache settings from estart.txt
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    70
    TGlobalCacheConfig globalCacheConfig;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    71
    TInt r = controlIo(TheFs,gDrive, KControlIoGlobalCacheConfig, globalCacheConfig);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    72
	test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    73
    test_Value (globalCacheConfig.iGlobalCacheSizeInBytes,
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    74
				globalCacheConfig.iGlobalCacheSizeInBytes > 0 || globalCacheConfig.iGlobalCacheSizeInBytes == KErrNotFound);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    75
    test_Value (globalCacheConfig.iGlobalLowMemoryThreshold,
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    76
				globalCacheConfig.iGlobalLowMemoryThreshold >= 0 || globalCacheConfig.iGlobalLowMemoryThreshold == KErrNotFound);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    77
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    78
    const TInt32 globalCacheSize = globalCacheConfig.iGlobalCacheSizeInBytes > 0 ? 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    79
                                       globalCacheConfig.iGlobalCacheSizeInBytes : KDefaultGlobalCacheMemorySize;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    80
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    81
    // test if global cache is enabled, it is configured in the way that its figure is no less
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    82
    //  than the sum of per-drive max size settings (taking default values into account). 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    83
    TInt32 sumDirCacheMaxSize = 0;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    84
    for (TInt i = 0; i < KMaxDrives; i++)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    85
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    86
        TBuf<0x20>  fsName;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    87
        r = TheFs.FileSystemName(fsName, i);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    88
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    89
        if (r == KErrNone && (F32_Test_Utils::Is_Fat(TheFs, i) || F32_Test_Utils::Is_ExFat(TheFs, i)))
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    90
            {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    91
            test.Printf(_L("drive[%C:] file system: (\"%S\")\n"), 'A' + i, &fsName);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    92
            TDirCacheConfig dirCacheConfig;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    93
            r = controlIo(TheFs,gDrive, KControlIoDirCacheConfig, dirCacheConfig);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    94
            test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    95
            if(dirCacheConfig.iDirCacheSizeMax > 0)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    96
                {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    97
                sumDirCacheMaxSize += (dirCacheConfig.iDirCacheSizeMax > KDef_DynamicDirCacheMaxInBytes ? dirCacheConfig.iDirCacheSizeMax : KDef_DynamicDirCacheMaxInBytes);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    98
                }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    99
            else
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   100
                {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   101
                sumDirCacheMaxSize += KDef_DynamicDirCacheMaxInBytes;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   102
                }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   103
            test.Printf(_L("++sumDirCacheMaxSize = %d\n"), sumDirCacheMaxSize);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   104
            }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   105
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   106
    test_Compare(globalCacheSize, >=, sumDirCacheMaxSize);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   107
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   108
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   109
//----------------------------------------------------------------------------------------------
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   110
//@SYMTestCaseID      PBASE-XXXX 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   111
//@SYMTestType        FT
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   112
//@SYMPREQ            PREQ1885
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   113
//@SYMTestCaseDesc    Test current drive's dir cache configurations, the current dir cache info should
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   114
//                      match the configurations read from estart.txt file.
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   115
//----------------------------------------------------------------------------------------------
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   116
void TestDirCacheSettings()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   117
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   118
    test.Next(_L("Test current drive's dir cache settings"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   119
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   120
    // test global cache config is ON 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   121
    TGlobalCacheConfig globalCacheConfig;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   122
    TInt r = controlIo(TheFs,gDrive, KControlIoGlobalCacheConfig, globalCacheConfig);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   123
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   124
    test_Value (globalCacheConfig.iGlobalCacheSizeInBytes,
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   125
				globalCacheConfig.iGlobalCacheSizeInBytes > 0 || globalCacheConfig.iGlobalCacheSizeInBytes == KErrNotFound);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   126
    test_Value (globalCacheConfig.iGlobalLowMemoryThreshold,
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   127
				globalCacheConfig.iGlobalLowMemoryThreshold >= 0 || globalCacheConfig.iGlobalLowMemoryThreshold == KErrNotFound);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   128
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   129
    // test global cache info is corresponding to the configurations
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   130
    TGlobalCacheInfo globalCacheInfo;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   131
    r = controlIo(TheFs,gDrive, KControlIoGlobalCacheInfo, globalCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   132
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   133
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   134
    if (globalCacheConfig.iGlobalCacheSizeInBytes == KErrNotFound)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   135
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   136
        test_Equal(KDefaultGlobalCacheMemorySize, globalCacheInfo.iGlobalCacheSizeInBytes);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   137
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   138
    else
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   139
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   140
        test_Equal(globalCacheConfig.iGlobalCacheSizeInBytes, globalCacheInfo.iGlobalCacheSizeInBytes);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   141
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   142
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   143
    if (globalCacheConfig.iGlobalLowMemoryThreshold == KErrNotFound)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   144
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   145
        test_Equal(KDefaultLowMemoryThreshold, globalCacheInfo.iGlobalLowMemoryThreshold);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   146
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   147
    else
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   148
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   149
        test_Equal(globalCacheConfig.iGlobalLowMemoryThreshold, globalCacheInfo.iGlobalLowMemoryThreshold);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   150
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   151
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   152
    // read per-drive settings from estart.txt
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   153
    TDirCacheConfig dirCacheConfig;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   154
    r = controlIo(TheFs,gDrive, KControlIoDirCacheConfig, dirCacheConfig);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   155
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   156
    test_Value (dirCacheConfig.iLeafDirCacheSize,
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   157
				dirCacheConfig.iLeafDirCacheSize >= 0 || dirCacheConfig.iLeafDirCacheSize == KErrNotFound);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   158
    test_Value (dirCacheConfig.iDirCacheSizeMin,
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   159
				dirCacheConfig.iDirCacheSizeMin >= 0 || dirCacheConfig.iDirCacheSizeMin == KErrNotFound);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   160
    test_Value (dirCacheConfig.iDirCacheSizeMax,
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   161
				dirCacheConfig.iDirCacheSizeMax >= 0 || dirCacheConfig.iDirCacheSizeMax == KErrNotFound);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   162
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   163
    // caculate expected settings according to the readings from estart.txt
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   164
    if (dirCacheConfig.iLeafDirCacheSize == 0)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   165
        dirCacheConfig.iLeafDirCacheSize = 1;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   166
    if (dirCacheConfig.iLeafDirCacheSize == KErrNotFound)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   167
        dirCacheConfig.iLeafDirCacheSize = KDef_KLeafDirCacheSize;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   168
    if (dirCacheConfig.iDirCacheSizeMin < KDef_DynamicDirCacheMinInBytes)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   169
        dirCacheConfig.iDirCacheSizeMin = KDef_DynamicDirCacheMinInBytes;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   170
    if (dirCacheConfig.iDirCacheSizeMax < KDef_DynamicDirCacheMaxInBytes)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   171
        dirCacheConfig.iDirCacheSizeMax = KDef_DynamicDirCacheMaxInBytes;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   172
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   173
    TVolumeIOParamInfo ioParam;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   174
    r = TheFs.VolumeIOParam(gDrive, ioParam);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   175
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   176
    const TInt32 KClusterSize = ioParam.iClusterSize;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   177
    test.Printf(_L("DRV[%C:] cluster = %d\n"), gDrive + 'A', ioParam.iClusterSize); 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   178
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   179
    const TInt32 KDefMaxCachePageSize = 1 << KDef_MaxDynamicDirCachePageSzLog2;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   180
    const TInt32 KPageSizeInData = KClusterSize < KDefMaxCachePageSize ? KClusterSize : KDefMaxCachePageSize;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   181
    const TInt32 KPageSizeInMem = KPageSizeInData < KSegmentSize ? KSegmentSize : KPageSizeInData;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   182
    const TInt32 KCacheSizeMinInPages = dirCacheConfig.iDirCacheSizeMin / KPageSizeInMem;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   183
    const TInt32 KCacheSizeMaxInPages = dirCacheConfig.iDirCacheSizeMax / KPageSizeInMem;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   184
    const TInt32 KUnlockedPageNum = 0;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   185
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   186
    // remount drive, get current dir cache info and test
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   187
    r = F32_Test_Utils::RemountFS (TheFs, CurrentDrive(), NULL);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   188
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   189
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   190
    TDirCacheInfo dirCacheInfo;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   191
    r = controlIo(TheFs,gDrive, KControlIoDirCacheInfo, dirCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   192
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   193
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   194
    test_Equal(KSegmentSize, dirCacheInfo.iMemorySegmentSize);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   195
    test_Equal(KPageSizeInMem, dirCacheInfo.iPageSizeInMemory);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   196
    test_Equal(KPageSizeInData, dirCacheInfo.iPageSizeInData);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   197
    test_Equal(KCacheSizeMinInPages, dirCacheInfo.iMinCacheSizeInPages);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   198
    test_Equal(KCacheSizeMaxInPages, dirCacheInfo.iMaxCacheSizeInPages);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   199
    test_Equal(KMaxThreadCount, dirCacheInfo.iLockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   200
    test_Equal(KUnlockedPageNum, dirCacheInfo.iUnlockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   201
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   202
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   203
//----------------------------------------------------------------------------------------------
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   204
//@SYMTestCaseID      PBASE-XXXX 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   205
//@SYMTestType        FT
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   206
//@SYMPREQ            PREQ1885
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   207
//@SYMTestCaseDesc    Test populating dir cache under normal memory conditions.
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   208
//----------------------------------------------------------------------------------------------
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   209
void TestPopulateCache()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   210
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   211
    test.Next(_L("Test populating dir cache under normal memory conditions"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   212
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   213
    CFileMan* fileMan = CFileMan::NewL(TheFs);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   214
    test_NotNull(fileMan);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   215
    TInt r = fileMan->RmDir(_L("\\TEST_DIRCACHE\\"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   216
    test_Value(r, r==KErrNone || r==KErrPathNotFound);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   217
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   218
    // remount drive, get current dir cache info
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   219
    r = F32_Test_Utils::RemountFS (TheFs, CurrentDrive(), NULL);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   220
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   221
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   222
    /*
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   223
     * Test populating dir cache 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   224
     */
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   225
    TVolumeIOParamInfo ioParam;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   226
    r = TheFs.VolumeIOParam(gDrive, ioParam);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   227
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   228
    const TInt32 KClusterSize = ioParam.iClusterSize;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   229
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   230
    TFileName dirPath = _L("\\TEST_DIRCACHE\\");
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   231
    r = TheFs.MkDirAll(dirPath);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   232
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   233
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   234
    TDirCacheInfo dirCacheInfo;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   235
    r = controlIo(TheFs,gDrive, KControlIoDirCacheInfo, dirCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   236
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   237
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   238
    // this calculation is for volumes that have a large cluster size, larger than the allowed maximum
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   239
    //  page size. on this case, creating a new directory will generate two or more new pages in the 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   240
    //  dir cache 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   241
    const TUint pagesPerDir = KClusterSize > dirCacheInfo.iPageSizeInMemory ? 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   242
                            KClusterSize / dirCacheInfo.iPageSizeInMemory : 1;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   243
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   244
    // should be KMaxThreadCount + root dir (1 page) + "\\TEST_DIRCACHE\\" (number of pages that are 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   245
    //  needed for new directories, i.e. pagesPerDir)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   246
    test_Equal(KMaxThreadCount + 1 + pagesPerDir, dirCacheInfo.iLockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   247
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   248
    const TInt initialUnlockedPage = dirCacheInfo.iUnlockedPageNumber;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   249
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   250
    const TInt createdNewDirs = dirCacheInfo.iMinCacheSizeInPages - dirCacheInfo.iLockedPageNumber;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   251
    // create directories so that it grows to KCacheSizeMinInPages
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   252
    for (TInt i = 1; i <= createdNewDirs; i++)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   253
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   254
        dirPath = _L("\\TEST_DIRCACHE\\");
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   255
        TFileName dirName;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   256
        dirName.Format(_L("DIR%d\\"), i);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   257
        dirPath += dirName;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   258
        r = TheFs.MkDirAll(dirPath);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   259
        test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   260
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   261
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   262
    const TInt KFatDirEntrySize = 32;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   263
    const TInt subDirNum = dirCacheInfo.iMinCacheSizeInPages - dirCacheInfo.iLockedPageNumber;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   264
    // calculate the extra pages needed for the newly created sub dir entries (plus the original 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   265
    //  "." and ".." entries)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   266
    TInt extraPagesForLeafdir = ((subDirNum + 2) * KFatDirEntrySize / dirCacheInfo.iPageSizeInData) - 1;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   267
    if (((subDirNum + 2) * KFatDirEntrySize) % dirCacheInfo.iPageSizeInData > 0)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   268
        extraPagesForLeafdir++;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   269
    test.Printf(_L("!!Extra pages needed for leafdir = %d\n"), extraPagesForLeafdir);   //kk
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   270
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   271
    r = controlIo(TheFs,gDrive, KControlIoDirCacheInfo, dirCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   272
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   273
    r = controlIo(TheFs,gDrive, 15, dirCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   274
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   275
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   276
    test_Equal(dirCacheInfo.iMinCacheSizeInPages, dirCacheInfo.iLockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   277
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   278
    const TInt maxUnlockedPage = dirCacheInfo.iMaxCacheSizeInPages - dirCacheInfo.iMinCacheSizeInPages;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   279
    // calculating the expected unlocked page number here.
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   280
    TInt newUnlockedPage = initialUnlockedPage;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   281
    newUnlockedPage += extraPagesForLeafdir;                // if any extra pages are created for the leafdir
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   282
    newUnlockedPage += createdNewDirs * (pagesPerDir - 1);   // if more than one page is needed for each dir creation 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   283
    test_Equal((newUnlockedPage > maxUnlockedPage ? maxUnlockedPage : newUnlockedPage), dirCacheInfo.iUnlockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   284
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   285
    // create directories so that it grows to KCacheSizeMinInPages + KCacheSizeMaxInPages
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   286
    if (dirCacheInfo.iMaxCacheSizeInPages > dirCacheInfo.iMinCacheSizeInPages)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   287
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   288
        for (TInt i = 1; i <= dirCacheInfo.iMaxCacheSizeInPages - dirCacheInfo.iMinCacheSizeInPages; i++)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   289
            {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   290
            dirPath = _L("\\TEST_DIRCACHE\\");
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   291
            TFileName dirName;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   292
            dirName.Format(_L("DIR_UNLOCKED%d\\"), i);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   293
            dirPath += dirName;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   294
            r = TheFs.MkDirAll(dirPath);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   295
            test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   296
            }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   297
        r = controlIo(TheFs,gDrive, KControlIoDirCacheInfo, dirCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   298
        test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   299
        r = controlIo(TheFs,gDrive, 15, dirCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   300
        test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   301
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   302
        test_Equal(dirCacheInfo.iMinCacheSizeInPages, dirCacheInfo.iLockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   303
        
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   304
        test_Equal(dirCacheInfo.iMaxCacheSizeInPages - dirCacheInfo.iMinCacheSizeInPages, dirCacheInfo.iUnlockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   305
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   306
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   307
    // create more directories and check that dir cache doesn't grow beyond KCacheSizeMaxInPages
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   308
    for (TInt j = 1; j <= dirCacheInfo.iMinCacheSizeInPages; j++)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   309
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   310
        dirPath = _L("\\TEST_DIRCACHE\\");
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   311
        TFileName dirName;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   312
        dirName.Format(_L("DIR_MORE%d\\"), j);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   313
        dirPath += dirName;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   314
        r = TheFs.MkDirAll(dirPath);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   315
        test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   316
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   317
    r = controlIo(TheFs,gDrive, KControlIoDirCacheInfo, dirCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   318
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   319
    r = controlIo(TheFs,gDrive, 15, dirCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   320
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   321
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   322
    test_Equal(dirCacheInfo.iMinCacheSizeInPages, dirCacheInfo.iLockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   323
    test_Equal(dirCacheInfo.iMaxCacheSizeInPages - dirCacheInfo.iMinCacheSizeInPages, dirCacheInfo.iUnlockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   324
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   325
    r = controlIo(TheFs,gDrive, KControlIoDirCacheInfo, dirCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   326
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   327
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   328
    r = fileMan->RmDir(_L("\\TEST_DIRCACHE\\"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   329
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   330
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   331
    delete fileMan;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   332
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   333
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   334
//----------------------------------------------------------------------------------------------
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   335
//@SYMTestCaseID      PBASE-XXXX 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   336
//@SYMTestType        FT
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   337
//@SYMPREQ            PREQ1885
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   338
//@SYMTestCaseDesc    Test simulating low memory condition.
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   339
//                    1. The cache should stop growing when it is at its minimum cache size in pages
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   340
//                    2. The cache should function properly when it stops simulating low memory condition 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   341
//----------------------------------------------------------------------------------------------
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   342
void TestSimulatingLowMemory()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   343
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   344
    // remount drive, get current dir cache info and test
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   345
    test.Next(_L("Test dir cache growth when simulating low memory condition"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   346
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   347
    CFileMan* fileMan = CFileMan::NewL(TheFs);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   348
    test(fileMan != NULL);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   349
    TInt r = fileMan->RmDir(_L("\\TEST_DIRCACHE\\"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   350
    test_Value(r, r==KErrNone || r==KErrPathNotFound);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   351
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   352
    r = F32_Test_Utils::RemountFS (TheFs, CurrentDrive(), NULL);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   353
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   354
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   355
    r = TheFs.ControlIo(gDrive, KControlIoSimulateMemoryLow);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   356
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   357
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   358
    /*
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   359
     * Test populating dir cache 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   360
     */
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   361
    TFileName dirPath = _L("\\TEST_DIRCACHE\\");
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   362
    r = TheFs.MkDirAll(dirPath);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   363
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   364
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   365
    TDirCacheInfo dirCacheInfo;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   366
    r = controlIo(TheFs,gDrive, KControlIoDirCacheInfo, dirCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   367
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   368
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   369
    // create directories so that it grows to KCacheSizeMaxInPages
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   370
    for (TInt i = 1; i <= dirCacheInfo.iMaxCacheSizeInPages; i++)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   371
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   372
        dirPath = _L("\\TEST_DIRCACHE\\");
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   373
        TFileName dirName;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   374
        dirName.Format(_L("DIR%d\\"), i);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   375
        dirPath += dirName;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   376
        r = TheFs.MkDirAll(dirPath);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   377
        test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   378
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   379
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   380
    r = controlIo(TheFs,gDrive, KControlIoDirCacheInfo, dirCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   381
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   382
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   383
    test_Equal(dirCacheInfo.iMinCacheSizeInPages, dirCacheInfo.iLockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   384
    test_Equal(0, dirCacheInfo.iUnlockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   385
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   386
    r = fileMan->RmDir(_L("\\TEST_DIRCACHE\\"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   387
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   388
 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   389
    // test when stop simulating the low memory condition, cache grows normally
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   390
    test.Next(_L("Test dir cache growth when stop simulating low memory condition"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   391
    r = TheFs.ControlIo(gDrive, KControlIoStopSimulateMemoryLow);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   392
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   393
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   394
    r = F32_Test_Utils::RemountFS (TheFs, CurrentDrive(), NULL);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   395
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   396
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   397
    /*
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   398
     * Test populating dir cache 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   399
     */
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   400
    dirPath = _L("\\TEST_DIRCACHE\\");
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   401
    r = TheFs.MkDirAll(dirPath);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   402
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   403
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   404
    // create directories so that it grows to KCacheSizeMaxInPages
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   405
    for (TInt j = 1; j <= dirCacheInfo.iMaxCacheSizeInPages; j++)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   406
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   407
        dirPath = _L("\\TEST_DIRCACHE\\");
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   408
        TFileName dirName;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   409
        dirName.Format(_L("DIR%d\\"), j);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   410
        dirPath += dirName;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   411
        r = TheFs.MkDirAll(dirPath);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   412
        test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   413
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   414
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   415
    r = controlIo(TheFs,gDrive, KControlIoDirCacheInfo, dirCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   416
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   417
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   418
    test_Equal(dirCacheInfo.iMinCacheSizeInPages, dirCacheInfo.iLockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   419
    test_Equal(dirCacheInfo.iMaxCacheSizeInPages - dirCacheInfo.iMinCacheSizeInPages, dirCacheInfo.iUnlockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   420
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   421
    r = fileMan->RmDir(_L("\\TEST_DIRCACHE\\"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   422
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   423
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   424
    delete fileMan;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   425
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   426
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   427
//----------------------------------------------------------------------------------------------
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   428
//@SYMTestCaseID      PBASE-XXXX 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   429
//@SYMTestType        FT
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   430
//@SYMPREQ            PREQ1885
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   431
//@SYMTestCaseDesc    Test low memory threshold on hardware platforms
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   432
//                    1. Stress the system memory to below the low memory threshold configured
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   433
//                    2. The cache should stop growing when it is at its minimum cache size in pages
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   434
//                    3. Resume the system memory before step 1.
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   435
//                    2. The cache should function properly when it stops simulating low memory condition 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   436
//----------------------------------------------------------------------------------------------
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   437
void TestLowMemoryHW()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   438
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   439
    test.Next(_L("Test low memory threshold on hardware"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   440
#if !defined(__WINS__)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   441
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   442
    CFileMan* fileMan = CFileMan::NewL(TheFs);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   443
    test_NotNull(fileMan);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   444
    TInt r = fileMan->RmDir(_L("\\TEST_DIRCACHE\\"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   445
    test_Value(r, r==KErrNone || r==KErrPathNotFound);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   446
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   447
    r = F32_Test_Utils::RemountFS (TheFs, CurrentDrive(), NULL);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   448
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   449
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   450
    RPageStressTestLdd PagestressLdd;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   451
    TMemoryInfoV1Buf memInfo;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   452
    r = UserHal::MemoryInfo(memInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   453
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   454
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   455
    TGlobalCacheInfo globalCacheInfo;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   456
    r = controlIo(TheFs,gDrive, KControlIoGlobalCacheInfo, globalCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   457
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   458
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   459
    test.Printf(_L("Free RAM before setup %d\n"), memInfo().iFreeRamInBytes);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   460
    const TReal lowMemThreshold = globalCacheInfo.iGlobalLowMemoryThreshold / 200.00;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   461
    test.Printf(_L("Low memory threshold = %d%%\n"), globalCacheInfo.iGlobalLowMemoryThreshold);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   462
    test.Printf(_L("Current memory available = %d%%\n"), lowMemThreshold * 100);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   463
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   464
    const TInt totalRamInBytes = memInfo().iTotalRamInBytes;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   465
    const TInt setupFreeRamInBytes = (TInt) (lowMemThreshold * totalRamInBytes);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   466
    const TInt setupFreeRamInPages = setupFreeRamInBytes / KSegmentSize;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   467
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   468
    r = User::LoadLogicalDevice(KPageStressTestLddName);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   469
    test_Value(r, r==KErrNone || r==KErrAlreadyExists);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   470
    r = PagestressLdd.Open();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   471
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   472
    r = PagestressLdd.DoSetDebugFlag((TInt)ETrue);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   473
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   474
    if (setupFreeRamInPages > 0 && setupFreeRamInBytes < totalRamInBytes)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   475
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   476
        r = PagestressLdd.DoConsumeRamSetup(setupFreeRamInPages, 1);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   477
        test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   478
        r = UserHal::MemoryInfo(memInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   479
        test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   480
        test.Printf(_L("Free RAM after setup %d\n"), memInfo().iFreeRamInBytes);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   481
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   482
    else
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   483
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   484
        test.Printf(_L("Current memory is already low: %d\n"), memInfo().iFreeRamInBytes);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   485
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   486
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   487
    /*
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   488
     * Test populating dir cache 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   489
     */
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   490
    TFileName dirPath = _L("\\TEST_DIRCACHE\\");
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   491
    r = TheFs.MkDirAll(dirPath);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   492
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   493
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   494
    TDirCacheInfo dirCacheInfo;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   495
    r = controlIo(TheFs,gDrive, KControlIoDirCacheInfo, dirCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   496
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   497
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   498
    // create directories so that it grows to KCacheSizeMaxInPages
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   499
    for (TInt i = 1; i <= dirCacheInfo.iMaxCacheSizeInPages; i++)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   500
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   501
        dirPath = _L("\\TEST_DIRCACHE\\");
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   502
        TFileName dirName;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   503
        dirName.Format(_L("DIR%d\\"), i);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   504
        dirPath += dirName;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   505
        r = TheFs.MkDirAll(dirPath);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   506
        test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   507
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   508
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   509
    r = controlIo(TheFs,gDrive, KControlIoDirCacheInfo, dirCacheInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   510
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   511
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   512
    test_Equal(dirCacheInfo.iMinCacheSizeInPages, dirCacheInfo.iLockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   513
    test_Equal(0, dirCacheInfo.iUnlockedPageNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   514
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   515
    // release memory
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   516
    PagestressLdd.DoConsumeRamFinish();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   517
    PagestressLdd.Close();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   518
    r = User::FreeLogicalDevice(KPageStressTestLddName);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   519
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   520
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   521
    r = UserHal::MemoryInfo(memInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   522
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   523
    test.Printf(_L("Free RAM after test %d\n"), memInfo().iFreeRamInBytes);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   524
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   525
    r = fileMan->RmDir(_L("\\TEST_DIRCACHE\\"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   526
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   527
    delete fileMan;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   528
#else
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   529
    test.Printf(_L("This test step only runs on hardware!!\n"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   530
#endif //#if !defined(__WINS__)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   531
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   532
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   533
#endif // #if defined(_DEBUG) || defined(_DEBUG_RELEASE)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   534
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   535
GLDEF_C void CallTestsL()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   536
//
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   537
// Test the file server.
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   538
//
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   539
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   540
#if defined(_DEBUG) || defined(_DEBUG_RELEASE)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   541
    TInt nRes=TheFs.CharToDrive(gDriveToTest, gDrive);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   542
    test_KErrNone(nRes);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   543
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   544
    TDriveInfo  driveInfo;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   545
    nRes = TheFs.Drive(driveInfo, gDrive);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   546
    test.Printf(_L("MediaType: 0x%x\n"), driveInfo.iType);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   547
    test_KErrNone(nRes);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   548
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   549
    if (F32_Test_Utils::Is_Fat(TheFs, gDrive) && driveInfo.iType != EMediaRam)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   550
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   551
        nRes = F32_Test_Utils::FormatDrive(TheFs, gDrive, ETrue);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   552
        test_KErrNone(nRes);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   553
        
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   554
        F32_Test_Utils::PrintDrvInfo(TheFs, gDrive);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   555
        
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   556
        TVolumeInfo v;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   557
        TInt r=TheFs.Volume(v, CurrentDrive());
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   558
        test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   559
        
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   560
        CreateTestDirectory(_L("\\F32-TST\\TDIRCACHE\\"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   561
        
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   562
        TestGlobalSettings();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   563
        TestDirCacheSettings();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   564
        TestPopulateCache();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   565
        TestSimulatingLowMemory();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   566
        TestLowMemoryHW();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   567
        
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   568
        DeleteTestDirectory();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   569
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   570
    else
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   571
        {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   572
        test.Printf(_L("This test executes on FAT drives and non-RAM media only!!\n"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   573
        }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   574
#else
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   575
    test.Printf(_L("This test executes on DEBUG mode only!!\n"));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   576
#endif //#if defined(_DEBUG) || defined(_DEBUG_RELEASE)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   577
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   578
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   579
/*
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   580
void TestReadEstart()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   581
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   582
    TDirCacheConfig dirCacheConfig;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   583
    TInt r = controlIo(TheFs,gDrive, KControlIoDirCacheConfig, dirCacheConfig);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   584
    test_KErrNone(r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   585
    test.Printf(_L("Dir cache: \n Drive %C \n iLeafDirCacheSize %d \n iDirCacheSizeMin %d \n iDirCacheSizeMax %d \n iGlobalCacheMemorySize %d \n iLowMemoryThreshold %%%d"), 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   586
            dirCacheConfig.iDrive + 'A',
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   587
            dirCacheConfig.iLeafDirCacheSize,
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   588
            dirCacheConfig.iDirCacheSizeMin,
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   589
            dirCacheConfig.iDirCacheSizeMax);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   590
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   591
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   592
*/
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   593
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   594
//          const TInt KControlIoGlobalCacheConfig=KMaxTInt-21;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   595
//          const TInt KControlIoGlobalCacheInfo=KMaxTInt-22;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   596
//          const TInt KControlIoDirCacheConfig=KMaxTInt-23;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   597
//          const TInt KControlIoDirCacheInfo=KMaxTInt-24;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   598
//
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   599
//class TGlobalCacheConfig
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   600
//class TGlobalCacheInfo
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   601
//class TDirCacheConfig
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   602
//class TDirCacheInfo 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   603
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   604
//  this test is for FAT only!!
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   605
//if (F32_Test_Utils::Is_ExFat(TheFs, gDrive))
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   606
//    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   607
//    // test cluster size
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   608
//    TVolumeIOParamInfo ioParam;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   609
//    TInt r = TheFs.VolumeIOParam(gDrive, ioParam);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   610
//    test.Printf(_L("TheFs.VolumeIOParam for EXFAT: (cluster = %d) = %d\n"), ioParam.iClusterSize, r); 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   611
//    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   612
//