kerneltest/f32test/server/t_filecache.cpp
changeset 139 95f71bcdcdb7
parent 109 b3a1d9898418
child 152 657f875b013e
equal deleted inserted replaced
109:b3a1d9898418 139:95f71bcdcdb7
    20 #include <e32svr.h> 
    20 #include <e32svr.h> 
    21 #include <f32dbg.h>
    21 #include <f32dbg.h>
    22 #include "t_server.h"
    22 #include "t_server.h"
    23 #include <e32twin.h>
    23 #include <e32twin.h>
    24 #include <e32rom.h>
    24 #include <e32rom.h>
       
    25 #include <u32hal.h>	//*test*
    25 
    26 
    26 
    27 
    27 //----------------------------------------------------------------------------------------------
    28 //----------------------------------------------------------------------------------------------
    28 //! @SYMTestCaseID      PBASE-T_FILECACHE-0189
    29 //! @SYMTestCaseID      PBASE-T_FILECACHE-0189
    29 //! @SYMTestType        UT
    30 //! @SYMTestType        UT
   248 				TestBufferFail(aBuffer, pos, aLength);
   249 				TestBufferFail(aBuffer, pos, aLength);
   249 			}
   250 			}
   250 		}
   251 		}
   251 	}
   252 	}
   252 
   253 
       
   254 //*test**************************************************************************
       
   255 TInt FreeRam()
       
   256 	{
       
   257 	// wait for any async cleanup in the supervisor to finish first...
       
   258 	UserSvr::HalFunction(EHalGroupKernel, EKernelHalSupervisorBarrier, 0, 0);
       
   259 
       
   260 	TMemoryInfoV1Buf meminfo;
       
   261 	UserHal::MemoryInfo(meminfo);
       
   262 	return meminfo().iFreeRamInBytes;
       
   263 	}
       
   264 //*test**************************************************************************
       
   265 
   253 
   266 
   254 LOCAL_C void UnitTests()
   267 LOCAL_C void UnitTests()
   255 //
   268 //
   256 // Test read file handling.
   269 // Test read file handling.
   257 //
   270 //
   296 	TPtr8 readPtr(gBuf->Des());
   309 	TPtr8 readPtr(gBuf->Des());
   297 #if defined(_DEBUG) || defined(_DEBUG_RELEASE)
   310 #if defined(_DEBUG) || defined(_DEBUG_RELEASE)
   298 	TInt uncachedBytesRead;
   311 	TInt uncachedBytesRead;
   299 	TInt uncachedPacketsRead;
   312 	TInt uncachedPacketsRead;
   300 #endif
   313 #endif
       
   314 
       
   315 //*test**************************************************************************
       
   316 	{
       
   317 	TInt fileSize = 0;
       
   318 	
       
   319 	const TInt KWriteLen = 128*1024;
       
   320 	test.Next(_L("Test appending to a file with low memory"));
       
   321 	gBufPtr.SetLength(KBufSize);
       
   322 
       
   323 	r = f.Replace(TheFs, testFile, EFileWrite | EFileWriteBuffered);
       
   324 	test_KErrNone(r);
       
   325 
       
   326 	pos = 0;
       
   327 
       
   328 	writePtr.Set(gBufPtr.MidTPtr(pos, KWriteLen));
       
   329 
       
   330 	r = f.Write(pos, writePtr);
       
   331 	test_KErrNone(r);
       
   332 	pos+= writePtr.Length();
       
   333 
       
   334 	r = f.Size(fileSize);
       
   335 	test_KErrNone(r);
       
   336 	test_Equal(fileSize,pos);
       
   337 
       
   338 
       
   339 
       
   340 	TInt freeRam = FreeRam();
       
   341 	test.Printf(_L("FreeRam = %d"), freeRam);
       
   342 	const TInt KPageSize=4096;
       
   343 
       
   344 	RChunk chunk;
       
   345 	TChunkCreateInfo chunkInfo;
       
   346 	chunkInfo.SetDisconnected(0, 0, freeRam);
       
   347 	chunkInfo.SetPaging(TChunkCreateInfo::EUnpaged);
       
   348 	test_KErrNone(chunk.Create(chunkInfo));
       
   349 
       
   350 	TUint commitEnd = 0;
       
   351 	TInt r;
       
   352 	while(KErrNone == (r = chunk.Commit(commitEnd,KPageSize)))
       
   353 		{
       
   354 		commitEnd += KPageSize;
       
   355 		}
       
   356 	test_Equal(KErrNoMemory, r);
       
   357 
       
   358 
       
   359 
       
   360 	pos-= KSegmentSize;
       
   361 	writePtr.Set(gBufPtr.MidTPtr(pos, KWriteLen));
       
   362 
       
   363 	r = f.Write(pos, writePtr);
       
   364 	test_KErrNone(r);
       
   365 	pos+= writePtr.Length();
       
   366 
       
   367 	r = f.Size(fileSize);
       
   368 	test_KErrNone(r);
       
   369 	test_Equal(fileSize,pos);
       
   370 
       
   371 	f.Close();
       
   372 
       
   373 	chunk.Close();
       
   374 	}
       
   375 //*test**************************************************************************
   301 
   376 
   302 	// create an empty file, so that any writes overlapping segemt boundaries
   377 	// create an empty file, so that any writes overlapping segemt boundaries
   303 	// need a read first
   378 	// need a read first
   304 	// create a test file using directIO and then re-open it in buffered mode, 
   379 	// create a test file using directIO and then re-open it in buffered mode, 
   305 	// so that any writes overlapping segemt boundaries need a read first
   380 	// so that any writes overlapping segemt boundaries need a read first