diff -r 675a964f4eb5 -r 35751d3474b7 cryptoservices/filebasedcertificateandkeystores/source/generic/server/tokenserverdebug.cpp --- a/cryptoservices/filebasedcertificateandkeystores/source/generic/server/tokenserverdebug.cpp Tue Jul 21 01:04:32 2009 +0100 +++ b/cryptoservices/filebasedcertificateandkeystores/source/generic/server/tokenserverdebug.cpp Thu Sep 10 14:01:51 2009 +0300 @@ -1,116 +1,116 @@ -/* -* Copyright (c) 2004-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: -* tokenserverdebug.h -* -*/ - - -#ifdef _DEBUG - -#include "tokenserverdebug.h" -#include - -TInt TokenServerDebug::iCounter = 0; -TInt TokenServerDebug::iStartCount = 0; -TInt TokenServerDebug::iPauseCount = 0; -TInt TokenServerDebug::iInitialAllocCount = 0; - -_LIT(KHeapErrorFile, "\\fsserver_heap_error"); - -void TokenServerDebug::StartOOMTest() - { - iStartCount = User::CountAllocCells(); - iCounter = 0; - } - -void TokenServerDebug::IncHeapFailPoint() - { - __UHEAP_FAILNEXT(iCounter); - ++iCounter; - } - -void TokenServerDebug::ResetHeapFail() - { - __UHEAP_RESET; - } - -void TokenServerDebug::PauseOOMTest() - { - ASSERT(iPauseCount == 0); // Don't nest - if (iCounter) - { - __UHEAP_RESET; - iPauseCount = User::CountAllocCells(); - } - } - -void TokenServerDebug::ResumeOOMTest() - { - if (iCounter) - { - ASSERT(iPauseCount > 0); - __UHEAP_FAILNEXT(iCounter - (iPauseCount - iStartCount)); - iPauseCount = 0; - } - } - -void TokenServerDebug::HeapCheckStart() - { - iInitialAllocCount = User::CountAllocCells(); - } - -void TokenServerDebug::HeapCheckEnd() - { - TInt finalAllocCount = User::CountAllocCells(); - TRAP_IGNORE(HeapErrorL(finalAllocCount != iInitialAllocCount)); - // ignore errors - } - -/** - * Write or delete a file to signify to the test code that there's a memory leak - * in the server. This is unfortunately the best way of doing it since we can't - * trap a panic when the server's shutting down. - */ -void TokenServerDebug::HeapErrorL(TBool aError) - { - RFs fs; - User::LeaveIfError(fs.Connect()); - - TDriveUnit sysDrive (fs.GetSystemDrive()); - TDriveName driveName(sysDrive.Name()); - TFileName heapErrFile (driveName); - heapErrFile.Append(KHeapErrorFile); - - if (aError) - { - RFile file; - TInt err = file.Create(fs, heapErrFile, EFileWrite | EFileShareExclusive); - if (err != KErrNone || err != KErrAlreadyExists) - { - User::Leave(err); - } - file.Close(); - } - else - { - TInt err = fs.Delete(heapErrFile); - if (err != KErrNone && err != KErrNotFound) - { - User::Leave(err); - } - } - } - -#endif +/* +* Copyright (c) 2004-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: +* tokenserverdebug.h +* +*/ + + +#ifdef _DEBUG + +#include "tokenserverdebug.h" +#include + +TInt TokenServerDebug::iCounter = 0; +TInt TokenServerDebug::iStartCount = 0; +TInt TokenServerDebug::iPauseCount = 0; +TInt TokenServerDebug::iInitialAllocCount = 0; + +_LIT(KHeapErrorFile, "\\fsserver_heap_error"); + +void TokenServerDebug::StartOOMTest() + { + iStartCount = User::CountAllocCells(); + iCounter = 0; + } + +void TokenServerDebug::IncHeapFailPoint() + { + __UHEAP_FAILNEXT(iCounter); + ++iCounter; + } + +void TokenServerDebug::ResetHeapFail() + { + __UHEAP_RESET; + } + +void TokenServerDebug::PauseOOMTest() + { + ASSERT(iPauseCount == 0); // Don't nest + if (iCounter) + { + __UHEAP_RESET; + iPauseCount = User::CountAllocCells(); + } + } + +void TokenServerDebug::ResumeOOMTest() + { + if (iCounter) + { + ASSERT(iPauseCount > 0); + __UHEAP_FAILNEXT(iCounter - (iPauseCount - iStartCount)); + iPauseCount = 0; + } + } + +void TokenServerDebug::HeapCheckStart() + { + iInitialAllocCount = User::CountAllocCells(); + } + +void TokenServerDebug::HeapCheckEnd() + { + TInt finalAllocCount = User::CountAllocCells(); + TRAP_IGNORE(HeapErrorL(finalAllocCount != iInitialAllocCount)); + // ignore errors + } + +/** + * Write or delete a file to signify to the test code that there's a memory leak + * in the server. This is unfortunately the best way of doing it since we can't + * trap a panic when the server's shutting down. + */ +void TokenServerDebug::HeapErrorL(TBool aError) + { + RFs fs; + User::LeaveIfError(fs.Connect()); + + TDriveUnit sysDrive (fs.GetSystemDrive()); + TDriveName driveName(sysDrive.Name()); + TFileName heapErrFile (driveName); + heapErrFile.Append(KHeapErrorFile); + + if (aError) + { + RFile file; + TInt err = file.Create(fs, heapErrFile, EFileWrite | EFileShareExclusive); + if (err != KErrNone || err != KErrAlreadyExists) + { + User::Leave(err); + } + file.Close(); + } + else + { + TInt err = fs.Delete(heapErrFile); + if (err != KErrNone && err != KErrNotFound) + { + User::Leave(err); + } + } + } + +#endif