kerneltest/f32test/server/t_falsespace.cpp
changeset 109 b3a1d9898418
parent 90 947f0dc9f7a8
child 139 95f71bcdcdb7
equal deleted inserted replaced
102:ef2a444a7410 109:b3a1d9898418
    11 // Contributors:
    11 // Contributors:
    12 //
    12 //
    13 // Description:
    13 // Description:
    14 //
    14 //
    15 
    15 
       
    16 #define __E32TEST_EXTENSION__
    16 #include <f32file.h>
    17 #include <f32file.h>
    17 #include <e32test.h>
    18 #include <e32test.h>
    18 #include <e32svr.h>
    19 #include <e32svr.h>
    19 #include <e32math.h>
    20 #include <e32math.h>
    20 
    21 
    65 
    66 
    66     nRes = FormatFatDrive(TheFs, gTestDrive, ETrue);	
    67     nRes = FormatFatDrive(TheFs, gTestDrive, ETrue);	
    67 
    68 
    68     #endif
    69     #endif
    69 
    70 
    70     test(nRes == KErrNone);
    71     test_KErrNone(nRes);
    71 }
    72 }
    72 
    73 
    73 void SynchronousClose(RFs &aSession)
    74 void SynchronousClose(RFs &aSession)
    74 	{
    75 	{
    75 	TRequestStatus s;
    76 	TRequestStatus s;
   147 //
   148 //
   148 	{
   149 	{
   149 
   150 
   150 	test.Start(_L("Fill disk to capacity"));
   151 	test.Start(_L("Fill disk to capacity"));
   151 	TInt r=TheFs.MkDirAll(KBasePath);
   152 	TInt r=TheFs.MkDirAll(KBasePath);
   152 	test(r==KErrNone || r==KErrAlreadyExists);
   153 	test_Value(r, r == KErrNone || r==KErrAlreadyExists);
   153 	gCount=0;
   154 	gCount=0;
   154 	TFileName sessionPath;
   155 	TFileName sessionPath;
   155 	r=TheFs.SessionPath(sessionPath);
   156 	r=TheFs.SessionPath(sessionPath);
   156 	test(r==KErrNone);
   157 	test_KErrNone(r);
   157 	TBuf<128> fileName=KBaseName();
   158 	TBuf<128> fileName=KBaseName();
   158 	
   159 	
   159 	TInt64 freespace=0;
   160 	TInt64 freespace=0;
   160 	TInt64 freespaceBeforeScanDrive = 0;
   161 	TInt64 freespaceBeforeScanDrive = 0;
   161 	TInt64 freespaceAfterScanDrive = 0;
   162 	TInt64 freespaceAfterScanDrive = 0;
   177 				if(fillfilesize <= 2)
   178 				if(fillfilesize <= 2)
   178 					break;
   179 					break;
   179 				else
   180 				else
   180 					fillfilesize=fillfilesize/2;
   181 					fillfilesize=fillfilesize/2;
   181 				}
   182 				}
   182 			test(r==KErrNone || r==KErrDiskFull);
   183 			test_Value(r, r == KErrNone || r==KErrDiskFull);
   183 			if(r==KErrNone)
   184 			if(r==KErrNone)
   184 				gCount++;
   185 				gCount++;
   185 			}
   186 			}
   186 
   187 
   187 		r=TheFs.CheckDisk(fileName);
   188 		r=TheFs.CheckDisk(fileName);
   220 //
   221 //
   221 	{
   222 	{
   222 	TVolumeInfo v;
   223 	TVolumeInfo v;
   223 
   224 
   224 	TInt r=TheFs.Volume(v,gTestDrive);
   225 	TInt r=TheFs.Volume(v,gTestDrive);
   225 	test(r==KErrNone);
   226 	test_KErrNone(r);
   226 	aFree=v.iFree;
   227 	aFree=v.iFree;
   227 	}
   228 	}
   228 
   229 
   229 
   230 
   230 static void Test1()
   231 static void Test1()
   240 	TInt64 free2;
   241 	TInt64 free2;
   241 	TInt64 free1; 
   242 	TInt64 free1; 
   242 	TInt64 diff;
   243 	TInt64 diff;
   243 
   244 
   244 	r=TheFs.GetReserveAccess(gTestDrive);
   245 	r=TheFs.GetReserveAccess(gTestDrive);
   245 	test(r==KErrPermissionDenied);
   246 	test_Value(r, r == KErrPermissionDenied);
   246 	
   247 	
   247 	//make sure nothing odd happens if we didnt already have access
   248 	//make sure nothing odd happens if we didnt already have access
   248 	r=TheFs.ReleaseReserveAccess(gTestDrive);
   249 	r=TheFs.ReleaseReserveAccess(gTestDrive);
   249 	test(r==KErrNone);
   250 	test_KErrNone(r);
   250 
   251 
   251 	
   252 	
   252 	GetFreeDiskSpace(free2);
   253 	GetFreeDiskSpace(free2);
   253 
   254 
   254 	r=TheFs.ReserveDriveSpace(gTestDrive,0x1000);
   255 	r=TheFs.ReserveDriveSpace(gTestDrive,0x1000);
   255 	test(r==KErrNone);
   256 	test_KErrNone(r);
   256 
   257 
   257 	GetFreeDiskSpace(free1);
   258 	GetFreeDiskSpace(free1);
   258 	diff = free2 - free1;
   259 	diff = free2 - free1;
   259 	test(I64INT(diff) > 0xfe0 && I64INT(diff) < 0x1100); 
   260 	test(I64INT(diff) > 0xfe0 && I64INT(diff) < 0x1100); 
   260 	
   261 	
   261 	r=TheFs.GetReserveAccess(gTestDrive);
   262 	r=TheFs.GetReserveAccess(gTestDrive);
   262 	test(r==KErrNone);
   263 	test_KErrNone(r);
   263 
   264 
   264 	GetFreeDiskSpace(free1);
   265 	GetFreeDiskSpace(free1);
   265 	TInt64 temp = free2-free1;
   266 	TInt64 temp = free2-free1;
   266 	test(I64INT(temp)>(-0x90) && I64INT(temp)<0x90);
   267 	test(I64INT(temp)>(-0x90) && I64INT(temp)<0x90);
   267 	
   268 	
   268 	r=TheFs.ReleaseReserveAccess(gTestDrive);
   269 	r=TheFs.ReleaseReserveAccess(gTestDrive);
   269 	test(r==KErrNone);
   270 	test_KErrNone(r);
   270 	GetFreeDiskSpace(free1);
   271 	GetFreeDiskSpace(free1);
   271 
   272 
   272 	diff = free2 - free1;
   273 	diff = free2 - free1;
   273 	test(I64INT(diff) > 0xfe0 && I64INT(diff) < 0x1100);
   274 	test(I64INT(diff) > 0xfe0 && I64INT(diff) < 0x1100);
   274 	
   275 	
   275 	
   276 	
   276 	//test reallocation of reserved space is possible
   277 	//test reallocation of reserved space is possible
   277 	r=TheFs.ReserveDriveSpace(gTestDrive,0x2000);
   278 	r=TheFs.ReserveDriveSpace(gTestDrive,0x2000);
   278 	test(r==KErrNone);
   279 	test_KErrNone(r);
   279 
   280 
   280 	//test upper limit of reserved space 
   281 	//test upper limit of reserved space 
   281 	r=TheFs.ReserveDriveSpace(gTestDrive,0x2000000);
   282 	r=TheFs.ReserveDriveSpace(gTestDrive,0x2000000);
   282 	test(r==KErrArgument);
   283 	test_Value(r, r == KErrArgument);
   283 
   284 
   284 	r=TheFs.ReserveDriveSpace(gTestDrive,0);
   285 	r=TheFs.ReserveDriveSpace(gTestDrive,0);
   285 	test(r==KErrNone);
   286 	test_KErrNone(r);
   286 	
   287 	
   287 	r=TheFs.GetReserveAccess(gTestDrive);
   288 	r=TheFs.GetReserveAccess(gTestDrive);
   288 	test(r==KErrPermissionDenied);
   289 	test_Value(r, r == KErrPermissionDenied);
   289 
   290 
   290 	//make sure nothing odd happens if we didnt already have access
   291 	//make sure nothing odd happens if we didnt already have access
   291 	r=TheFs.ReleaseReserveAccess(gTestDrive);
   292 	r=TheFs.ReleaseReserveAccess(gTestDrive);
   292 	test(r==KErrNone);
   293 	test_KErrNone(r);
   293 	
   294 	
   294 	r=TheFs.ReserveDriveSpace(gTestDrive,-45);
   295 	r=TheFs.ReserveDriveSpace(gTestDrive,-45);
   295 	test(r==KErrArgument);
   296 	test_Value(r, r == KErrArgument);
   296 	}
   297 	}
   297 
   298 
   298 
   299 
   299 static void Test2()
   300 static void Test2()
   300 //
   301 //
   313 
   314 
   314 	//Connect Sessions
   315 	//Connect Sessions
   315 	for(i=0; i<17; i++)
   316 	for(i=0; i<17; i++)
   316 		{
   317 		{
   317 		r = sessions[i].Connect();
   318 		r = sessions[i].Connect();
   318 		test(r==KErrNone);
   319 		test_KErrNone(r);
   319 		}
   320 		}
   320 
   321 
   321 	test.Next(_L("Test breaching sesson reserve limit"));
   322 	test.Next(_L("Test breaching sesson reserve limit"));
   322 	r=sessions[0].ReserveDriveSpace(gTestDrive,0x10001);
   323 	r=sessions[0].ReserveDriveSpace(gTestDrive,0x10001);
   323 	test(r==KErrArgument);
   324 	test_Value(r, r == KErrArgument);
   324 
   325 
   325 	//Get Volume Free Space
   326 	//Get Volume Free Space
   326 	r = sessions[0].Volume(v, gTestDrive);
   327 	r = sessions[0].Volume(v, gTestDrive);
   327 
   328 
   328 	if(v.iFree > 0x100000)
   329 	if(v.iFree > 0x100000)
   330 		test.Next(_L("Test breaching drive reserve limit"));
   331 		test.Next(_L("Test breaching drive reserve limit"));
   331 
   332 
   332 		for (i=0; i<16; i++)
   333 		for (i=0; i<16; i++)
   333 			{
   334 			{
   334 			r=sessions[i].ReserveDriveSpace(gTestDrive,0x10000);
   335 			r=sessions[i].ReserveDriveSpace(gTestDrive,0x10000);
   335 			test(r==KErrNone);
   336 			test_KErrNone(r);
   336 			}
   337 			}
   337 
   338 
   338 		//The straw
   339 		//The straw
   339 		r=sessions[16].ReserveDriveSpace(gTestDrive,0x10);
   340 		r=sessions[16].ReserveDriveSpace(gTestDrive,0x10);
   340 		test(r==KErrTooBig);
   341 		test_Value(r, r == KErrTooBig);
   341 		}
   342 		}
   342 	else
   343 	else
   343 		{
   344 		{
   344 		test.Printf(_L("Drive too small: breaching drive reserve limit test skipped\n"));
   345 		test.Printf(_L("Drive too small: breaching drive reserve limit test skipped\n"));
   345 		test.Next(_L("Testing exhausting available drive free space instead"));
   346 		test.Next(_L("Testing exhausting available drive free space instead"));
   346 
   347 
   347 		for(i=0; (v.iFree -= 0x10000) >= 0; i++)
   348 		for(i=0; (v.iFree -= 0x10000) >= 0; i++)
   348 			{
   349 			{
   349 			r=sessions[i].ReserveDriveSpace(gTestDrive,0x10000);
   350 			r=sessions[i].ReserveDriveSpace(gTestDrive,0x10000);
   350 			test(r==KErrNone);
   351 			test_KErrNone(r);
   351 			}
   352 			}
   352 
   353 
   353 		//The straw
   354 		//The straw
   354 		r=sessions[i].ReserveDriveSpace(gTestDrive,0x10000);
   355 		r=sessions[i].ReserveDriveSpace(gTestDrive,0x10000);
   355 		test(r==KErrDiskFull);
   356 		test_Value(r, r == KErrDiskFull);
   356 		}
   357 		}
   357 
   358 
   358 	//Close Sessions
   359 	//Close Sessions
   359 	for(i=0; i<17; i++)
   360 	for(i=0; i<17; i++)
   360 		{
   361 		{
   377 	TInt64 free1(0); 
   378 	TInt64 free1(0); 
   378 	TInt64 diff(0);
   379 	TInt64 diff(0);
   379 	
   380 	
   380 	TInt r=0;
   381 	TInt r=0;
   381 	r = fs1.Connect();
   382 	r = fs1.Connect();
   382 	test(r==KErrNone);
   383 	test_KErrNone(r);
   383 	r = fs2.Connect();
   384 	r = fs2.Connect();
   384 	test(r==KErrNone);
   385 	test_KErrNone(r);
   385 
   386 
   386 	GetFreeDiskSpace(free1);
   387 	GetFreeDiskSpace(free1);
   387 
   388 
   388 	r=fs1.ReserveDriveSpace(gTestDrive,0x10000);
   389 	r=fs1.ReserveDriveSpace(gTestDrive,0x10000);
   389 	test(r==KErrNone);
   390 	test_KErrNone(r);
   390 	r=fs2.ReserveDriveSpace(gTestDrive,0x10000);
   391 	r=fs2.ReserveDriveSpace(gTestDrive,0x10000);
   391 	test(r==KErrNone);
   392 	test_KErrNone(r);
   392 
   393 
   393 	GetFreeDiskSpace(free2);
   394 	GetFreeDiskSpace(free2);
   394 	diff = free1 - free2;
   395 	diff = free1 - free2;
   395 	test(I64INT(diff)>0x1FBD0 && I64INT(diff)<0x21000); 
   396 	test(I64INT(diff)>0x1FBD0 && I64INT(diff)<0x21000); 
   396 
   397 
   399 	GetFreeDiskSpace(free2);
   400 	GetFreeDiskSpace(free2);
   400 	diff = free1-free2;
   401 	diff = free1-free2;
   401 	test(I64INT(diff)>0xFA00 && I64INT(diff)<0x103C4); 
   402 	test(I64INT(diff)>0xFA00 && I64INT(diff)<0x103C4); 
   402 
   403 
   403 	r = fs1.Connect();
   404 	r = fs1.Connect();
   404 	test(r==KErrNone);
   405 	test_KErrNone(r);
   405 
   406 
   406 	GetFreeDiskSpace(free1);
   407 	GetFreeDiskSpace(free1);
   407 	diff= free1-free2;
   408 	diff= free1-free2;
   408 	test(I64INT(diff)== 0 || I64INT(diff)<0xFA0 ); 
   409 	test(I64INT(diff)== 0 || I64INT(diff)<0xFA0 ); 
   409 
   410 
   410 	r=fs1.ReserveDriveSpace(gTestDrive,0x10000);
   411 	r=fs1.ReserveDriveSpace(gTestDrive,0x10000);
   411 	test(r==KErrNone);
   412 	test_KErrNone(r);
   412 
   413 
   413 	GetFreeDiskSpace(free2);
   414 	GetFreeDiskSpace(free2);
   414 	diff = free1 - free2;
   415 	diff = free1 - free2;
   415 	test(I64INT(diff)>0xFA00 && I64INT(diff)<0x103C4); 
   416 	test(I64INT(diff)>0xFA00 && I64INT(diff)<0x103C4); 
   416 
   417 
   417 	// Make sure no reserve space is allocated
   418 	// Make sure no reserve space is allocated
   418 	r=fs1.ReserveDriveSpace(gTestDrive,0);
   419 	r=fs1.ReserveDriveSpace(gTestDrive,0);
   419 	test(r==KErrNone);
   420 	test_KErrNone(r);
   420 	r=fs2.ReserveDriveSpace(gTestDrive,0);
   421 	r=fs2.ReserveDriveSpace(gTestDrive,0);
   421 	test(r==KErrNone);
   422 	test_KErrNone(r);
   422 
   423 
   423 	// Now fill up the disk
   424 	// Now fill up the disk
   424 	FillUpDisk();
   425 	FillUpDisk();
   425 	
   426 	
   426 	// Should fail as there is no space
   427 	// Should fail as there is no space
   427 	r=fs1.ReserveDriveSpace(gTestDrive,0x10000);
   428 	r=fs1.ReserveDriveSpace(gTestDrive,0x10000);
   428 	test(r==KErrDiskFull);
   429 	test_Value(r, r == KErrDiskFull);
   429 
   430 
   430 	SynchronousClose(fs1);
   431 	SynchronousClose(fs1);
   431 	SynchronousClose(fs2);
   432 	SynchronousClose(fs2);
   432 	}
   433 	}
   433 
   434 
   450 	
   451 	
   451     FormatDrive();
   452     FormatDrive();
   452 
   453 
   453 	RFs fs;
   454 	RFs fs;
   454 	TInt r=fs.Connect();
   455 	TInt r=fs.Connect();
   455 	test(r==KErrNone);
   456 	test_KErrNone(r);
   456 	TInt64 freeA(0);
   457 	TInt64 freeA(0);
   457 	TInt64 freeB(0);
   458 	TInt64 freeB(0);
   458 	RFile file;
   459 	RFile file;
   459 
   460 
   460 									//start with known amount of space
   461 									//start with known amount of space
   463 	TBuf<20> buf;
   464 	TBuf<20> buf;
   464 	buf=KTestFile;
   465 	buf=KTestFile;
   465 	buf[0]=(TUint16)gCh;
   466 	buf[0]=(TUint16)gCh;
   466 
   467 
   467 	r=file.Replace(fs, buf, EFileWrite);
   468 	r=file.Replace(fs, buf, EFileWrite);
   468 	test(r==KErrNone);
   469 	test_KErrNone(r);
   469 
   470 
   470 	r=file.Write(KTestData());
   471 	r=file.Write(KTestData());
   471 	test(r==KErrNone);
   472 	test_KErrNone(r);
   472 
   473 
   473 	file.Close();
   474 	file.Close();
   474 
   475 
   475 	r=fs.ReserveDriveSpace(gTestDrive,0x10000);		//reserve some disk space
   476 	r=fs.ReserveDriveSpace(gTestDrive,0x10000);		//reserve some disk space
   476 	test(r==KErrNone);
   477 	test_KErrNone(r);
   477 		
   478 		
   478 	FillUpDisk();									//fill up the disk
   479 	FillUpDisk();									//fill up the disk
   479 
   480 
   480 	TVolumeInfo v;									//get disk space
   481 	TVolumeInfo v;									//get disk space
   481 	r=fs.Volume(v,gTestDrive);
   482 	r=fs.Volume(v,gTestDrive);
   482 	test(r==KErrNone);
   483 	test_KErrNone(r);
   483 	freeA=v.iFree;
   484 	freeA=v.iFree;
   484 
   485 
   485 	r=fs.GetReserveAccess(gTestDrive);				//get access to reserve space
   486 	r=fs.GetReserveAccess(gTestDrive);				//get access to reserve space
   486 	test(r==KErrNone);
   487 	test_KErrNone(r);
   487 
   488 
   488 	r=fs.Volume(v,gTestDrive);						//get disk space
   489 	r=fs.Volume(v,gTestDrive);						//get disk space
   489 	test(r==KErrNone);
   490 	test_KErrNone(r);
   490 	freeB=v.iFree;
   491 	freeB=v.iFree;
   491 	
   492 	
   492 	r=fs.ReleaseReserveAccess(gTestDrive);			//release reserve space
   493 	r=fs.ReleaseReserveAccess(gTestDrive);			//release reserve space
   493 	test(r==KErrNone);
   494 	test_KErrNone(r);
   494 	
   495 	
   495 	test(freeA == (freeB - 0x10000));				//test difference in space is equal to the amount reserved
   496 	test(freeA == (freeB - 0x10000));				//test difference in space is equal to the amount reserved
   496 
   497 
   497 	r=fs.Volume(v,gTestDrive);						//get disk space
   498 	r=fs.Volume(v,gTestDrive);						//get disk space
   498 	test(r==KErrNone);
   499 	test_KErrNone(r);
   499 	freeB=v.iFree;
   500 	freeB=v.iFree;
   500 	test(freeA == freeB);							//check reading is still correct
   501 	test(freeA == freeB);							//check reading is still correct
   501 	
   502 	
   502 	TBuf <20> dir = KDir();
   503 	TBuf <20> dir = KDir();
   503 	dir[0]=(TUint16)gCh;
   504 	dir[0]=(TUint16)gCh;
   504 	r=fs.MkDir(dir);
   505 	r=fs.MkDir(dir);
   505 	test(r==KErrDiskFull);
   506 	test_Value(r, r == KErrDiskFull);
   506 
   507 
   507 	r=fs.MkDirAll(dir);
   508 	r=fs.MkDirAll(dir);
   508 	test(r==KErrDiskFull);
   509 	test_Value(r, r == KErrDiskFull);
   509 
   510 
   510 	TFileName temp;
   511 	TFileName temp;
   511 	TBuf<5> drv = KDrv();
   512 	TBuf<5> drv = KDrv();
   512 	drv[0]=(TUint16)gCh;
   513 	drv[0]=(TUint16)gCh;
   513 	r=file.Temp(fs, drv, temp, EFileWrite);
   514 	r=file.Temp(fs, drv, temp, EFileWrite);
   514 	test(r==KErrDiskFull);
   515 	test_Value(r, r == KErrDiskFull);
   515 
   516 
   516 	r=file.Replace(fs, buf, EFileWrite);
   517 	r=file.Replace(fs, buf, EFileWrite);
   517 	test(r==KErrDiskFull);
   518 	test_Value(r, r == KErrDiskFull);
   518 
   519 
   519 	r=file.Create(fs, buf, EFileWrite);
   520 	r=file.Create(fs, buf, EFileWrite);
   520 	test(r==KErrDiskFull);
   521 	test_Value(r, r == KErrDiskFull);
   521 
   522 
   522 	r=file.Open(fs, buf, EFileWrite);
   523 	r=file.Open(fs, buf, EFileWrite);
   523 	test(r==KErrNone);
   524 	test_KErrNone(r);
   524 
   525 
   525 	r=file.Write(128, KTestData());
   526 	r=file.Write(128, KTestData());
   526 
   527 
   527 	if ((gDriveCacheFlags & EFileCacheWriteOn) && (r == KErrNone))
   528 	if ((gDriveCacheFlags & EFileCacheWriteOn) && (r == KErrNone))
   528 		r = file.Flush();
   529 		r = file.Flush();
   529 	
   530 	
   530 	test(r==KErrDiskFull);
   531 	test_Value(r, r == KErrDiskFull);
   531 
   532 
   532 	r=file.SetSize(0x1000);
   533 	r=file.SetSize(0x1000);
   533 	test(r==KErrDiskFull);
   534 	test_Value(r, r == KErrDiskFull);
   534 
   535 
   535 	r=file.SetAtt(KEntryAttHidden,0); 
   536 	r=file.SetAtt(KEntryAttHidden,0); 
   536 	test(r==KErrDiskFull);
   537 	test_Value(r, r == KErrDiskFull);
   537 
   538 
   538 	TTime dtime;
   539 	TTime dtime;
   539 	r=file.SetModified(dtime); 
   540 	r=file.SetModified(dtime); 
   540 	test(r==KErrDiskFull);
   541 	test_Value(r, r == KErrDiskFull);
   541 
   542 
   542 	r=file.Set(dtime,KEntryAttHidden,0);
   543 	r=file.Set(dtime,KEntryAttHidden,0);
   543 	test(r==KErrDiskFull);
   544 	test_Value(r, r == KErrDiskFull);
   544 
   545 
   545 	r=file.Rename(buf);
   546 	r=file.Rename(buf);
   546 	test(r==KErrDiskFull);
   547 	test_Value(r, r == KErrDiskFull);
   547 
   548 
   548 	file.Close();
   549 	file.Close();
   549 
   550 
   550 
   551 
   551 	// Test that we can create a temporary file & write to it after acquiring reserved access, 
   552 	// Test that we can create a temporary file & write to it after acquiring reserved access, 
   552 	r=fs.GetReserveAccess(gTestDrive);				//get access to reserve space
   553 	r=fs.GetReserveAccess(gTestDrive);				//get access to reserve space
   553 	test(r==KErrNone);
   554 	test_KErrNone(r);
   554 
   555 
   555 	r=fs.Volume(v,gTestDrive);						//get disk space
   556 	r=fs.Volume(v,gTestDrive);						//get disk space
   556 	test(r==KErrNone);
   557 	test_KErrNone(r);
   557 	freeA = v.iFree;
   558 	freeA = v.iFree;
   558 
   559 
   559 	r=file.Temp(fs, drv, temp, EFileWrite);
   560 	r=file.Temp(fs, drv, temp, EFileWrite);
   560 	test(r==KErrNone);
   561 	test_KErrNone(r);
   561 
   562 
   562 	r = file.Write(KTestData());
   563 	r = file.Write(KTestData());
   563 	test (r == KErrNone);
   564 	test_KErrNone(r);
   564 
   565 
   565 	// If write caching is enabled, call RFs::Entry() to flush the file "anonymously"
   566 	// If write caching is enabled, call RFs::Entry() to flush the file "anonymously"
   566 	if ((gDriveCacheFlags & EFileCacheWriteOn) && (r == KErrNone))
   567 	if ((gDriveCacheFlags & EFileCacheWriteOn) && (r == KErrNone))
   567 		{
   568 		{
   568 		r = file.Flush();
   569 		r = file.Flush();
   569 		test (r == KErrNone);
   570 		test_KErrNone(r);
   570 		}
   571 		}
   571 
   572 
   572 	r=fs.Volume(v,gTestDrive);						//get disk space
   573 	r=fs.Volume(v,gTestDrive);						//get disk space
   573 	test(r==KErrNone);
   574 	test_KErrNone(r);
   574 	freeB = v.iFree;
   575 	freeB = v.iFree;
   575 	test (freeB < freeA);
   576 	test (freeB < freeA);
   576 
   577 
   577 	file.Close();
   578 	file.Close();
   578 
   579 
   579 	r=fs.ReleaseReserveAccess(gTestDrive);			//release reserve space
   580 	r=fs.ReleaseReserveAccess(gTestDrive);			//release reserve space
   580 	test(r==KErrNone);
   581 	test_KErrNone(r);
   581 
   582 
   582 
   583 
   583 	TBuf<20> newname =KNewName();
   584 	TBuf<20> newname =KNewName();
   584 	newname[0]=(TUint16)gCh;
   585 	newname[0]=(TUint16)gCh;
   585 	r=fs.Rename(buf, newname);
   586 	r=fs.Rename(buf, newname);
   586 	test(r==KErrDiskFull);
   587 	test_Value(r, r == KErrDiskFull);
   587 
   588 
   588 	r=fs.Replace(buf, newname);
   589 	r=fs.Replace(buf, newname);
   589 	test(r==KErrDiskFull);
   590 	test_Value(r, r == KErrDiskFull);
   590 
   591 
   591 	r=fs.SetEntry(buf, dtime, KEntryAttHidden, 0);
   592 	r=fs.SetEntry(buf, dtime, KEntryAttHidden, 0);
   592 	test(r==KErrDiskFull);
   593 	test_Value(r, r == KErrDiskFull);
   593 
   594 
   594 	r=fs.CreatePrivatePath(gTestDrive);
   595 	r=fs.CreatePrivatePath(gTestDrive);
   595 	test(r==KErrDiskFull);
   596 	test_Value(r, r == KErrDiskFull);
   596 
   597 
   597 	r=fs.SetVolumeLabel(_L("Moooo"), gTestDrive);
   598 	r=fs.SetVolumeLabel(_L("Moooo"), gTestDrive);
   598 	test(r==KErrDiskFull);	
   599 	test_Value(r, r == KErrDiskFull);	
   599 
   600 
   600 	r=fs.SetModified(buf, dtime);
   601 	r=fs.SetModified(buf, dtime);
   601 	test(r==KErrDiskFull);	
   602 	test_Value(r, r == KErrDiskFull);	
   602 
   603 
   603 	SynchronousClose(fs);
   604 	SynchronousClose(fs);
   604 	}
   605 	}
   605 
   606 
   606 	
   607 	
   624 	RFs fs1;
   625 	RFs fs1;
   625 	RFs fs2;
   626 	RFs fs2;
   626 	TInt r=KErrNone;
   627 	TInt r=KErrNone;
   627 
   628 
   628 	r=fs1.Connect();
   629 	r=fs1.Connect();
   629 	test(r==KErrNone);
   630 	test_KErrNone(r);
   630 	r=fs2.Connect();
   631 	r=fs2.Connect();
   631 	test(r==KErrNone);
   632 	test_KErrNone(r);
   632 
   633 
   633 	FormatDrive();
   634 	FormatDrive();
   634 
   635 
   635 	r=fs1.ReserveDriveSpace(gTestDrive,0x10000);		
   636 	r=fs1.ReserveDriveSpace(gTestDrive,0x10000);		
   636 	test(r==KErrNone);
   637 	test_KErrNone(r);
   637 
   638 
   638 	r=fs2.ReserveDriveSpace(gTestDrive,0x10000);		
   639 	r=fs2.ReserveDriveSpace(gTestDrive,0x10000);		
   639 	test(r==KErrNone);
   640 	test_KErrNone(r);
   640 
   641 
   641 	FillUpDisk();									
   642 	FillUpDisk();									
   642 
   643 
   643 	r=fs1.GetReserveAccess(gTestDrive);				
   644 	r=fs1.GetReserveAccess(gTestDrive);				
   644 	test(r==KErrNone);
   645 	test_KErrNone(r);
   645 
   646 
   646 	TBuf<20> dir = KDir();
   647 	TBuf<20> dir = KDir();
   647 	dir[0]=(TUint16)gCh;
   648 	dir[0]=(TUint16)gCh;
   648 
   649 
   649 
   650 
   650 	r=fs2.MkDir(dir);
   651 	r=fs2.MkDir(dir);
   651 	test(r==KErrDiskFull);
   652 	test_Value(r, r == KErrDiskFull);
   652 
   653 
   653 	r=fs1.ReserveDriveSpace(gTestDrive,0); //can not release reserve space while you have reserve access
   654 	r=fs1.ReserveDriveSpace(gTestDrive,0); //can not release reserve space while you have reserve access
   654 	test(r==KErrInUse);
   655 	test_Value(r, r == KErrInUse);
   655 
   656 
   656 	r=fs1.ReleaseReserveAccess(gTestDrive);				
   657 	r=fs1.ReleaseReserveAccess(gTestDrive);				
   657 	test(r==KErrNone);
   658 	test_KErrNone(r);
   658 
   659 
   659 	r=fs1.ReserveDriveSpace(gTestDrive,0); 
   660 	r=fs1.ReserveDriveSpace(gTestDrive,0); 
   660 	test(r==KErrNone);
   661 	test_KErrNone(r);
   661 
   662 
   662 	r=fs2.MkDir(dir);
   663 	r=fs2.MkDir(dir);
   663 	test(r==KErrNone);
   664 	test_KErrNone(r);
   664 
   665 
   665 	SynchronousClose(fs1);
   666 	SynchronousClose(fs1);
   666 	SynchronousClose(fs2);
   667 	SynchronousClose(fs2);
   667 	}
   668 	}
   668 
   669 
   739 	TInt64 diff(0);
   740 	TInt64 diff(0);
   740 	RThread t[KNumberThreads];
   741 	RThread t[KNumberThreads];
   741 	TRequestStatus tStat[KNumberThreads];
   742 	TRequestStatus tStat[KNumberThreads];
   742 
   743 
   743 	r=fsess.Connect();
   744 	r=fsess.Connect();
   744 	test(r==KErrNone);
   745 	test_KErrNone(r);
   745 
   746 
   746 	FormatDrive();
   747 	FormatDrive();
   747 
   748 
   748 	r= fsess.ShareAuto();
   749 	r= fsess.ShareAuto();
   749 	test(r==KErrNone);
   750 	test_KErrNone(r);
   750 
   751 
   751 	GetFreeDiskSpace(free1);
   752 	GetFreeDiskSpace(free1);
   752 
   753 
   753 	fsess.ReserveDriveSpace(gTestDrive,0x1000);
   754 	fsess.ReserveDriveSpace(gTestDrive,0x1000);
   754 		
   755 		
   755 	r = t[0].Create(_L("Sub_Thread1"),RsrvSpaceThread,KDefaultStackSize,KHeapSize,KHeapSize,&fsess); 
   756 	r = t[0].Create(_L("Sub_Thread1"),RsrvSpaceThread,KDefaultStackSize,KHeapSize,KHeapSize,&fsess); 
   756 	test(r==KErrNone);
   757 	test_KErrNone(r);
   757 
   758 
   758 	t[0].Rendezvous(tStat[0]);
   759 	t[0].Rendezvous(tStat[0]);
   759 	t[0].Resume();
   760 	t[0].Resume();
   760 
   761 
   761 	User::WaitForRequest(tStat[0]);
   762 	User::WaitForRequest(tStat[0]);
   762 
   763 
   763 	t[0].Close();
   764 	t[0].Close();
   764 	test(tStat[0]==KErrNone);
   765 	test(tStat[0]==KErrNone);
   765 
   766 
   766 	r = t[1].Create(_L("Sub_Thread2"),SessCloseThread,KDefaultStackSize,KHeapSize,KHeapSize,&fsess); 
   767 	r = t[1].Create(_L("Sub_Thread2"),SessCloseThread,KDefaultStackSize,KHeapSize,KHeapSize,&fsess); 
   767 	test(r==KErrNone);
   768 	test_KErrNone(r);
   768 
   769 
   769 	t[1].Rendezvous(tStat[1]);
   770 	t[1].Rendezvous(tStat[1]);
   770 	t[1].Resume();
   771 	t[1].Resume();
   771 
   772 
   772 	User::WaitForRequest(tStat[1]);
   773 	User::WaitForRequest(tStat[1]);
   818 	TBuf<25> fileName;
   819 	TBuf<25> fileName;
   819 	fileName = KFileFiller;
   820 	fileName = KFileFiller;
   820 	fileName[0] = (TUint16)gCh;
   821 	fileName[0] = (TUint16)gCh;
   821 
   822 
   822 	err = theTestSession.Connect();
   823 	err = theTestSession.Connect();
   823 	test(err == KErrNone);
   824 	test_KErrNone(err);
   824 
   825 
   825 	// determine the cluster size
   826 	// determine the cluster size
   826 	RFile theFile;
   827 	RFile theFile;
   827 	err=theFile.Replace(theTestSession, fileName, EFileShareAny | EFileWrite);
   828 	err=theFile.Replace(theTestSession, fileName, EFileShareAny | EFileWrite);
   828 	test(err==KErrNone);
   829 	test_KErrNone(err);
   829 
   830 
   830 	// Neither notifier should be triggered here
   831 	// Neither notifier should be triggered here
   831 	err = theFile.SetSize(1);
   832 	err = theFile.SetSize(1);
   832 	test(KErrNone == err);
   833 	test(KErrNone == err);
   833 	theFile.Close();
   834 	theFile.Close();
   874 	// Main part of the test starts here.
   875 	// Main part of the test starts here.
   875 	// First we create a new file, then we increase its size to cause the
   876 	// First we create a new file, then we increase its size to cause the
   876 	// "Normal" notifier to trigger but not the "Reserved" notifier
   877 	// "Normal" notifier to trigger but not the "Reserved" notifier
   877 	//
   878 	//
   878 	err=theFile.Replace(theTestSession, fileName, EFileShareAny | EFileWrite);
   879 	err=theFile.Replace(theTestSession, fileName, EFileShareAny | EFileWrite);
   879 	test(err==KErrNone);
   880 	test_KErrNone(err);
   880 	test((statNrm == KRequestPending) && (statRes == KRequestPending));
   881 	test((statNrm == KRequestPending) && (statRes == KRequestPending));
   881 
   882 
   882 	// Neither notifier should be triggered here
   883 	// Neither notifier should be triggered here
   883 	err = theFile.SetSize(resSpace);
   884 	err = theFile.SetSize(resSpace);
   884 	test(KErrNone == err);
   885 	test(KErrNone == err);
   899 	test((statNrm == KRequestPending) && (statRes == KRequestPending));
   900 	test((statNrm == KRequestPending) && (statRes == KRequestPending));
   900 
   901 
   901 	err = theTestSession.ReserveDriveSpace(gTestDrive, resSpace * 3);
   902 	err = theTestSession.ReserveDriveSpace(gTestDrive, resSpace * 3);
   902 	if (err != KErrArgument)	// will have exceeded limit if resSpace = 32K
   903 	if (err != KErrArgument)	// will have exceeded limit if resSpace = 32K
   903 		{
   904 		{
   904 		test(err == KErrNone);
   905 		test_KErrNone(err);
   905 		test((statNrm == KErrNone) && (statRes == KRequestPending));
   906 		test((statNrm == KErrNone) && (statRes == KRequestPending));
   906 		}
   907 		}
   907 
   908 
   908 	//
   909 	//
   909 	// All done - tidy up.
   910 	// All done - tidy up.
   924     TUint att;
   925     TUint att;
   925     TTime time;
   926     TTime time;
   926     
   927     
   927     RFs fs;
   928     RFs fs;
   928     TInt err = fs.Connect();
   929     TInt err = fs.Connect();
   929     test(err == KErrNone);
   930     test_KErrNone(err);
   930 
   931 
   931     RFile file;
   932     RFile file;
   932     TBuf<20> fileName;
   933     TBuf<20> fileName;
   933     fileName = KTestFile;
   934     fileName = KTestFile;
   934     fileName[0] = (TUint16)gCh;
   935     fileName[0] = (TUint16)gCh;
   935     
   936     
   936     err = fs.ReserveDriveSpace(gTestDrive,0x10000); 
   937     err = fs.ReserveDriveSpace(gTestDrive,0x10000); 
   937     test(err == KErrNone);
   938     test_KErrNone(err);
   938 
   939 
   939     err = file.Replace(fs, fileName, EFileWrite);
   940     err = file.Replace(fs, fileName, EFileWrite);
   940     test(err == KErrNone);
   941     test_KErrNone(err);
   941 
   942 
   942     err = file.Write(KTestData);
   943     err = file.Write(KTestData);
   943     test(err == KErrNone);
   944     test_KErrNone(err);
   944     
   945     
   945     err = file.Flush();
   946     err = file.Flush();
   946     test(err == KErrNone);
   947     test_KErrNone(err);
   947     
   948     
   948     file.Close();
   949     file.Close();
   949     
   950     
   950     err = file.Open(fs, fileName, EFileRead);
   951     err = file.Open(fs, fileName, EFileRead);
   951     test(err == KErrNone);
   952     test_KErrNone(err);
   952     
   953     
   953     err = file.Att(att);
   954     err = file.Att(att);
   954     test(err == KErrNone);
   955     test_KErrNone(err);
   955     
   956     
   956     err = file.Modified(time);
   957     err = file.Modified(time);
   957     test(err == KErrNone);
   958     test_KErrNone(err);
   958     
   959     
   959     file.Close();
   960     file.Close();
   960     
   961     
   961     FillUpDisk();
   962     FillUpDisk();
   962     
   963     
   963     err = file.Open(fs, fileName, EFileRead);
   964     err = file.Open(fs, fileName, EFileRead);
   964     test(err == KErrNone);
   965     test_KErrNone(err);
   965     
   966     
   966     TUint att1;
   967     TUint att1;
   967     err = file.Att(att1);
   968     err = file.Att(att1);
   968     test(err == KErrNone);
   969     test_KErrNone(err);
   969     test(att1 == att);
   970     test(att1 == att);
   970     
   971     
   971     TTime time1;
   972     TTime time1;
   972     err = file.Modified(time1);
   973     err = file.Modified(time1);
   973     test(err == KErrNone);
   974     test_KErrNone(err);
   974     test(time1 == time);
   975     test(time1 == time);
   975     
   976     
   976     file.Close();
   977     file.Close();
   977     fs.Close();
   978     fs.Close();
   978     
   979     
   998 		}
   999 		}
   999 
  1000 
  1000     TVolumeInfo volInfo;
  1001     TVolumeInfo volInfo;
  1001 	
  1002 	
  1002 	TInt nRes = TheFs.Volume(volInfo,gTestDrive);
  1003 	TInt nRes = TheFs.Volume(volInfo,gTestDrive);
  1003 	test(nRes == KErrNone);
  1004 	test_KErrNone(nRes);
  1004 	
  1005 	
  1005     if(volInfo.iSize < K4Gig+K1MegaByte)
  1006     if(volInfo.iSize < K4Gig+K1MegaByte)
  1006 		{
  1007 		{
  1007 		test.Printf(_L("This test requires volume > 4G. Skipping.\n"));
  1008 		test.Printf(_L("This test requires volume > 4G. Skipping.\n"));
  1008 		return;
  1009 		return;
  1012     FormatDrive();
  1013     FormatDrive();
  1013 
  1014 
  1014     //-- find out media position of the data region start
  1015     //-- find out media position of the data region start
  1015     TFatBootSector bootSector;
  1016     TFatBootSector bootSector;
  1016     nRes = ReadBootSector(TheFs, gTestDrive, 0, bootSector);
  1017     nRes = ReadBootSector(TheFs, gTestDrive, 0, bootSector);
  1017     test(nRes == KErrNone);
  1018     test_KErrNone(nRes);
  1018     test(bootSector.IsValid());
  1019     test(bootSector.IsValid());
  1019 
  1020 
  1020     const TInt64 dataStartPos = bootSector.FirstDataSector() << KDefaultSectorLog2;
  1021     const TInt64 dataStartPos = bootSector.FirstDataSector() << KDefaultSectorLog2;
  1021     const TInt64 lowRegion = K4Gig - dataStartPos - K1MegaByte; 
  1022     const TInt64 lowRegion = K4Gig - dataStartPos - K1MegaByte; 
  1022 
  1023 
  1029     const TUint32 DummyFileLen = (TUint32)(lowRegion / MaxDummyFiles);
  1030     const TUint32 DummyFileLen = (TUint32)(lowRegion / MaxDummyFiles);
  1030 	TInt i;
  1031 	TInt i;
  1031     for(i=0; i<MaxDummyFiles; ++i)
  1032     for(i=0; i<MaxDummyFiles; ++i)
  1032 		{
  1033 		{
  1033         nRes = CreateFileX(KBaseFN, i, DummyFileLen); 
  1034         nRes = CreateFileX(KBaseFN, i, DummyFileLen); 
  1034         test(nRes == KErrNone);
  1035         test_KErrNone(nRes);
  1035 		}
  1036 		}
  1036 
  1037 
  1037     //-- 3. create a real file that crosses 4G boundary
  1038     //-- 3. create a real file that crosses 4G boundary
  1038     nRes = CreateCheckableStuffedFile(TheFs, KBaseFN, 5*K1MegaByte);
  1039     nRes = CreateCheckableStuffedFile(TheFs, KBaseFN, 5*K1MegaByte);
  1039     test(nRes == KErrNone);
  1040     test_KErrNone(nRes);
  1040     
  1041     
  1041     test.Printf(_L("Verifying the file that crosses 4G boundary.\n"));
  1042     test.Printf(_L("Verifying the file that crosses 4G boundary.\n"));
  1042 
  1043 
  1043     nRes = VerifyCheckableFile(TheFs, KBaseFN);
  1044     nRes = VerifyCheckableFile(TheFs, KBaseFN);
  1044     test(nRes == KErrNone);
  1045     test_KErrNone(nRes);
  1045 
  1046 
  1046 	
  1047 	
  1047 	nRes = TheFs.Delete(KBaseFN);
  1048 	nRes = TheFs.Delete(KBaseFN);
  1048 	test(nRes == KErrNone);
  1049 	test_KErrNone(nRes);
  1049     for(i=0; i<MaxDummyFiles; ++i)
  1050     for(i=0; i<MaxDummyFiles; ++i)
  1050 	    {
  1051 	    {
  1051         nRes = DeleteFileX(KBaseFN, i); 
  1052         nRes = DeleteFileX(KBaseFN, i); 
  1052         test(nRes == KErrNone);
  1053         test_KErrNone(nRes);
  1053 		}
  1054 		}
  1054 	}
  1055 	}
  1055 
  1056 
  1056 //-----------------------------------------------------------------------------
  1057 //-----------------------------------------------------------------------------
  1057 
  1058 
  1072 			}
  1073 			}
  1073 
  1074 
  1074 	//get the number of the drive we are currently testing
  1075 	//get the number of the drive we are currently testing
  1075 	TInt r=0;
  1076 	TInt r=0;
  1076 	r=RFs::CharToDrive(gSessionPath[0],gTestDrive);
  1077 	r=RFs::CharToDrive(gSessionPath[0],gTestDrive);
  1077     test(r==KErrNone);
  1078     test_KErrNone(r);
  1078 
  1079 
  1079 	r=RFs::DriveToChar(gTestDrive,gCh);
  1080 	r=RFs::DriveToChar(gTestDrive,gCh);
  1080 	test(r==KErrNone);
  1081 	test_KErrNone(r);
  1081 
  1082 
  1082     TDriveInfo drv;
  1083     TDriveInfo drv;
  1083     r = TheFs.Drive(drv, gTestDrive);
  1084     r = TheFs.Drive(drv, gTestDrive);
  1084     test(r == KErrNone);
  1085     test_KErrNone(r);
  1085 
  1086 
  1086     if (Is_Win32(TheFs, gTestDrive))
  1087     if (Is_Win32(TheFs, gTestDrive))
  1087         {
  1088         {
  1088         test.Printf(_L("Skipping on emulator %C: drive\n"), gSessionPath[0]);
  1089         test.Printf(_L("Skipping on emulator %C: drive\n"), gSessionPath[0]);
  1089         return;
  1090         return;