kerneltest/f32test/server/t_filecache.cpp
changeset 176 af6ec97d9189
parent 134 95847726fe57
child 297 b2826f67641f
--- a/kerneltest/f32test/server/t_filecache.cpp	Wed Jun 23 11:59:44 2010 +0100
+++ b/kerneltest/f32test/server/t_filecache.cpp	Wed Jun 23 12:52:28 2010 +0100
@@ -321,11 +321,24 @@
 
 	test.Printf(_L("Writing to file..."));
 
-	r = f.Write(pos, writePtr);
-	test_KErrNone(r);
+	// now we have gobbled all or most of memory, the next write can fail
+	// if it does keep decommitting memory until it succeeds and then test that the file size is correct
+	commitEnd = 0;
+	do {
+
+		r = f.Write(pos, writePtr);
+		test_Value(r, r == KErrNoMemory || r == KErrNone);
+		if (r == KErrNoMemory)
+			{
+			chunk.Decommit(commitEnd,KPageSize);
+			commitEnd += KPageSize;
+			}
+		}
+	while (r == KErrNoMemory);
+
 	pos+= writePtr.Length();
 
-	test.Printf(_L("Setting size of file ..."));
+	test.Printf(_L("Gsetting size of file ..."));
 	r = f.Size(fileSize);
 	test_KErrNone(r);
 	test_Equal(fileSize,pos);
@@ -549,6 +562,9 @@
 	r = f.Replace(TheFs, testFile, EFileReadBuffered | EFileWrite | EFileWriteBuffered);
 	test_KErrNone(r);
 
+	r = f.SetSize(gFileCacheConfig.iCacheSize);
+	test_KErrNone(r);
+
 	RTimer timer;
 	timer.CreateLocal();
 	TRequestStatus reqStat;
@@ -1888,6 +1904,10 @@
 //TheFs.SetDebugRegister(KCACHE);
 			DoTests(gDrive);
 //TheFs.SetDebugRegister(0);
+
+		if ((gVolInfo.iDrive.iMediaAtt & KMediaAttFormattable))
+			Format(gDrive);
+
 			test.End();
 //			}
 		}