diff -r e7d2d738d3c2 -r 2f92ad2dc5db kerneltest/e32test/rm_debug/t_rmdebug.cpp --- a/kerneltest/e32test/rm_debug/t_rmdebug.cpp Mon Mar 15 12:45:50 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,347 +0,0 @@ -// Copyright (c) 2006-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: -// Tests the functionality of the run mode debug device driver. -// -// - -#include -#include -#include -#include -#include -#include -#include "d_rmdebugclient.h" -#include "d_rmdebugthread.h" -#include "t_rmdebug.h" - -IMPORT_C TInt StartDebugThread(RThread& aServerThread); -IMPORT_D extern TInt TestData; -IMPORT_D extern TBuf8 gMemoryAccessBytes; - -LOCAL_D RTest test(_L("T_RMDEBUG")); - -CRunModeAgent::CRunModeAgent() -// -// CRunModeAgent constructor -// - { - } - -CRunModeAgent* CRunModeAgent::NewL() -// -// CRunModeAgent::NewL -// - { - CRunModeAgent* self = new(ELeave) CRunModeAgent(); - - self->ConstructL(); - - if (self->iState != ERunModeAgentRunning) - { - delete self; - self = NULL; - } - return self; - } - -CRunModeAgent::~CRunModeAgent() -// -// CRunModeAgent destructor -// - { - iServSession.Close(); - iDebugThread.Close(); - iState = ERunModeAgentUnInit; - } - -void CRunModeAgent::ConstructL() -// -// CRunModeAgent::ConstructL -// - { - TInt err; - err = StartDebugThread(iDebugThread); - - if (err == KErrNone) - { - if (iServSession.Open() == KErrNone) - { - iState = ERunModeAgentRunning; - } - else - { - iState = ERunModeAgentUnInit; - } - } - else - { - User::Panic(_L("Can't start debug thread"), err); - } -} - - - -CRunModeAgent *RunModeAgent; - -// Test process names -_LIT(ProcessName1,"T_RMDEBUG"); -_LIT(ProcessName1a,"t_rmdebug"); -//_LIT(ProcessName2,"ekern"); -//_LIT(ProcessName3,"efile"); -_LIT(KWildCard,"*"); - - -//--------------------------------------------- -//! @SYMTestCaseID KBase-0185 -//! @SYMTestType -//! @SYMPREQ PREQ1426 -//! @SYMTestCaseDesc Test reading process list -//! @SYMTestActions Several calls to read the process list -//! @SYMTestExpectedResults KErrNone and the owning process ID set -//! @SYMTestPriority High -//! @SYMTestStatus Implemented -//--------------------------------------------- -void CRunModeAgent::TestProcessList() - { - TInt err=KErrNone; - TBool found = FALSE; - - test.Next(_L("TestProcessList - Read Process List\n")); - - TFindProcess find(KWildCard); - TFullName name; - while(find.Next(name)==KErrNone) - { - RProcess process; - err = process.Open(find); - if (err == KErrNone) - { - if ((name.Find(ProcessName1) != KErrNotFound) || - (name.Find(ProcessName1a) != KErrNotFound)) - { - iProcessID = process.Id(); - found = TRUE; - } - process.Close(); - } - } - test(found== TRUE); - } - -// Test thread name -_LIT(ThreadName1,"DebugThread"); - -//--------------------------------------------- -//! @SYMTestCaseID KBase-0186 -//! @SYMTestType -//! @SYMPREQ PREQ1426 -//! @SYMTestCaseDesc Test reading thread list -//! @SYMTestActions Several calls to read the thread list -//! @SYMTestExpectedResults KErrNone and the debug thread ID set -//! @SYMTestPriority High -//! @SYMTestStatus Implemented -//--------------------------------------------- -void CRunModeAgent::TestThreadList() - { - TInt err=KErrNone; - TBool found = FALSE; - - test.Next(_L("TestThreadList - Read Thread List\n")); - - TFindThread find(KWildCard); - TFullName name; - while(find.Next(name)==KErrNone) - { - RThread thread; - err = thread.Open(find); - if (err == KErrNone) - { - RProcess process; - thread.Process(process); - if (((TUint32)process.Id() == iProcessID) && - (name.Find(ThreadName1) != KErrNotFound)) - { - found = TRUE; - iThreadID = thread.Id(); - } - } - thread.Close(); - } - - test(found==TRUE); - } - - -//--------------------------------------------- -//! @SYMTestCaseID KBase-0187 -//! @SYMTestType -//! @SYMPREQ PREQ1426 -//! @SYMTestCaseDesc Test reading and writing thread memory -//! @SYMTestActions Several call to read and write blocks of thread memory -//! @SYMTestExpectedResults KErrNone -//! @SYMTestPriority High -//! @SYMTestStatus Implemented -//--------------------------------------------- -void CRunModeAgent::TestMemoryAccess() -{ - TInt err=KErrNone; - TMemoryInfo MemoryInfo; - TInt i; - - test.Next(_L("TestMemoryAccess - Read Memory\n")); - - for (i = 0; i < SYMBIAN_RMDBG_MEMORYSIZE; i++) - { - gMemoryAccessBytes.Append(i); - } - - MemoryInfo.iAddress = (TUint32)(&gMemoryAccessBytes[0]); - MemoryInfo.iSize = SYMBIAN_RMDBG_MEMORYSIZE; - - HBufC8 *data = HBufC8::NewLC(SYMBIAN_RMDBG_MEMORYSIZE); - TPtr8 ptr_memread(data->Des()); - MemoryInfo.iDataPtr = &ptr_memread; - -// test.Printf(_L("Read address = 0x%x Read size = 0x%x\n"),MemoryInfo.iAddress,MemoryInfo.iSize); - - err = iServSession.ReadMemory(iThreadID, &MemoryInfo); - - for (i = 0; i < MemoryInfo.iSize; i++) - { - if (ptr_memread.Ptr()[i] != gMemoryAccessBytes[i]) - { - err = KErrCorrupt; - } - } - - - // Test out writing memory. - test.Next(_L("TestMemoryAccess - Write Memory\n")); -// test.Printf(_L("Write address = 0x%x Write size = 0x%x\n"),MemoryInfo.iAddress,MemoryInfo.iSize); - if (err== KErrNone) - { - // Now reset the buffer - for (i = 0; i < SYMBIAN_RMDBG_MEMORYSIZE; i++) - { - gMemoryAccessBytes[i] = 0; - } - - // Write our data into the buffer - err = iServSession.WriteMemory(iThreadID, &MemoryInfo); - - for (i = 0; i < MemoryInfo.iSize; i++) - { - if (ptr_memread.Ptr()[i] != gMemoryAccessBytes[i]) - { - err = KErrCorrupt; - } - } - - } - - if (gMemoryAccessBytes[5] == 0) - { - err = KErrCorrupt; - } - - CleanupStack::PopAndDestroy(data); - test(err==KErrNone); - } - - -//--------------------------------------------- -//! @SYMTestCaseID KBase-0188 -//! @SYMTestType -//! @SYMPREQ PREQ1426 -//! @SYMTestCaseDesc Test suspending and resuming a task -//! @SYMTestActions Suspends a thread checks the contents of a variable then waits and tests it hasnt changed -//! @SYMTestExpectedResults KErrNone -//! @SYMTestPriority High -//! @SYMTestStatus Implemented -//--------------------------------------------- -void CRunModeAgent::TestSuspendResume() - { - TInt err; - - test.Next(_L("TestSuspendResume - Suspend\n")); - // Suspend the thread - err = iServSession.SuspendThread(iThreadID); - test(err==KErrNone); - TInt localtestdata; - localtestdata = TestData; - - // Wait 3 seconds (suspends this thread) and hopefully resumes the - // thread we are controlling via the iServSession.SuspendThread request - User::After(3000000); - - // Now check data hasnt changed - test(localtestdata==TestData); - - // Resume the thread - test.Next(_L("TestSuspendResume - Resume\n")); - err = iServSession.ResumeThread(iThreadID); - test(err==KErrNone); - - // Wait 3 seconds (suspends this thread) and hopefully resumes the - // thread we are controlling via the iServSession.SuspendThread request - User::After(3000000); - - // Now check that the thread being controlled has resumed and is - // updating the variable - test(localtestdata!=TestData); - } - -void CRunModeAgent::ClientAppL() -// -// Performs each test in turn -// - { - test.Start(_L("ClientAppL")); - - TestProcessList(); - TestThreadList(); - TestMemoryAccess(); - TestSuspendResume(); - test.End(); - } - -GLDEF_C TInt E32Main() -// -// Entry point for run mode debug driver test -// - { - TInt ret = KErrNone; - - // client - CTrapCleanup* trap = CTrapCleanup::New(); - if (!trap) - return KErrNoMemory; - - RunModeAgent = CRunModeAgent::NewL(); - if (RunModeAgent != NULL) - { - test.Title(); - - __UHEAP_MARK; - TRAPD(r,RunModeAgent->ClientAppL()); - ret = r; - __UHEAP_MARKEND; - - delete RunModeAgent; - } - - delete trap; - - return ret; - }