diff -r d45b74d3fb20 -r d57b86b1867a kerneltest/f32test/server/t_fsys.cpp --- a/kerneltest/f32test/server/t_fsys.cpp Tue Aug 31 11:40:45 2010 +0100 +++ b/kerneltest/f32test/server/t_fsys.cpp Mon Sep 13 15:16:07 2010 +0100 @@ -30,6 +30,16 @@ RTest test(_L("T_FSYS")); static TInt64 gRndSeed; +_LIT(KTestFsy, "T_TFSYS"); +_LIT(KTestFsy2, "T_TFSYS2"); +_LIT(KTestFsy3, "T_TFSYS3"); + +_LIT(KTestFsName, "Test"); +_LIT(KTestFsName2, "Test2"); +_LIT(KTestFsName3, "Test3"); + + + //--------------------------------------------------- @@ -53,10 +63,10 @@ */ void TestFileSystemNameLength() { - test.Next(_L("Test file system name lenght limits")); + test.Next(_L("Test file system name length limits\n")); if(Is_SimulatedSystemDrive(TheFs, CurrentDrive())) { - test.Printf(_L("Can't test on a simulated drive, skipping!")); + test.Printf(_L("Can't test on a simulated drive, skipping!\n")); return; } @@ -176,26 +186,41 @@ test_KErrNone(nRes); } - +//--------------------------------------------------- static void TestFileSystemNames() { - test.Next(_L("Read file system names for all drives")); + test.Next(_L("TestFileSystemNames(). Read file system names for all drives\n")); TFullName name; - TInt r; - for(TInt i=EDriveA;i buf; + TInt nRes; + + TDriveList drvList; + nRes = TheFs.DriveList(drvList); + test_KErrNone(nRes); + + for(TInt i=0; i b; TChar c; TInt r=TheFs.DriveToChar(aDrive,c); @@ -311,14 +344,14 @@ TDriveInfo di; r=TheFs.Drive(di,aDrive); test_KErrNone(r); - b.Format(_L("Test mounting of test file system on %c: (DrvAtt:%x MedAtt:%x)"),(TUint)c,di.iDriveAtt,di.iMediaAtt); + b.Format(_L("Test mounting of test file system on %c: (DrvAtt:%x MedAtt:%x)\n"),(TUint)c,di.iDriveAtt,di.iMediaAtt); test.Next(b); - test.Next(_L("Test mounting of test file system")); - r=TheFs.AddFileSystem(_L("T_TFSYS")); + test.Next(_L("Test mounting of test file system\n")); + r=TheFs.AddFileSystem(KTestFsy); if(r!=KErrNone && r!=KErrAlreadyExists) { - test.Printf(_L("error=%d"),r); + test.Printf(_L("error=%d\n"),r); test(EFalse); } @@ -330,35 +363,34 @@ r=TheFs.DismountFileSystem(oldFs,aDrive); if(r!=KErrNone) { - test.Printf(_L("Error = %d"),r); + test.Printf(_L("Error = %d\n"),r); test(EFalse); } - r=TheFs.MountFileSystem(_L("Test"),aDrive); + r=TheFs.MountFileSystem(KTestFsName,aDrive); test_KErrNone(r); TFileName newFs; r=TheFs.FileSystemName(newFs,aDrive); test_KErrNone(r); - test(newFs.Compare(_L("Test"))==0); + test(newFs.Compare(KTestFsName)==0); // Check attributes TDriveInfo info; r=TheFs.Drive(info,aDrive); test_KErrNone(r); - test.Printf(_L("iType=%d,iConnectionBusType=%d,iDriveAtt=%x,iMediaAtt=%x\n"),(TUint)info.iType,\ - (TUint)info.iConnectionBusType,info.iDriveAtt,info.iMediaAtt); + test.Printf(_L("iType=%d,iConnectionBusType=%d,iDriveAtt=%x,iMediaAtt=%x\n"),(TUint)info.iType, (TUint)info.iConnectionBusType,info.iDriveAtt,info.iMediaAtt); //Try to remove filesystem without dismounting. - r=TheFs.RemoveFileSystem(_L("Test")); + r=TheFs.RemoveFileSystem(KTestFsName); if(r!=KErrInUse) { - test.Printf(_L("error=%d"),r); + test.Printf(_L("error=%d\n"),r); test(EFalse); } r=TheFs.FileSystemName(newFs,aDrive); test_KErrNone(r); - test(newFs.Compare(_L("Test"))==0); + test(newFs.Compare(KTestFsName)==0); r=TheFs.DismountFileSystem(newFs,aDrive); test_KErrNone(r); @@ -366,31 +398,33 @@ r=TheFs.MountFileSystem(oldFs,aDrive); test_KErrNone(r); } -#endif +//--------------------------------------------------- static void TestMountInvalidDrive() -// -// Attempt to mount FAT on non-local drive { - test.Start(_L("TestMountInvalidDrive")); + test.Next(_L("TestMountInvalidDrive(). Try mounting FS on an invalid drive\n")); - TInt r; + //-- 1. find an invalid drive + TInt drv = 0; + TDriveList drvList; + + TInt nRes = TheFs.DriveList(drvList); + test_KErrNone(nRes); - test.Next(_L("Adding EFAT")); -#ifdef __WINS__ - _LIT(KFsNm, "EFAT32"); -#else - _LIT(KFsNm, "ELOCAL"); -#endif + for(drv =0; drv subName; TInt i, r; @@ -690,7 +724,7 @@ //---------------------------------------------------------------------------------------------- static void TestFileSystemClusterSizeQuery() { - test.Next(_L("Test querying cluster size information of the mounted file system")); + test.Next(_L("Test querying cluster size information of the mounted file system\n")); TFullName fsName; TPckgBuf ioInfo; TInt i, r; @@ -795,12 +829,12 @@ //---------------------------------------------------------------------------------------------- static void TestMediaBlockSizeQuery() { - test.Next(_L("Test querying block size information of the underlying media")); + test.Next(_L("Test querying block size information of the underlying media\n")); #if defined(__WINS__) - test.Printf(_L("This test case runs on hardware only")); + test.Printf(_L("This test case runs on hardware only\n")); return; - #else // test runs on hardware only. + TFSName fsName; TPckgBuf ioInfo; TInt i, r; @@ -914,7 +948,7 @@ //---------------------------------------------------------------------------------------------- static void TestFileSystemSubType() { - test.Next(_L("Test wrapper API RFs::FileSystemSubType()'s behaviour")); + test.Next(_L("Test wrapper API RFs::FileSystemSubType()'s behaviour\n")); TFSName fsName; TPckgBuf subName; TInt r; @@ -956,7 +990,7 @@ //---------------------------------------------------------------------------------------------- static void TestVolumeIOParam() { - test.Next(_L("Test wrapper API RFs::VolumeIOParam()'s behaviour")); + test.Next(_L("Test wrapper API RFs::VolumeIOParam()'s behaviour\n")); TFSName fsName; TPckgBuf ioInfo; TInt r; @@ -1005,11 +1039,11 @@ test.Printf(_L("Tested on drive: %c.\n"), (char)(aDrive+'A')); // Mount a new CTestFileSystem on the drive under test - test.Next(_L("Test RFs::QueryVolumeInfoExt() on Testing File System")); - r = TheFs.AddFileSystem(_L("T_TFSYS3")); + test.Next(_L("Test RFs::QueryVolumeInfoExt() on Testing File System\n")); + r = TheFs.AddFileSystem(KTestFsy3); if (r != KErrNone && r != KErrAlreadyExists) { - test.Printf(_L("error=%d"),r); + test.Printf(_L("error=%d\n"),r); test(EFalse); } TFSName oldFs; @@ -1018,15 +1052,15 @@ r = TheFs.DismountFileSystem(oldFs,aDrive); if (r != KErrNone) { - test.Printf(_L("Error = %d"),r); + test.Printf(_L("Error = %d\n"),r); test(EFalse); } - r = TheFs.MountFileSystem(_L("Test3"),aDrive); + r = TheFs.MountFileSystem(KTestFsName3, aDrive); test_KErrNone(r); TFSName newFs; r = TheFs.FileSystemName(newFs,aDrive); test_KErrNone(r); - test(newFs.Compare(_L("Test3"))==0); + test(newFs.Compare(KTestFsName3)==0); // Sub type name query: TPckgBuf subNameP; @@ -1046,10 +1080,10 @@ r=TheFs.MountFileSystem(oldFs,aDrive); test_KErrNone(r); - r=TheFs.RemoveFileSystem(_L("Test3")); + r=TheFs.RemoveFileSystem(KTestFsName3); if(r!=KErrNone) { - test.Printf(_L("error=%d"),r); + test.Printf(_L("error=%d\n"),r); test(EFalse); } } @@ -1068,7 +1102,21 @@ { test.Next(_L("Testing forcedly remounting FS with objects opened.\n")); + //-- don't perform this test on a non-removable drive, generating media change on such drive + //-- doesn't always work TInt nRes; + const TInt drvNumber = CurrentDrive(); + TDriveInfo driveInfo; + + nRes = TheFs.Drive(driveInfo, drvNumber); + test_KErrNone(nRes); + + if(! (driveInfo.iDriveAtt & KDriveAttRemovable)) + { + test.Printf(_L("Can't perform this test on a non-removable drive. Skippping!\n")); + return; + } + //-- 1. create a file _LIT(KFile, "\\test_file.file"); @@ -1083,7 +1131,7 @@ nRes = file.Open(TheFs, KFile, EFileRead); test_KErrNone(nRes); - const TInt drvNumber = CurrentDrive(); + //-- 2.1 try to dismount the FS, it must fail because of the opened object. TBuf<40> fsName; @@ -1097,14 +1145,14 @@ const TUint KMediaRemountForceMediaChange = 0x00000001; TRequestStatus changeStatus; TheFs.NotifyChange(ENotifyAll, changeStatus); - TDriveInfo driveInfo; + //-- 3. forcedly remount the drive nRes = TheFs.RemountDrive(drvNumber, NULL, KMediaRemountForceMediaChange); if(nRes == KErrNotSupported) {//-- this feature is not supported and the test is inconsistent. - test.Printf(_L("RemountDrive() is not supported, the test is inconsistent!")); + test.Printf(_L("RemountDrive() is not supported, the test is inconsistent!\n")); //-- remounting must work at least on MMC drives const TBool isFAT = Is_Fat(TheFs, drvNumber); @@ -1117,6 +1165,7 @@ else { test_Value(nRes, nRes == KErrNotReady || nRes == KErrNone); + test.Printf(_L("Waiting for the simulated media change...\n")); //-- 3.1 wait for media change to complete do @@ -1152,7 +1201,7 @@ //---------------------------------------------------------------------------------------------- static void TestFileSystem_MaxSupportedFileSizeQuery() { - test.Next(_L("Test querying max. supported file size on this file system")); + test.Next(_L("Test querying max. supported file size on this file system\n")); TFullName fsName; TPckgBuf ioInfo; TVolumeIOParamInfo& volInfo = ioInfo(); @@ -1183,33 +1232,28 @@ } //---------------------------------------------------------------------------------------------- -GLDEF_C void CallTestsL() -// -// Do all tests -// +void CallTestsL() { //-- set up console output Fat_Test_Utils::SetConsole(test.Console()); - TInt drive=CurrentDrive(); - + const TInt drive=CurrentDrive(); PrintDrvInfo(TheFs, drive); - //Do not run this test on the NAND drive, as - //this has the FTL mounted as a primary extension + //Do not run this test on the NAND drive, as this has the FTL mounted as a primary extension //which causes the test to fail - #if defined(__WINS__) - if (drive==EDriveU) - return; - #else - TDriveInfo driveInfo; - TheFs.Drive(driveInfo,drive); - if (driveInfo.iType == EMediaNANDFlash) - { - return; - } - #endif + + TFSName pExtName; + pExtName.Zero(); + + TInt nRes = TheFs.ExtensionName(pExtName, drive, 0); + + if(nRes == KErrNone && pExtName.Length()) + { + test.Printf(_L("This test can't be run on a drive that has a primary extension:%S\n"), &pExtName); + return; + } //--------------------------------------- @@ -1219,12 +1263,8 @@ TestFileSystemNames(); TestFileSystemNameLength(); TestDismountFileSystem(CurrentDrive()); -#if defined(__EPOC32__) TestFileSystem(CurrentDrive()); -#endif - TestMountInvalidDrive(); - TestMountingBrokenMedia(CurrentDrive()); TestSubstDriveMediaSerialNumber(); @@ -1234,9 +1274,7 @@ TestFileSystemSubType(); TestVolumeIOParam(); TestQueryVolumeInfoExtOnTestFS(CurrentDrive()); - TestFileSystem_MaxSupportedFileSizeQuery(); - TestRemountFSWithOpenedObjects(); //---------------------------------------