TInt RIpcFuzzTest::Fuzz8L(TInt aMsg, TInt aArgCount) { HBufC8* buf = HBufC8::NewLC(255); TPtr8 ptr = buf->Des(); ptr.Fill(Math::Random(),255); TIpcArgs args; for(TInt i = 0; i < aArgCount;i++) { args.Set(i,&ptr); } TInt ret; if(IsFunctionAsynchronous(aMsg)) { ret = Send(aMsg, args); User::After(KAsynchDelay); } else { ret = SendReceive(aMsg, args); } CleanupStack::PopAndDestroy(buf); return ret; }
/** @SYMTestCaseID PDS-SQL-UT-4207 @SYMTestCaseDesc RFileBuf64::Write() OOM test. The test calls RFileBuf64:Write() in an OOM simulation loop and verifies that no memory is leaked. The test also check that RFileBuf::DoSetCapacity() correctly operates in "out of memory" situation. @SYMTestActions RFileBuf64::Write() OOM test. @SYMTestExpectedResults Test must not fail @SYMTestPriority High @SYMDEF 380056 */ void WriteOomTest() { HBufC8* databuf = HBufC8::New(KPageSize); TEST(databuf != NULL); TPtr8 dataptr = databuf->Des(); dataptr.SetLength(KPageSize); dataptr.Fill(TChar(KChar)); TInt err = KErrNoMemory; TInt failingAllocationNo = 0; TheTest.Printf(_L("Iteration:\r\n")); while(err == KErrNoMemory) { TheTest.Printf(_L(" %d"), ++failingAllocationNo); (void)TheFs.Delete(KTestFile); MarkHandles(); MarkAllocatedCells(); __UHEAP_MARK; __UHEAP_SETBURSTFAIL(RAllocator::EBurstFailNext, failingAllocationNo, KBurstRate); const TInt KDefaultBufCapacity = 1024; RFileBuf64 fbuf(KDefaultBufCapacity); err = fbuf.Create(TheFs, KTestFile, EFileWrite | EFileRead); if(err == KErrNone) { err = fbuf.Write(0LL, dataptr); } fbuf.Close(); __UHEAP_RESET; __UHEAP_MARKEND; CheckAllocatedCells(); CheckHandles(); } TEST2(err, KErrNone); RFile64 file; err = file.Open(TheFs, KTestFile, EFileRead); TEST2(err, KErrNone); dataptr.Zero(); err = file.Read(dataptr); TEST2(err, KErrNone); file.Close(); TEST2(dataptr.Length(), KPageSize); for(TInt i=0;i<KPageSize;++i) { TEST(dataptr[i] == KChar); } TheTest.Printf(_L("\r\n=== OOM Test succeeded at heap failure rate of %d ===\r\n"), failingAllocationNo); //The file is left undeleted - to be used in ReadOomTest(). delete databuf; }
void RIpcServerCloseTest::RunTestL(const TDesC& aTargetSrvName, TInt aNumber, TInt aArgCount) { TVersion version(0,0,0); TInt err = KErrNotFound; TInt numberOfAttempts = 3; while(err!=KErrNone && numberOfAttempts>0) { err = CreateSession(aTargetSrvName, version, 200); if(err!=KErrNone) { // wait then try again if err!=0 TheTest.Printf(_L("CreateSession returned: %d"), err); User::After(1000000); numberOfAttempts--; } } TheTest(err == KErrNone); HBufC8* buf = HBufC8::NewLC(255); TPtr8 ptr = buf->Des(); ptr.Fill(Math::Random(),255); TIpcArgs args; for(TInt i = 0; i < aArgCount ;i++) { args.Set(i,&ptr); } TheTest.Printf(_L("Sending request to: %d with %d args"), aNumber, aArgCount); TRequestStatus status; SendReceive(aNumber, args, status); User::WaitForRequest(status); TheTest.Printf(_L("Status value from sending request: %d with %d args"), status.Int(), aArgCount); TheTest(status.Int() == KErrNotSupported); CleanupStack::PopAndDestroy(buf); }