kerneltest/f32test/server/t_rand.cpp
changeset 109 b3a1d9898418
parent 0 a41df078684a
child 257 3e88ff8f41d5
equal deleted inserted replaced
102:ef2a444a7410 109:b3a1d9898418
    13 // Description:
    13 // Description:
    14 // f32test\server\t_rand.cpp
    14 // f32test\server\t_rand.cpp
    15 // 
    15 // 
    16 //
    16 //
    17 
    17 
       
    18 #define __E32TEST_EXTENSION__
    18 #include <f32file.h>
    19 #include <f32file.h>
    19 #include <e32test.h>
    20 #include <e32test.h>
    20 #include <e32math.h>
    21 #include <e32math.h>
    21 #include <e32hal.h>
    22 #include <e32hal.h>
    22 #include "t_server.h"
    23 #include "t_server.h"
    41 
    42 
    42 	TUint8* bufPtr=(TUint8*)testBuf.Ptr();
    43 	TUint8* bufPtr=(TUint8*)testBuf.Ptr();
    43 	testBuf.SetLength(testBuf.MaxSize());
    44 	testBuf.SetLength(testBuf.MaxSize());
    44 	Mem::Fill(bufPtr,testBuf.MaxSize(),aCluster);
    45 	Mem::Fill(bufPtr,testBuf.MaxSize(),aCluster);
    45 	TInt r=aFile.Write(testBuf);
    46 	TInt r=aFile.Write(testBuf);
    46 	test(r==KErrNone);
    47 	test_KErrNone(r);
    47 	}
    48 	}
    48 
    49 
    49 LOCAL_C void SeekToCluster(RFile& aFile,TInt aCluster)
    50 LOCAL_C void SeekToCluster(RFile& aFile,TInt aCluster)
    50 //
    51 //
    51 // Seek to aCluster and check it is found correctly
    52 // Seek to aCluster and check it is found correctly
    52 //
    53 //
    53 	{
    54 	{
    54 	TBuf8<508> seekBuf(508);
    55 	TBuf8<508> seekBuf(508);
    55 	TInt r=aFile.Read(aCluster*testBuf.MaxSize(),seekBuf);
    56 	TInt r=aFile.Read(aCluster*testBuf.MaxSize(),seekBuf);
    56 	test(r==KErrNone);
    57 	test_KErrNone(r);
    57 	test(seekBuf[0]==(TUint8)aCluster && seekBuf[507]==(TUint8)aCluster);
    58 	test(seekBuf[0]==(TUint8)aCluster && seekBuf[507]==(TUint8)aCluster);
    58 	}
    59 	}
    59 
    60 
    60 LOCAL_C void SeekToCluster(RFile& aFile,TInt aCluster1,TInt aCluster2)
    61 LOCAL_C void SeekToCluster(RFile& aFile,TInt aCluster1,TInt aCluster2)
    61 //
    62 //
    62 // Seek to aCluster and check it is found correctly
    63 // Seek to aCluster and check it is found correctly
    63 //
    64 //
    64 	{
    65 	{
    65 	TBuf8<508> seekBuf(508);
    66 	TBuf8<508> seekBuf(508);
    66 	TInt r=aFile.Read(aCluster1*testBuf.MaxSize(),seekBuf);
    67 	TInt r=aFile.Read(aCluster1*testBuf.MaxSize(),seekBuf);
    67 	test(r==KErrNone);
    68 	test_KErrNone(r);
    68 	test(seekBuf[0]==(TUint8)aCluster1 && seekBuf[507]==(TUint8)aCluster1);
    69 	test(seekBuf[0]==(TUint8)aCluster1 && seekBuf[507]==(TUint8)aCluster1);
    69 	r=aFile.Read(aCluster2*testBuf.MaxSize(),seekBuf);
    70 	r=aFile.Read(aCluster2*testBuf.MaxSize(),seekBuf);
    70 	test(r==KErrNone);
    71 	test_KErrNone(r);
    71 	test(seekBuf[0]==(TUint8)aCluster2 && seekBuf[507]==(TUint8)aCluster2);
    72 	test(seekBuf[0]==(TUint8)aCluster2 && seekBuf[507]==(TUint8)aCluster2);
    72 	}
    73 	}
    73 
    74 
    74 LOCAL_C void ExhaustiveTest(RFile& aFile,TInt aCount1)
    75 LOCAL_C void ExhaustiveTest(RFile& aFile,TInt aCount1)
    75 //
    76 //
    98 
    99 
    99 	test.Next(_L("Create interleaved files"));
   100 	test.Next(_L("Create interleaved files"));
   100 	RFile f1,f2;
   101 	RFile f1,f2;
   101 //
   102 //
   102 	TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite);
   103 	TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite);
   103 	test(r==KErrNone);
   104 	test_KErrNone(r);
   104 	r=f2.Replace(TheFs,_L("BIGFILE2.TST"),EFileWrite);
   105 	r=f2.Replace(TheFs,_L("BIGFILE2.TST"),EFileWrite);
   105 	test(r==KErrNone);
   106 	test_KErrNone(r);
   106 //
   107 //
   107 	TInt maxListLength=4;
   108 	TInt maxListLength=4;
   108 	TInt i=0,k=0;
   109 	TInt i=0,k=0;
   109 	TInt countf1=0;
   110 	TInt countf1=0;
   110 	TInt countf2=0;
   111 	TInt countf2=0;
   145 	SeekToCluster(f1,5,5);
   146 	SeekToCluster(f1,5,5);
   146 
   147 
   147 	f1.Close();
   148 	f1.Close();
   148 	f2.Close();
   149 	f2.Close();
   149 	r=TheFs.Delete(_L("BIGFile1.tst"));
   150 	r=TheFs.Delete(_L("BIGFile1.tst"));
   150 	test(r==KErrNone);
   151 	test_KErrNone(r);
   151 	r=TheFs.Delete(_L("BIGFile2.tst"));
   152 	r=TheFs.Delete(_L("BIGFile2.tst"));
   152 	test(r==KErrNone);
   153 	test_KErrNone(r);
   153 	CheckDisk();
   154 	CheckDisk();
   154 	}
   155 	}
   155 
   156 
   156 LOCAL_C void Test2()
   157 LOCAL_C void Test2()
   157 //
   158 //
   161 
   162 
   162 	test.Next(_L("Regression Protection"));
   163 	test.Next(_L("Regression Protection"));
   163 	RFile f1,f2;
   164 	RFile f1,f2;
   164 //
   165 //
   165 	TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite);
   166 	TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite);
   166 	test(r==KErrNone);
   167 	test_KErrNone(r);
   167 	r=f2.Replace(TheFs,_L("BIGFILE2.TST"),EFileWrite);
   168 	r=f2.Replace(TheFs,_L("BIGFILE2.TST"),EFileWrite);
   168 	test(r==KErrNone);
   169 	test_KErrNone(r);
   169 //
   170 //
   170 	WriteCluster(f1,0);
   171 	WriteCluster(f1,0);
   171 	WriteCluster(f1,1);
   172 	WriteCluster(f1,1);
   172 	WriteCluster(f1,2);
   173 	WriteCluster(f1,2);
   173 	WriteCluster(f1,3);
   174 	WriteCluster(f1,3);
   180 	SeekToCluster(f1,4);
   181 	SeekToCluster(f1,4);
   181 //
   182 //
   182 	f1.Close();
   183 	f1.Close();
   183 	f2.Close();
   184 	f2.Close();
   184 	r=TheFs.Delete(_L("BIGFile1.tst"));
   185 	r=TheFs.Delete(_L("BIGFile1.tst"));
   185 	test(r==KErrNone);
   186 	test_KErrNone(r);
   186 	r=TheFs.Delete(_L("BIGFile2.tst"));
   187 	r=TheFs.Delete(_L("BIGFile2.tst"));
   187 	test(r==KErrNone);
   188 	test_KErrNone(r);
   188 	CheckDisk();
   189 	CheckDisk();
   189 	}
   190 	}
   190 
   191 
   191 LOCAL_C void Test3()
   192 LOCAL_C void Test3()
   192 //
   193 //
   198 	RFile f1;
   199 	RFile f1;
   199 	TheSeed=917824;
   200 	TheSeed=917824;
   200 	TInt i=0,j=0;
   201 	TInt i=0,j=0;
   201 //
   202 //
   202 	TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite);
   203 	TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite);
   203 	test(r==KErrNone);
   204 	test_KErrNone(r);
   204 	
   205 	
   205 	r=f1.SetSize(65534);
   206 	r=f1.SetSize(65534);
   206 	test(r==KErrNone);
   207 	test_KErrNone(r);
   207 
   208 
   208 	for(i=0;i<=15;i++)
   209 	for(i=0;i<=15;i++)
   209 		WriteCluster(f1,i);
   210 		WriteCluster(f1,i);
   210 
   211 
   211 	for (j=0;j<100;j++)
   212 	for (j=0;j<100;j++)
   215 		SeekToCluster(f1,cluster2,cluster1);
   216 		SeekToCluster(f1,cluster2,cluster1);
   216 		}
   217 		}
   217 
   218 
   218 	test.Next(_L("Increase Size"));
   219 	test.Next(_L("Increase Size"));
   219 	r=f1.SetSize(1048577);
   220 	r=f1.SetSize(1048577);
   220 	test(r==KErrNone || r==KErrDiskFull);
   221 	test_Value(r, r == KErrNone || r==KErrDiskFull);
   221 	if (r==KErrDiskFull)
   222 	if (r==KErrDiskFull)
   222 		{
   223 		{
   223 		test.Printf(_L("File too big\n"));
   224 		test.Printf(_L("File too big\n"));
   224 		f1.Close();
   225 		f1.Close();
   225 		return;
   226 		return;
   233 		SeekToCluster(f1,cluster2,cluster1);
   234 		SeekToCluster(f1,cluster2,cluster1);
   234 		}
   235 		}
   235 
   236 
   236 	TInt newPos=8192;
   237 	TInt newPos=8192;
   237 	r=f1.Seek(ESeekStart,newPos);
   238 	r=f1.Seek(ESeekStart,newPos);
   238 	test(r==KErrNone);
   239 	test_KErrNone(r);
   239 
   240 
   240 	test.Next(_L("Write more data"));
   241 	test.Next(_L("Write more data"));
   241 	for(i=16;i<83;i++)
   242 	for(i=16;i<83;i++)
   242 		WriteCluster(f1,i);
   243 		WriteCluster(f1,i);
   243 
   244 
   249 		SeekToCluster(f1,cluster2,cluster1);
   250 		SeekToCluster(f1,cluster2,cluster1);
   250 		}
   251 		}
   251 
   252 
   252 	test.Next(_L("Reduce file size"));
   253 	test.Next(_L("Reduce file size"));
   253 	r=f1.SetSize(135000);
   254 	r=f1.SetSize(135000);
   254 	test(r==KErrNone);
   255 	test_KErrNone(r);
   255 
   256 
   256 	test.Next(_L("Test data still present"));
   257 	test.Next(_L("Test data still present"));
   257 	for (j=0;j<200;j++)
   258 	for (j=0;j<200;j++)
   258 		{
   259 		{
   259 		TInt cluster1=Math::Rand(TheSeed)%31;
   260 		TInt cluster1=Math::Rand(TheSeed)%31;
   282 //
   283 //
   283 	: iFile(*aFile), iPos(0)
   284 	: iFile(*aFile), iPos(0)
   284 	{
   285 	{
   285 
   286 
   286 	TInt r=iFile.Read(0,iData);
   287 	TInt r=iFile.Read(0,iData);
   287 	test(r==KErrNone);
   288 	test_KErrNone(r);
   288 	}
   289 	}
   289 
   290 
   290 void TFileReader::Next(TUint8& aVal,TInt& aLength)
   291 void TFileReader::Next(TUint8& aVal,TInt& aLength)
   291 //
   292 //
   292 // Read aLength contiguous bytes with aVal
   293 // Read aLength contiguous bytes with aVal
   294 	{
   295 	{
   295 
   296 
   296 	if (iPos==iData.Length())
   297 	if (iPos==iData.Length())
   297 		{
   298 		{
   298 		TInt r=iFile.Read(iData);
   299 		TInt r=iFile.Read(iData);
   299 		test(r==KErrNone);
   300 		test_KErrNone(r);
   300 		iPos=0;
   301 		iPos=0;
   301 		if (iData.Length()==0)
   302 		if (iData.Length()==0)
   302 			{
   303 			{
   303 			aLength=0;
   304 			aLength=0;
   304 			return;
   305 			return;
   424 
   425 
   425 	RFile f[KMaxFiles];
   426 	RFile f[KMaxFiles];
   426 	HBufC8* dataBuf=HBufC8::NewL(KMaxBufferLength);
   427 	HBufC8* dataBuf=HBufC8::NewL(KMaxBufferLength);
   427 
   428 
   428 	TInt r=f[0].Replace(TheFs,_L("TEST1.DAT"),EFileWrite);
   429 	TInt r=f[0].Replace(TheFs,_L("TEST1.DAT"),EFileWrite);
   429 	test(r==KErrNone);
   430 	test_KErrNone(r);
   430 	r=f[1].Replace(TheFs,_L("TEST2.DAT"),EFileWrite);
   431 	r=f[1].Replace(TheFs,_L("TEST2.DAT"),EFileWrite);
   431 	test(r==KErrNone);
   432 	test_KErrNone(r);
   432 	r=f[2].Replace(TheFs,_L("TEST3.DAT"),EFileWrite);
   433 	r=f[2].Replace(TheFs,_L("TEST3.DAT"),EFileWrite);
   433 	test(r==KErrNone);
   434 	test_KErrNone(r);
   434 	r=f[3].Replace(TheFs,_L("TEST4.DAT"),EFileWrite);
   435 	r=f[3].Replace(TheFs,_L("TEST4.DAT"),EFileWrite);
   435 	test(r==KErrNone);
   436 	test_KErrNone(r);
   436 	
   437 	
   437 	TInt size=0;
   438 	TInt size=0;
   438 	TInt iteration=0;
   439 	TInt iteration=0;
   439 
   440 
   440 	FOREVER
   441 	FOREVER
   455 			{
   456 			{
   456 			TInt fileNum=(order+i)%KMaxFiles;
   457 			TInt fileNum=(order+i)%KMaxFiles;
   457 			TInt s=len*mult[fileNum];
   458 			TInt s=len*mult[fileNum];
   458 			TInt filePos=pos*mult[fileNum];
   459 			TInt filePos=pos*mult[fileNum];
   459 			r=f[fileNum].Seek(ESeekStart,filePos);
   460 			r=f[fileNum].Seek(ESeekStart,filePos);
   460 			test(r==KErrNone);
   461 			test_KErrNone(r);
   461 
   462 
   462 			while(s>0)
   463 			while(s>0)
   463 				{
   464 				{
   464 				TInt l=(s>KMaxBufferLength) ? KMaxBufferLength : s;
   465 				TInt l=(s>KMaxBufferLength) ? KMaxBufferLength : s;
   465 				dataBuf->Des().SetLength(l);
   466 				dataBuf->Des().SetLength(l);
   469 				if ((gDriveCacheFlags & EFileCacheWriteOn) && (r == KErrNone))
   470 				if ((gDriveCacheFlags & EFileCacheWriteOn) && (r == KErrNone))
   470 					r = f[fileNum].Flush();
   471 					r = f[fileNum].Flush();
   471 			
   472 			
   472 				if (r==KErrDiskFull)
   473 				if (r==KErrDiskFull)
   473 					goto End;
   474 					goto End;
   474 				test(r==KErrNone);
   475 				test_KErrNone(r);
   475 				s-=l;
   476 				s-=l;
   476 				}
   477 				}
   477 			
   478 			
   478 			}
   479 			}
   479 
   480 
   490 			test.Printf(_L("\nReduceSize newsize=%d\n"),size);
   491 			test.Printf(_L("\nReduceSize newsize=%d\n"),size);
   491 			for (TInt i=0;i<KMaxFiles;i++)
   492 			for (TInt i=0;i<KMaxFiles;i++)
   492 				{
   493 				{
   493 				TInt fileNum=(order+i)%KMaxFiles;
   494 				TInt fileNum=(order+i)%KMaxFiles;
   494 				r=f[fileNum].SetSize(size*mult[fileNum]);
   495 				r=f[fileNum].SetSize(size*mult[fileNum]);
   495 				test(r==KErrNone);
   496 				test_KErrNone(r);
   496 				}
   497 				}
   497 			CheckFileContents(&f[0]);
   498 			CheckFileContents(&f[0]);
   498 			}
   499 			}
   499 		}
   500 		}
   500 End:
   501 End: