kerneltest/f32test/fsstress/t_ramstr.cpp
branchRCL_3
changeset 257 3e88ff8f41d5
parent 256 c1f20ce4abcf
equal deleted inserted replaced
256:c1f20ce4abcf 257:3e88ff8f41d5
    13 // Description:
    13 // Description:
    14 // f32test\fsstress\t_ramstr.cpp
    14 // f32test\fsstress\t_ramstr.cpp
    15 // 
    15 // 
    16 //
    16 //
    17 
    17 
    18 #define	__E32TEST_EXTENSION__
       
    19 #include <f32file.h>
    18 #include <f32file.h>
    20 #include <e32test.h>
    19 #include <e32test.h>
    21 #include <e32math.h>
    20 #include <e32math.h>
    22 #include <e32hal.h>
    21 #include <e32hal.h>
    23 #include "t_stress.h"
    22 #include "t_stress.h"
    82 	{
    81 	{
    83 
    82 
    84 	TBuf<128> fileName=aBaseName;
    83 	TBuf<128> fileName=aBaseName;
    85 	fileName.AppendNum(aX);
    84 	fileName.AppendNum(aX);
    86 	TInt r=TheFs.Delete(fileName);
    85 	TInt r=TheFs.Delete(fileName);
    87 	test_KErrNone(r);
    86 	test(r==KErrNone);
    88 //	r=TheFs.CheckDisk(fileName);
    87 //	r=TheFs.CheckDisk(fileName);
    89 //	if (r!=KErrNone && r!=KErrNotSupported)
    88 //	if (r!=KErrNone && r!=KErrNotSupported)
    90 //		{
    89 //		{
    91 //		test.Printf(_L("ERROR:: CheckDisk returned %d\n"),r);
    90 //		test.Printf(_L("ERROR:: CheckDisk returned %d\n"),r);
    92 //		test_KErrNone(r);
    91 //		test(r==KErrNone);
    93 //		}
    92 //		}
    94 	test.Printf(_L("Deleted File %d\n"),aX);
    93 	test.Printf(_L("Deleted File %d\n"),aX);
    95 	return(KErrNone);
    94 	return(KErrNone);
    96 	}
    95 	}
    97 
    96 
   102 	{
   101 	{
   103 	TUint8* bufPtr=(TUint8*)testBuf.Ptr();
   102 	TUint8* bufPtr=(TUint8*)testBuf.Ptr();
   104 	testBuf.SetLength(testBuf.MaxSize());
   103 	testBuf.SetLength(testBuf.MaxSize());
   105 	Mem::Fill(bufPtr,testBuf.MaxSize(),aCluster);
   104 	Mem::Fill(bufPtr,testBuf.MaxSize(),aCluster);
   106 	TInt r=aFile.Write(testBuf);
   105 	TInt r=aFile.Write(testBuf);
   107 	test_KErrNone(r);
   106 	test(r==KErrNone);
   108 	}
   107 	}
   109 
   108 
   110 LOCAL_C void SeekToCluster(RFile& aFile,TInt aCluster)
   109 LOCAL_C void SeekToCluster(RFile& aFile,TInt aCluster)
   111 //
   110 //
   112 // Seek to aCluster and check it is found correctly
   111 // Seek to aCluster and check it is found correctly
   113 //
   112 //
   114 	{
   113 	{
   115 	TBuf8<508> seekBuf(508);
   114 	TBuf8<508> seekBuf(508);
   116 	TInt r=aFile.Read(aCluster*testBuf.MaxSize(),seekBuf);
   115 	TInt r=aFile.Read(aCluster*testBuf.MaxSize(),seekBuf);
   117 	test_KErrNone(r);
   116 	test(r==KErrNone);
   118 	test(seekBuf[0]==(TUint8)aCluster && seekBuf[507]==(TUint8)aCluster);
   117 	test(seekBuf[0]==(TUint8)aCluster && seekBuf[507]==(TUint8)aCluster);
   119 	}
   118 	}
   120 
   119 
   121 LOCAL_C void SeekToCluster(RFile& aFile,TInt aCluster1,TInt aCluster2)
   120 LOCAL_C void SeekToCluster(RFile& aFile,TInt aCluster1,TInt aCluster2)
   122 //
   121 //
   123 // Seek to aCluster and check it is found correctly
   122 // Seek to aCluster and check it is found correctly
   124 //
   123 //
   125 	{
   124 	{
   126 	TBuf8<508> seekBuf(508);
   125 	TBuf8<508> seekBuf(508);
   127 	TInt r=aFile.Read(aCluster1*testBuf.MaxSize(),seekBuf);
   126 	TInt r=aFile.Read(aCluster1*testBuf.MaxSize(),seekBuf);
   128 	test_KErrNone(r);
   127 	test(r==KErrNone);
   129 	test(seekBuf[0]==(TUint8)aCluster1 && seekBuf[507]==(TUint8)aCluster1);
   128 	test(seekBuf[0]==(TUint8)aCluster1 && seekBuf[507]==(TUint8)aCluster1);
   130 	r=aFile.Read(aCluster2*testBuf.MaxSize(),seekBuf);
   129 	r=aFile.Read(aCluster2*testBuf.MaxSize(),seekBuf);
   131 	test_KErrNone(r);
   130 	test(r==KErrNone);
   132 	test(seekBuf[0]==(TUint8)aCluster2 && seekBuf[507]==(TUint8)aCluster2);
   131 	test(seekBuf[0]==(TUint8)aCluster2 && seekBuf[507]==(TUint8)aCluster2);
   133 	}
   132 	}
   134 
   133 
   135 LOCAL_C void ExhaustiveTest(RFile& aFile,TInt aCount1)
   134 LOCAL_C void ExhaustiveTest(RFile& aFile,TInt aCount1)
   136 //
   135 //
   157 	{
   156 	{
   158 	test.Next(_L("Create interleaved files"));
   157 	test.Next(_L("Create interleaved files"));
   159 	RFile f1,f2;
   158 	RFile f1,f2;
   160 
   159 
   161 	TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite);
   160 	TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite);
   162 	test_KErrNone(r);
   161 	test(r==KErrNone);
   163 	r=f2.Replace(TheFs,_L("BIGFILE2.TST"),EFileWrite);
   162 	r=f2.Replace(TheFs,_L("BIGFILE2.TST"),EFileWrite);
   164 	test_KErrNone(r);
   163 	test(r==KErrNone);
   165 
   164 
   166 	TInt maxListLength=4;
   165 	TInt maxListLength=4;
   167 	TInt i=0,k=0;
   166 	TInt i=0,k=0;
   168 	TInt countf1=0;
   167 	TInt countf1=0;
   169 	TInt countf2=0;
   168 	TInt countf2=0;
   204 	SeekToCluster(f1,5,5);
   203 	SeekToCluster(f1,5,5);
   205 
   204 
   206 	f1.Close();
   205 	f1.Close();
   207 	f2.Close();
   206 	f2.Close();
   208 	r=TheFs.Delete(_L("BIGFile1.tst"));
   207 	r=TheFs.Delete(_L("BIGFile1.tst"));
   209 	test_KErrNone(r);
   208 	test(r==KErrNone);
   210 	r=TheFs.Delete(_L("BIGFile2.tst"));
   209 	r=TheFs.Delete(_L("BIGFile2.tst"));
   211 	test_KErrNone(r);
   210 	test(r==KErrNone);
   212 	CheckDisk();
   211 	CheckDisk();
   213 	}
   212 	}
   214 
   213 
   215 LOCAL_C void Test2()
   214 LOCAL_C void Test2()
   216 //
   215 //
   219 	{
   218 	{
   220 	test.Next(_L("Regression Protection"));
   219 	test.Next(_L("Regression Protection"));
   221 	RFile f1,f2;
   220 	RFile f1,f2;
   222 
   221 
   223 	TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite);
   222 	TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite);
   224 	test_KErrNone(r);
   223 	test(r==KErrNone);
   225 	r=f2.Replace(TheFs,_L("BIGFILE2.TST"),EFileWrite);
   224 	r=f2.Replace(TheFs,_L("BIGFILE2.TST"),EFileWrite);
   226 	test_KErrNone(r);
   225 	test(r==KErrNone);
   227 
   226 
   228 	WriteCluster(f1,0);
   227 	WriteCluster(f1,0);
   229 	WriteCluster(f1,1);
   228 	WriteCluster(f1,1);
   230 	WriteCluster(f1,2);
   229 	WriteCluster(f1,2);
   231 	WriteCluster(f1,3);
   230 	WriteCluster(f1,3);
   238 	SeekToCluster(f1,4);
   237 	SeekToCluster(f1,4);
   239 
   238 
   240 	f1.Close();
   239 	f1.Close();
   241 	f2.Close();
   240 	f2.Close();
   242 	r=TheFs.Delete(_L("BIGFile1.tst"));
   241 	r=TheFs.Delete(_L("BIGFile1.tst"));
   243 	test_KErrNone(r);
   242 	test(r==KErrNone);
   244 	r=TheFs.Delete(_L("BIGFile2.tst"));
   243 	r=TheFs.Delete(_L("BIGFile2.tst"));
   245 	test_KErrNone(r);
   244 	test(r==KErrNone);
   246 	CheckDisk();
   245 	CheckDisk();
   247 	}
   246 	}
   248 
   247 
   249 LOCAL_C void Test3()
   248 LOCAL_C void Test3()
   250 //
   249 //
   255 	test.Next(_L("Alter filesize"));
   254 	test.Next(_L("Alter filesize"));
   256 	RFile f1;
   255 	RFile f1;
   257 	TheSeed=917824;
   256 	TheSeed=917824;
   258 	TInt i=0,j=0;
   257 	TInt i=0,j=0;
   259 	TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite);
   258 	TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite);
   260 	test_KErrNone(r);
   259 	test(r==KErrNone);
   261 	
   260 	
   262 	r=f1.SetSize(65534);
   261 	r=f1.SetSize(65534);
   263 	test_KErrNone(r);
   262 	test(r==KErrNone);
   264 
   263 
   265 	for(i=0;i<=15;i++)
   264 	for(i=0;i<=15;i++)
   266 		WriteCluster(f1,i);
   265 		WriteCluster(f1,i);
   267 
   266 
   268 	for (j=0;j<100;j++)
   267 	for (j=0;j<100;j++)
   272 		SeekToCluster(f1,cluster2,cluster1);
   271 		SeekToCluster(f1,cluster2,cluster1);
   273 		}
   272 		}
   274 
   273 
   275 	test.Next(_L("Increase Size"));
   274 	test.Next(_L("Increase Size"));
   276 	r=f1.SetSize(1048577);
   275 	r=f1.SetSize(1048577);
   277 	test_Value(r, r == KErrNone || r==KErrDiskFull);
   276 	test(r==KErrNone || r==KErrDiskFull);
   278 	if (r==KErrDiskFull)
   277 	if (r==KErrDiskFull)
   279 		{
   278 		{
   280 		test.Printf(_L("File too big\n"));
   279 		test.Printf(_L("File too big\n"));
   281 		f1.Close();
   280 		f1.Close();
   282 		return;
   281 		return;
   290 		SeekToCluster(f1,cluster2,cluster1);
   289 		SeekToCluster(f1,cluster2,cluster1);
   291 		}
   290 		}
   292 
   291 
   293 	TInt newPos=8192;
   292 	TInt newPos=8192;
   294 	r=f1.Seek(ESeekStart,newPos);
   293 	r=f1.Seek(ESeekStart,newPos);
   295 	test_KErrNone(r);
   294 	test(r==KErrNone);
   296 
   295 
   297 	test.Next(_L("Write more data"));
   296 	test.Next(_L("Write more data"));
   298 	for(i=16;i<83;i++)
   297 	for(i=16;i<83;i++)
   299 		WriteCluster(f1,i);
   298 		WriteCluster(f1,i);
   300 
   299 
   306 		SeekToCluster(f1,cluster2,cluster1);
   305 		SeekToCluster(f1,cluster2,cluster1);
   307 		}
   306 		}
   308 
   307 
   309 	test.Next(_L("Reduce file size"));
   308 	test.Next(_L("Reduce file size"));
   310 	r=f1.SetSize(135000);
   309 	r=f1.SetSize(135000);
   311 	test_KErrNone(r);
   310 	test(r==KErrNone);
   312 
   311 
   313 	test.Next(_L("Test data still present"));
   312 	test.Next(_L("Test data still present"));
   314 	for (j=0;j<200;j++)
   313 	for (j=0;j<200;j++)
   315 		{
   314 		{
   316 		TInt cluster1=Math::Rand(TheSeed)%31;
   315 		TInt cluster1=Math::Rand(TheSeed)%31;
   339 //
   338 //
   340 	: iFile(*aFile), iPos(0)
   339 	: iFile(*aFile), iPos(0)
   341 	{
   340 	{
   342 
   341 
   343 	TInt r=iFile.Read(0,iData);
   342 	TInt r=iFile.Read(0,iData);
   344 	test_KErrNone(r);
   343 	test(r==KErrNone);
   345 	}
   344 	}
   346 
   345 
   347 void TFileReader::Next(TUint8& aVal,TInt& aLength)
   346 void TFileReader::Next(TUint8& aVal,TInt& aLength)
   348 //
   347 //
   349 // Read aLength contiguous bytes with aVal
   348 // Read aLength contiguous bytes with aVal
   351 	{
   350 	{
   352 
   351 
   353 	if (iPos==iData.Length())
   352 	if (iPos==iData.Length())
   354 		{
   353 		{
   355 		TInt r=iFile.Read(iData);
   354 		TInt r=iFile.Read(iData);
   356 		test_KErrNone(r);
   355 		test(r==KErrNone);
   357 		iPos=0;
   356 		iPos=0;
   358 		if (iData.Length()==0)
   357 		if (iData.Length()==0)
   359 			{
   358 			{
   360 			aLength=0;
   359 			aLength=0;
   361 			return;
   360 			return;
   475 
   474 
   476 	RFile f[KMaxFiles];
   475 	RFile f[KMaxFiles];
   477 	HBufC8* dataBuf=HBufC8::NewL(KMaxBufferLength);
   476 	HBufC8* dataBuf=HBufC8::NewL(KMaxBufferLength);
   478 
   477 
   479 	TInt r=f[0].Replace(TheFs,_L("TEST1.DAT"),EFileWrite);
   478 	TInt r=f[0].Replace(TheFs,_L("TEST1.DAT"),EFileWrite);
   480 	test_KErrNone(r);
   479 	test(r==KErrNone);
   481 	r=f[1].Replace(TheFs,_L("TEST2.DAT"),EFileWrite);
   480 	r=f[1].Replace(TheFs,_L("TEST2.DAT"),EFileWrite);
   482 	test_KErrNone(r);
   481 	test(r==KErrNone);
   483 	r=f[2].Replace(TheFs,_L("TEST3.DAT"),EFileWrite);
   482 	r=f[2].Replace(TheFs,_L("TEST3.DAT"),EFileWrite);
   484 	test_KErrNone(r);
   483 	test(r==KErrNone);
   485 	r=f[3].Replace(TheFs,_L("TEST4.DAT"),EFileWrite);
   484 	r=f[3].Replace(TheFs,_L("TEST4.DAT"),EFileWrite);
   486 	test_KErrNone(r);
   485 	test(r==KErrNone);
   487 	
   486 	
   488 	TInt size=0;
   487 	TInt size=0;
   489 	TInt iteration=0;
   488 	TInt iteration=0;
   490 
   489 
   491 	FOREVER
   490 	FOREVER
   506 			{
   505 			{
   507 			TInt fileNum=(order+i)%KMaxFiles;
   506 			TInt fileNum=(order+i)%KMaxFiles;
   508 			TInt s=len*mult[fileNum];
   507 			TInt s=len*mult[fileNum];
   509 			TInt filePos=pos*mult[fileNum];
   508 			TInt filePos=pos*mult[fileNum];
   510 			r=f[fileNum].Seek(ESeekStart,filePos);
   509 			r=f[fileNum].Seek(ESeekStart,filePos);
   511 			test_KErrNone(r);
   510 			test(r==KErrNone);
   512 
   511 
   513 			while(s>0)
   512 			while(s>0)
   514 				{
   513 				{
   515 				TInt l=(s>KMaxBufferLength) ? KMaxBufferLength : s;
   514 				TInt l=(s>KMaxBufferLength) ? KMaxBufferLength : s;
   516 				dataBuf->Des().SetLength(l);
   515 				dataBuf->Des().SetLength(l);
   517 				r=f[fileNum].Write(*dataBuf);
   516 				r=f[fileNum].Write(*dataBuf);
   518 				if (r==KErrDiskFull)
   517 				if (r==KErrDiskFull)
   519 					goto End;
   518 					goto End;
   520 				test_KErrNone(r);
   519 				test(r==KErrNone);
   521 				s-=l;
   520 				s-=l;
   522 				}
   521 				}
   523 			
   522 			
   524 			}
   523 			}
   525 
   524 
   536 			test.Printf(_L("\nReduceSize newsize=%d\n"),size);
   535 			test.Printf(_L("\nReduceSize newsize=%d\n"),size);
   537 			for (TInt i=0;i<KMaxFiles;i++)
   536 			for (TInt i=0;i<KMaxFiles;i++)
   538 				{
   537 				{
   539 				TInt fileNum=(order+i)%KMaxFiles;
   538 				TInt fileNum=(order+i)%KMaxFiles;
   540 				r=f[fileNum].SetSize(size*mult[fileNum]);
   539 				r=f[fileNum].SetSize(size*mult[fileNum]);
   541 				test_KErrNone(r);
   540 				test(r==KErrNone);
   542 				}
   541 				}
   543 			CheckFileContents(&f[0]);
   542 			CheckFileContents(&f[0]);
   544 			}
   543 			}
   545 		}
   544 		}
   546 End:
   545 End:
   555 // Test filling the disk with files, and various manipulations thereof
   554 // Test filling the disk with files, and various manipulations thereof
   556 //
   555 //
   557 	{
   556 	{
   558 	test.Start(_L("Test multiple file creation, deletion and resize operations"));
   557 	test.Start(_L("Test multiple file creation, deletion and resize operations"));
   559 	TInt r=TheFs.MkDirAll(_L("\\F32-TST\\BIGDIRECTORY\\"));
   558 	TInt r=TheFs.MkDirAll(_L("\\F32-TST\\BIGDIRECTORY\\"));
   560 	test_Value(r, r == KErrNone || r==KErrAlreadyExists);
   559 	test(r==KErrNone || r==KErrAlreadyExists);
   561 	TFileName sessionPath;
   560 	TFileName sessionPath;
   562 	r=TheFs.SessionPath(sessionPath);
   561 	r=TheFs.SessionPath(sessionPath);
   563 	test_KErrNone(r);
   562 	test(r==KErrNone);
   564 
   563 
   565 	TInt index=0;
   564 	TInt index=0;
   566 	TBuf<128> fileName=_L("\\F32-TST\\BIGDIRECTORY\\FILE");
   565 	TBuf<128> fileName=_L("\\F32-TST\\BIGDIRECTORY\\FILE");
   567 
   566 
   568 	for (;index<numberOfFiles;index++)
   567 	for (;index<numberOfFiles;index++)
   569 		{
   568 		{
   570 		r=CreateFileEx(fileName,index,anInitialSize);
   569 		r=CreateFileEx(fileName,index,anInitialSize);
   571 		if (r!=KErrNone)
   570 		if (r!=KErrNone)
   572 			break;
   571 			break;
   573 
   572 
   574 		test_KErrNone(r);
   573 		test(r==KErrNone);
   575 		
   574 		
   576 #if defined(__WINS__)
   575 #if defined(__WINS__)
   577 		if (index==32 && sessionPath[0]=='C')
   576 		if (index==32 && sessionPath[0]=='C')
   578 			break;
   577 			break;
   579 #endif
   578 #endif
   600 	for (index=0; index<halfCount; index++)
   599 	for (index=0; index<halfCount; index++)
   601 		{
   600 		{
   602 		baseName=fileName;
   601 		baseName=fileName;
   603 		baseName.AppendNum(index);
   602 		baseName.AppendNum(index);
   604 		r=file.Open(TheFs,baseName,EFileRead|EFileWrite);
   603 		r=file.Open(TheFs,baseName,EFileRead|EFileWrite);
   605 		test_KErrNone(r);
   604 		test(r==KErrNone);
   606 		test.Printf(_L("Resized %S from %d to %d\n"),&baseName,anInitialSize,anInitialSize*2);		
   605 		test.Printf(_L("Resized %S from %d to %d\n"),&baseName,anInitialSize,anInitialSize*2);		
   607 		r=file.SetSize(2*anInitialSize);
   606 		r=file.SetSize(2*anInitialSize);
   608 		test((r==KErrNone)||(r==KErrDiskFull));
   607 		test((r==KErrNone)||(r==KErrDiskFull));
   609 		file.Close();
   608 		file.Close();
   610 		}
   609 		}