diff -r 95f71bcdcdb7 -r 657f875b013e kerneltest/f32test/server/t_ftrace.cpp --- a/kerneltest/f32test/server/t_ftrace.cpp Thu May 27 14:17:14 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,424 +0,0 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// f32test\server\t_ftrace.cpp -// -// - -#define __E32TEST_EXTENSION__ -#include -#include -#include -#include "t_server.h" - -#include "../../../kernel/eka/include/d32btrace.h" -#include "../../../kernel/eka/include/e32btrace.h" -#include - -RTest test(_L("T_FTRACE")); - -RBTrace Trace; - -void SetBTraceFilter(const TUint32* aNew,TUint32* aOld) - { - TUint category = 0; - do - { - TUint32 newBits = *aNew++; - TUint32 oldBits = 0; - do - { - oldBits >>= 1; - if(Trace.SetFilter(category,newBits&1)) - oldBits |= 0x80000000u; - newBits >>= 1; - ++category; - } - while(category&31); - if(aOld) - *aOld++ = oldBits; - } - while(category<256); - } - - - -//--------------------------------------------------------------------------------------------------------------------- -//! @SYMTestCaseID KBASE-T_FTRACE-0001 -//! @SYMTestCaseDesc Test File Server Tracing of RFile::Replace() -//! @SYMTestType UT -//! @SYMPREQ PREQ1617 -//! @SYMTestPriority Medium -//! @SYMTestActions -//! 1. Call RFile::Replace() to create a file -//! 2. Get trace data from BTrace and verify that the expected trace data is present -//! -//! @SYMTestExpectedResults -//! 1. Trace data payload should be as expected, i.e. it should contain the file name, mode etc. -//--------------------------------------------------------------------------------------------------------------------- -void TestRFileReplace() - { - test.Start(_L("Test trace output from creating a file")); - RFile file; - TFileName testFileName = _L("File.txt"); - - TheFs.Delete(testFileName); - - Trace.Empty(); - - TInt r = file.Replace(TheFs,testFileName,EFileStreamText); - test_KErrNone(r); - - - TBool funcInFound = EFalse; - TBool funcOutFound = EFalse; - - TBuf8<1024> buf; - for(;;) - { - TUint8* record; - TInt dataSize = Trace.GetData(record); - if(!dataSize) - break; - TUint8* end = record+dataSize; - - while(record0) ? *(TUint32*)(data) : 0; - TUint32 data1 = (size>4) ? *(TUint32*)(data+4) : 0; - TPtrC8 des(0,0); - if(size>=8) - des.Set(data+8,size-8); - - buf.AppendFormat(_L8("size:%d flags:%02x cat:%d,%d data: "),size,flags,category,subCategory); - for(TUint i=0; i= (buf.Length()*2)); - RDebug::RawPrint(buf.Expand()); - - - if (category == UTF::EBorder && subCategory == 0 && data0 == EF32TraceUidEfsrv) - { - if (data1 == UTraceModuleEfsrv::EFileReplace) - { - TInt sessionHandle = (size>8) ? *(TUint32*)(data+8) : 0; - TUint32 fileMode = (size>12) ? *(TUint32*)(data+12) : 0; - TInt fileNameLen = (size>16) ? *(TUint32*)(data+16) : 0; - fileNameLen/= 2; // convert to unicode length - TText16* fileName = (TText16*) ((size>20) ? (data+20) : NULL); - - test(sessionHandle == TheFs.Handle()); - test(fileMode == EFileStreamText); - test(fileNameLen == testFileName.Length()); - TPtrC16 fileNamePtr (fileName, fileNameLen); - test(fileName != NULL); - test(testFileName.Compare(fileNamePtr) == 0); - funcInFound = ETrue; - } - else if (data1 == UTraceModuleEfsrv::EFileReplaceReturn) - { - TInt retCode = (size>8) ? *(TUint32*)(data+8) : 0; - TInt subsessionHandle = (size>12) ? *(TUint32*)(data+12) : 0; - - test(retCode == KErrNone); - test(subsessionHandle == file.SubSessionHandle()); - funcOutFound = ETrue; - } - } - - record = BTrace::NextRecord(record); - } - Trace.DataUsed(); - } - - file.Close(); - TheFs.Delete(testFileName); - - test (funcInFound); - test (funcOutFound); - } - -//--------------------------------------------------------------------------------------------------------------------- -//! @SYMTestCaseID KBASE-T_FTRACE-0002 -//! @SYMTestCaseDesc Test File Server Tracing of RFs::Rename() -//! @SYMTestType UT -//! @SYMPREQ PREQ1617 -//! @SYMTestPriority Medium -//! @SYMTestActions -//! 1. Call RFile::Replace() to create a file -//! 2. Close the file -//! 3. Call RFs::Rename to rename the file -//! 4. Get trace data from BTrace and verify that the expected trace data is present -//! -//! @SYMTestExpectedResults -//! 1. Trace data payload should be as expected, i.e. it should contain both file names, etc. -//--------------------------------------------------------------------------------------------------------------------- -void TestRFsRename() - { - test.Start(_L("Test trace output from renaming a file")); - RFile file; - TFileName testFileName1 = _L("File1.txt"); - TFileName testFileName2 = _L("File2.txt"); - - TheFs.Delete(testFileName1); - TheFs.Delete(testFileName2); - - TInt r = file.Replace(TheFs,testFileName1,EFileStreamText); - test_Value(r, r == KErrNone || r == KErrAlreadyExists); - file.Close(); - - Trace.Empty(); - - r = TheFs.Rename(testFileName1, testFileName2); - test_KErrNone(r); - - - TBool funcInFound = EFalse; - TBool funcOutFound = EFalse; - - TBuf8<1024> buf; - for(;;) - { - TUint8* record; - TInt dataSize = Trace.GetData(record); - if(!dataSize) - break; - TUint8* end = record+dataSize; - - while(record0) ? *(TUint32*)(data) : 0; - TUint32 data1 = (size>4) ? *(TUint32*)(data+4) : 0; - TPtrC8 des(0,0); - if(size>=8) - des.Set(data+8,size-8); - - buf.AppendFormat(_L8("size:%d flags:%02x cat:%d,%d data: "),size,flags,category,subCategory); - for(TUint i=0; i= (buf.Length()*2)); - RDebug::RawPrint(buf.Expand()); - - - if (category == UTF::EBorder && subCategory == 0 && data0 == EF32TraceUidEfsrv) - { - TUint8* recData = data+8; - if (data1 == UTraceModuleEfsrv::EFsRename) - { - TInt sessionHandle = *(TUint32*) recData; recData+= 4; - - TInt fileNameLen1 = *(TUint32*) recData; recData+= 4; - TText16* fileName1 = (TText16*) recData; recData+= ((fileNameLen1 +4) & ~3); - - TInt fileNameLen2 = *(TUint32*) recData; recData+= 4; - TText16* fileName2 = (TText16*) recData; recData+= fileNameLen2; - - fileNameLen1/= 2; // convert to unicode length - fileNameLen2/= 2; // convert to unicode length - - - test(sessionHandle == TheFs.Handle()); - - test(fileNameLen1 == testFileName1.Length()); - TPtrC16 fileNamePtr1 (fileName1, fileNameLen1); - test(fileName1 != NULL); - test(testFileName1.Compare(fileNamePtr1) == 0); - - test(fileNameLen2 == testFileName2.Length()); - TPtrC16 fileNamePtr2 (fileName2, fileNameLen2); - test(fileName2 != NULL); - test(testFileName2.Compare(fileNamePtr2) == 0); - - funcInFound = ETrue; - } - else if (data1 == UTraceModuleEfsrv::EFsRenameReturn) - { - TInt retCode = (size>8) ? *(TUint32*)(data+8) : 0; - - test(retCode == KErrNone); - - funcOutFound = ETrue; - } - } - - record = BTrace::NextRecord(record); - } - Trace.DataUsed(); - } - - - test (funcInFound); - test (funcOutFound); - - TheFs.Delete(testFileName1); - TheFs.Delete(testFileName2); - } - -void CallTestsL() - { - -// By default, file server trace-points are only compiled in in debug mode -#if defined(_DEBUG) - test.Title(); - TInt r; - - test.Start(_L("Open LDD")); - r = Trace.Open(); - test_KErrNone(r); - - - TUint32 OldTraceFilter[8] = {0}; - - TUint savedMode = Trace.Mode(); - SetBTraceFilter(OldTraceFilter,OldTraceFilter); - - Trace.ResizeBuffer(0x100000); - Trace.Empty(); - - Trace.SetMode(RBTrace::EEnable | RBTrace::EFreeRunning); - - TBool b; -// b = Trace.SetFilter(BTrace::EThreadIdentification, ETrue); -// test(b >= 0); - b = Trace.SetFilter(UTF::EPanic, ETrue); - test(b >= 0); - b = Trace.SetFilter(UTF::EError, ETrue); - test(b >= 0); - b = Trace.SetFilter(UTF::EBorder, ETrue); - test(b >= 0); - - b = Trace.SetFilter2(EF32TraceUidEfsrv, ETrue); - test(b >= 0); - - TestRFileReplace(); - TestRFsRename(); - - // restore trace settings... - Trace.SetMode(0); - SetBTraceFilter(OldTraceFilter,OldTraceFilter); - Trace.SetMode(savedMode); - - - test.Next(_L("Close LDD")); - Trace.Close(); - - test.End(); -#endif - } -