kerneltest/e32test/rm_debug/crashmonitor/t_crashmonitor.cpp
changeset 296 94f2adf59133
parent 293 0659d0e1a03c
child 297 b2826f67641f
--- a/kerneltest/e32test/rm_debug/crashmonitor/t_crashmonitor.cpp	Wed Oct 20 13:58:28 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1066 +0,0 @@
-// Copyright (c) 2008-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 SCM Libraries
-// 
-//
-
-#include "t_crashmonitor.h"
-
-#include <crashlogwalker.h>
-
-using namespace Debug;
-
-/**
- * Test suite version
- */
-const TVersion testVersion(1,1,0);
-
-
-/**
- * Constructor
- */
-CSCMLibraryClient::CSCMLibraryClient():
-	iNonCachedWriter(iBuffer, EFalse),
-	iCachedWriter(iBuffer, EFalse),
-	iWriter(NULL),
-	iReader(iBuffer)	
-	{
-	}
-
-/**
- * First phase constructor
- */
-CSCMLibraryClient* CSCMLibraryClient::NewL()
-	{
-	CSCMLibraryClient* self = new(ELeave) CSCMLibraryClient();
-  	self->ConstructL();
-	return self;
-	}
-
-/**
- * Destructor
- */
-CSCMLibraryClient::~CSCMLibraryClient()
-	{
-	}
-
-/**
- * ConstructL
- */
-void CSCMLibraryClient::ConstructL()
-	{}
-
-
-
-/**
- * Prints usage of this test suite
- */
-void CSCMLibraryClient::PrintUsage()
-	{
-	test.Printf(_L("Invoke with arguments:\n"));
-	test.Printf(_L("-r: run specified tests in reverse order\n"));
-	test.Printf(_L("-h: display usage information\n"));
-	test.Printf(_L("-v: display version\n"));
-	test.Printf(_L("<number>: test number to run, can specify more than one from the following list:\n"));
-	test.Printf(_L("Press any key for list...\n"));
-	test.Getch();
-	// if there are too many of these they won't fit on the screen! Stick another Getch() in if there get too many
-	for(TInt i=0; i<KMaxTests; i++)
-		{
-		test.Printf(_L("%2d: %S\n"), i, &(iTestArray[i].iFunctionName));
-		}
-	test.Printf(_L("Press any key...\n"));
-	test.Getch();
-	}
-
-/**
- * Parses arguments from command line
- * @param aMode Argument mode
- * @param aTests Array of tests
- */
-void CSCMLibraryClient::ParseCommandLineL(TUint32& aMode, RArray<TInt>& aTests)
-	{
-	// get the length of the command line arguments
-	TInt argc = User::CommandLineLength();
-
-	// allocate a buffer for the command line arguments and extract the data to it
-	HBufC* commandLine = HBufC::NewLC(argc);
-	TPtr commandLineBuffer = commandLine->Des();
-	User::CommandLine(commandLineBuffer);
-
-	// reset mode
-	aMode = (TTestMode)0;
-
-	// create a lexer and read through the command line
-	TLex lex(*commandLine);
-	while (!lex.Eos())
-		{
-		// expecting the first character to be a '-'
-		if (lex.Get() == '-')
-			{
-			TChar arg = lex.Get();
-			switch (arg)
-				{
-				case 'v':
-					//print out the help
-					aMode |= EModeVersion;
-					break;
-				case 'h':
-					//print out the help
-					aMode |= EModeHelp;
-					break;
-				case 'r':
-					//store the fact that we want to run in reverse
-					aMode |= EModeReverse;
-					break;
-				default:
-					// unknown argument so leave
-					User::Leave(KErrArgument);
-				}
-			}
-		else
-			{
-			lex.UnGet();
-			TInt testNumber;
-			User::LeaveIfError(lex.Val(testNumber));
-			if( (testNumber<0) || (testNumber>=KMaxTests) )
-				{
-				User::Leave(KErrArgument);
-				}
-			aTests.AppendL(testNumber);
-			}
-		lex.SkipSpace();
-		}
-	// if no tests specified then run them all
-	if(aTests.Count() == 0)
-		{
-		aMode |= EModeAll;
-		}
-
-	// do clean up
-	CleanupStack::PopAndDestroy(commandLine);
-	}
-
-/**
- * This will run all tests in the suite
- */
-void CSCMLibraryClient::ClientAppL()
-	{	
-	
-	FillArray();
-	
-	test.Start(_L("ClientAppL"));
-
-	RArray<TInt> testsToRun;
-	TUint32 testMode = 0;
-	ParseCommandLineL(testMode, testsToRun);
-
-	//if help or version mode specified then just print out the relevant stuff and quit
-	if((testMode & EModeHelp) || (testMode & EModeVersion))
-		{
-		if(testMode & EModeHelp)
-			{
-			PrintUsage();
-			}
-		if(testMode & EModeVersion)
-			{
-			PrintVersion();
-			}
-		test.End();
-		return;
-		}
-
-	if(testMode & EModeAll)
-		{
-		for(TInt i=0; i<KMaxTests; i++)
-			{
-			testsToRun.AppendL(i);
-			}
-		}
-
-	// if EModeReverse specified then reverse the array elements
-	TInt numberOfTests = testsToRun.Count();
-	if(testMode & EModeReverse)
-		{
-		for(TInt i=0; i<(numberOfTests>>1); i++)
-			{
-			TInt temp = testsToRun[i];
-			testsToRun[i] = testsToRun[numberOfTests - (i+1)];
-			testsToRun[numberOfTests - (i+1)] = temp;
-			}
-		}
-
-	HelpStartTestTimer();
-
-	// first run al tests with non cached writer
-	iWriter = &iNonCachedWriter;
-	for(TInt i=0; i<numberOfTests; i++)
-		{
-		RunTest(testsToRun[i]);
-		}
-	
-	iWriter = &iCachedWriter;	
-	for(TInt i=0; i<numberOfTests; i++)
-		{
-		RunTest(testsToRun[i]);
-		}
-
-	
-	testsToRun.Close();
-
-	HelpStopTestTimer();
-
-	ReportPerformance();
-	
-	test.End();
-	}
-
-/**
- * This fills our array of test functions with function pointers to tests
- */
-void CSCMLibraryClient::FillArray() 
-	{
-	
-	//iTestArray[0] = new TFunctionData();
-	iTestArray[0].iFunctionPtr = &CSCMLibraryClient::TestCheckSum;
-	iTestArray[0].iFunctionName = _L("TestCheckSum");
-	
-	iTestArray[1].iFunctionPtr = &CSCMLibraryClient::TestLockDataSerialization;
-	iTestArray[1].iFunctionName = _L("TestLockDataSerialization");
-	
-	iTestArray[2].iFunctionPtr = &CSCMLibraryClient::TestOffsetsHeaderSerialization;
-	iTestArray[2].iFunctionName = _L("TestOffsetsHeaderSerialization");
-	
-	iTestArray[3].iFunctionPtr = &CSCMLibraryClient::TestInfoHeaderSerialization;
-	iTestArray[3].iFunctionName = _L("TestInfoHeaderSerialization");
-	
-	iTestArray[4].iFunctionPtr = &CSCMLibraryClient::TestRawData;
-	iTestArray[4].iFunctionName = _L("TestRawData");
-
-	iTestArray[5].iFunctionPtr = &CSCMLibraryClient::TestProcessData;
-	iTestArray[5].iFunctionName = _L("TestProcessData");
-	
-	iTestArray[6].iFunctionPtr = &CSCMLibraryClient::TestThreadData;
-	iTestArray[6].iFunctionName = _L("TestThreadData");
-	
-	iTestArray[7].iFunctionPtr = &CSCMLibraryClient::TestThreadStack;
-	iTestArray[7].iFunctionName = _L("TestThreadStack");
-		
-	iTestArray[8].iFunctionPtr = &CSCMLibraryClient::TestRegisterValue;
-	iTestArray[8].iFunctionName = _L("TestRegisterValue");
-		
-	iTestArray[9].iFunctionPtr = &CSCMLibraryClient::TestRegisterSet;
-	iTestArray[9].iFunctionName = _L("TestRegisterSet");
-
-	iTestArray[10].iFunctionPtr = &CSCMLibraryClient::TestMemoryDump;
-	iTestArray[10].iFunctionName = _L("TestMemoryDump");
-	
-	iTestArray[11].iFunctionPtr = &CSCMLibraryClient::TestCodeSegmentSet;
-	iTestArray[11].iFunctionName = _L("TestCodeSegmentSet");
-	
-	iTestArray[12].iFunctionPtr = &CSCMLibraryClient::TestCodeSegment;
-	iTestArray[12].iFunctionName = _L("TestCodeSegment");
-	
-	iTestArray[13].iFunctionPtr = &CSCMLibraryClient::TestTraceDump;
-	iTestArray[13].iFunctionName = _L("TestTraceDump");
-	
-	iTestArray[14].iFunctionPtr = &CSCMLibraryClient::TestVariantSpecificData;
-	iTestArray[14].iFunctionName = _L("TestVariantSpecificData");
-	
-	iTestArray[15].iFunctionPtr = &CSCMLibraryClient::TestRomHeaderData;
-	iTestArray[15].iFunctionName = _L("TestRomHeaderData");
-	
-	iTestArray[16].iFunctionPtr = & CSCMLibraryClient::TestSCMLockData;
-	iTestArray[16].iFunctionName = _L("TestSCMLockData");
-
-	};
-
-/**
- * Entry point for crash monitor tests
- */
-GLDEF_C TInt E32Main()
-	{
-	TInt ret = KErrNone;
-	
-	CTrapCleanup* trap = CTrapCleanup::New();
-	if (!trap)
-		return KErrNoMemory;
-	
-   	test.Title();
-   	CSCMLibraryClient* tester = CSCMLibraryClient::NewL();
-   	if (tester != NULL)
-       {
-        __UHEAP_MARK;
-	    TRAP(ret,tester->ClientAppL());
-	    __UHEAP_MARKEND;
-
-	   delete tester;
-       }
-       
-	delete trap;
-	return ret;
-	}
-
-/**
- * Runs a given test identified by argument
- * @param aTestNumber Test to run
- */
-void CSCMLibraryClient::RunTest(TInt aTestNumber)
-	{
-	if( (aTestNumber<0) || (aTestNumber>=KMaxTests) )
-		{
-		User::Panic(_L("Test number out of range"), aTestNumber);
-		}
-	__UHEAP_MARK;
-	
-	if(iTestArray[aTestNumber].iFunctionPtr)
-		{
-		test.Printf(_L("pre-run test %d"), aTestNumber);
-		(this->*(iTestArray[aTestNumber].iFunctionPtr))();
-		test.Printf(_L("post-run test %d"), aTestNumber);
-		}
-
-	__UHEAP_MARKEND;
-	}
-
-/**
- * Prints the version of this test suite
- */
-void CSCMLibraryClient::PrintVersion()
-	{
-	test.Printf(_L("\nt_crashmonitor_lib.exe\nVersion: %S\n"), &(testVersion.Name()));
-	test.Printf(_L("Press any key...\n"));
-	test.Getch();
-	}
-/**
- * Reports performance metrics from all the tests
- */
-void CSCMLibraryClient::ReportPerformance(void)
-	{
-	test.Printf(_L("\nPerformance\n"));
-	test.Printf(_L("========================\n"));
-
-	
-	// Runtime
-	TInt ticks = HelpGetTestTicks();
-#ifndef __WINS__
-	test (ticks != 0);  
-#endif
-	TInt nkTicksPerSecond = HelpTicksPerSecond();
-
-#ifndef __WINS__
-	test (nkTicksPerSecond != 0);
-#endif
-
-	test.Printf(_L("Total test runtime: %d seconds\n"),ticks/nkTicksPerSecond);
-
-	test.Printf(_L("\n"));
-	}
-
-/**
- * Returns the number of nanokernel ticks in one second
- * @return Number of nanokernel ticks. 0 if unsuccesful
- */
-TInt CSCMLibraryClient::HelpTicksPerSecond(void)
-	{
-	TInt nanokernel_tick_period;
-	HAL::Get(HAL::ENanoTickPeriod, nanokernel_tick_period);
-	
-	ASSERT(nanokernel_tick_period != 0);
-
-	static const TInt KOneMillion = 1000000;
-
-	return KOneMillion/nanokernel_tick_period;
-	}
-
-void CSCMLibraryClient::DoWrite(MByteStreamSerializable& aObjectToWrite, TInt aPosition)
-	{
-	if(iWriter == &iCachedWriter)
-		{
-		iCachedWriter.SetPosition(aPosition);
-		test(aObjectToWrite.Serialize(iCachedWriter) == KErrNone);
-		iCachedWriter.FlushCache();	
-		}
-	else if(iWriter == &iNonCachedWriter)
-		{
-		iNonCachedWriter.SetPosition(aPosition);		
-		test(aObjectToWrite.Serialize(iNonCachedWriter) == KErrNone);	
-		}
-	else
-		{
-		// no writer
-		test(EFalse);
-		}
-	}
-
-// BASE granted test id's 2364 to 2394
-
-//---------------------------------------------
-// !@SYMTestCaseID KBASE-T_SCMLIB-2364
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TScmChecksum structure 
-//! @SYMTestActions TScmChecksum serialized & then deserialized
-//! @SYMTestExpectedResults TScmChecksum structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestCheckSum()
-	{
-	test.Next(_L("TestCheckSum\n"));
-	
-	TScmChecksum chksm1;
-	chksm1.Reset();
-	
-	TInt blocksize1 = 123;
-	TInt blocksize2 = 166;
-	
-	TScmChecksum chksm2;
-	chksm2.Reset();
-		
-	test(ChecksumHelper(chksm1, blocksize1, iBuffer, KBufLen));
-	test(ChecksumHelper(chksm2, blocksize2, iBuffer, KBufLen));
-		
-	test(chksm1  == chksm2);
-
-	}
-
-TBool CSCMLibraryClient::ChecksumHelper(TScmChecksum& aChecksum, TUint aBlocksize, TUint8* aBuffer, TUint aBufferLen) 
-	{
-	if( aBlocksize == 0 || aBufferLen == 0 )
-		{
-		return EFalse;
-		}
-	
-	TInt remaining = aBufferLen;
-	TInt pos = 0;
-		
-	while(remaining > aBlocksize)
-		{		
-		aChecksum.ChecksumBlock(aBuffer + pos, aBlocksize);
-		pos += aBlocksize;
-		remaining -= aBlocksize;
-		}
-	
-	aChecksum.ChecksumBlock(aBuffer + pos, remaining);
-	pos += remaining;
-	
-	return (pos == aBufferLen);
-	}
-
-//---------------------------------------------
-//! @SYMTestCaseID KBASE-T_SCMLIB-2365
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TSCMLockData structure 
-//! @SYMTestActions TSCMLockData serialized & then deserialized
-//! @SYMTestExpectedResults TSCMLockData structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//--------------------------------------------- 
-void CSCMLibraryClient::TestLockDataSerialization()
-	{	
-	test.Next(_L("TestLockDataSerialization\n"));	
-
-	TSCMLockData lockData1;
-	
-	//Arbitrary values
-	lockData1.SetLockCount(10);
-	lockData1.SetMutexHoldCount(17);
-	lockData1.SetMutexThreadWaitCount(36);
-
-	DoWrite(lockData1);
-	
-	iReader.SetPosition(0);
-	//Test deserialisation works
-	TSCMLockData lockData2;	
-	test(lockData2.Deserialize(iReader) == KErrNone);
-	
-	//Test we got back the correct object
-	test(lockData1 == lockData2);
-	}
-
-//---------------------------------------------
-//! //! @SYMTestCaseID KBASE-T_SCMLIB-2366
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TCrashOffsetsHeader structure 
-//! @SYMTestActions TCrashOffsetsHeader serialized & then deserialized
-//! @SYMTestExpectedResults TCrashOffsetsHeader structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//--------------------------------------------- 
-void CSCMLibraryClient::TestOffsetsHeaderSerialization()
-	{
-	test.Next(_L("TestOffsetsHeaderSer ialization\n"));	
-	
-	TCrashOffsetsHeader header1;
-	header1.iCTFullRegOffset = 123; 
-	header1.iCTUsrStkOffset = 456;
-	header1.iCTSvrStkOffset = 789;
-	header1.iCPMetaOffset = 1001;
-	header1.iCTMetaOffset = 99;		
-	header1.iCPCodeSegOffset = 1234;
-	header1.iSysUsrStkOffset = 3456;
-	header1.iSysSvrStkOffset = 255;
-	header1.iSysUsrRegOffset = 999;
-	header1.iSysSvrRegOffset = 2002;
-	header1.iTLstOffset = 3003;
-	header1.iPLstOffset = 4004;
-	header1.iSysCodeSegOffset = 5005;
-	header1.iExcStkOffset = 6006;
-	header1.iTraceOffset = 1233;
-	header1.iScmLocksOffset = 3421;
-	header1.iKernelHeapOffset = 89;
-	header1.iVarSpecInfOffset = 0;
-	header1.iRomInfoOffset = 123;
-
-	DoWrite(header1);
-	
-	iReader.SetPosition(0);
-	TCrashOffsetsHeader header2;
-	
-	test(header2.Deserialize(iReader) == KErrNone);
-	
-	test(header2 == header1);
-	
-	}
-
-//---------------------------------------------
-//! @SYMTestCaseID KBASE-T_SCMLIB-2367
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TCrashInfoHeader structure 
-//! @SYMTestActions TCrashInfoHeader serialized & then deserialized
-//! @SYMTestExpectedResults TCrashInfoHeader structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestInfoHeaderSerialization()
-	{
-	test.Next(_L("TestInfoHeaderSerialization\n"));	
-
-	TCrashInfoHeader infoHeader1;
-	infoHeader1.iLogSize = 5000;	
-	infoHeader1.iFlashAlign = 4;
-	infoHeader1.iCachedWriterSize = 16;
-	infoHeader1.iPid = 1001;
-	infoHeader1.iTid = 2002;
-	infoHeader1.iExitType = 90;
-	infoHeader1.iExitReason = 23;	
-	infoHeader1.iExcCode = 8899;
-	infoHeader1.iCrashTime = 12345;	
-	infoHeader1.iCrashId = 23;
-	infoHeader1.iFlashBlockSize = 256 * 1024;
-	infoHeader1.iFlashPartitionSize = 1024 * 1024;
-	
-	TVersion ver(21,43,54);
-	
-	infoHeader1.iSCMDataTypesVersion = ver;
-
-	DoWrite(infoHeader1);
-	
-	iReader.SetPosition(0);
-	TCrashInfoHeader infoHeader2;
-	
-	test(infoHeader2.Deserialize(iReader) == KErrNone);
-	
-	test(infoHeader2 == infoHeader1);
-		
-	}
-
-//---------------------------------------------
-//! @SYMTestCaseID KBASE-T_SCMLIB-2368 
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TRawData structure 
-//! @SYMTestActions TRawData serialized & then deserialized
-//! @SYMTestExpectedResults TRawData structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestRawData()
-	{
-	test.Next(_L("TestRawData\n"));
-	
-	const TInt KLen = 256;
-	
-	TUint8 data[KLen];
-	
-	for(TInt i=0;i<KLen;i++)
-		{
-		data[i] = ((i<<2) % KLen) + i;
-		}
-	
-	TRawData rawData1;
-
-	rawData1.iLength = KLen;
-	rawData1.iData.Set(const_cast<TUint8*>(data), KLen, KLen);;
-
-	DoWrite(rawData1);
-	
-	TPtr8 p(iBuffer, KBufLen, KBufLen);
-	TCrashLogWalker walker(p);
-	TInt pos = 0;
-	TInt len = 0;
-	TRawData* rawData2 = walker.GetRawDataTypeL(pos, len, p, 0);
-
-	CleanupStack::PushL(rawData2);
-	
-	test(rawData1.iLength == rawData2->iLength);
-	test(rawData1.iData.Compare(rawData2->iData) == 0);
-	
-	CleanupStack::PopAndDestroy(rawData2);
-	}
-
-//---------------------------------------------
-//! @SYMTestCaseID KBASE-T_SCMLIB-2369 
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TProcessData structure 
-//! @SYMTestActions TProcessData serialized & then deserialized
-//! @SYMTestExpectedResults TProcessData structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestProcessData()
-	{
-	test.Next(_L("TestProcessData\n"));
-	
-	TProcessData procData1;
-	
-	procData1.iPriority = 99;		
-	procData1.iPid = MAKE_TINT64(34567,12345);
-	
-	
-	procData1.iName.Zero();
-	for(TInt i=0;i<KMaxProcessName;i++)
-		{	
-		procData1.iName.Append( TChar( (i%60) + 32 ));
-		}
-	
-	procData1.iNamesize = KMaxProcessName;		
-
-	DoWrite(procData1);
-	
-	TProcessData procData2;
-	iReader.SetPosition(0);
-	
-	test(procData2.Deserialize(iReader) == KErrNone);
-	test(procData1.iPriority == procData1.iPriority);	
-	test(procData1.iPid == procData2.iPid);	
-	test(procData1.iNamesize == procData2.iNamesize);
-	test(procData1.iName.Compare(procData2.iName) == 0);	
-	}
-
-//---------------------------------------------
-//! @SYMTestCaseID KBASE-T_SCMLIB-2370 
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TThreadData structure 
-//! @SYMTestActions TThreadData serialized & then deserialized
-//! @SYMTestExpectedResults TThreadData structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestThreadData()
-	{
-	test.Next(_L("TestThreadData\n"));
-	
-	TThreadData threadData1;
-
-	threadData1.iPriority = 3455;
-	threadData1.iTid = MAKE_TINT64(34998,18345);
-	threadData1.iOwnerId = MAKE_TINT64(34448,48345);
-	threadData1.iSvcSP = 67272;
-	threadData1.iSvcStack = 888882;
-	threadData1.iSvcStacksize = 4535;
-	threadData1.iUsrSP = 892;
-	threadData1.iUsrStack = 7727;
-	threadData1.iUsrStacksize = 343;
-	threadData1.iLastCpu = 12312;
-	threadData1.iSvcHeap = 8738;
-	threadData1.iSvcHeapSize = 4;
-	
-	threadData1.iNamesize = TThreadData::KMaxThreadName;
-	
-	threadData1.iName.Zero();
-	for(TInt i=0;i<TThreadData::KMaxThreadName;i++)
-		{	
-		threadData1.iName.Append( TChar( (i%60) + 32 ));
-		}
-
-
-	DoWrite(threadData1);
-	
-	iReader.SetPosition(0);
-	TThreadData threadData2;
-	
-	test(threadData2.Deserialize(iReader) == KErrNone);
-	
-
-	test(threadData1.iPriority == threadData2.iPriority);
-	test(threadData1.iTid == threadData2.iTid);
-	test(threadData1.iOwnerId == threadData2.iOwnerId);
-	test(threadData1.iSvcSP == threadData2.iSvcSP);
-	test(threadData1.iSvcStack == threadData2.iSvcStack);
-	test(threadData1.iSvcStacksize == threadData2.iSvcStacksize);
-	test(threadData1.iUsrSP == threadData2.iUsrSP);
-	test(threadData1.iUsrStack == threadData2.iUsrStack);
-	test(threadData1.iUsrStacksize == threadData2.iUsrStacksize);
-	test(threadData1.iLastCpu == threadData2.iLastCpu);
-	test(threadData1.iSvcHeap == threadData2.iSvcHeap);
-	test(threadData1.iSvcHeapSize == threadData2.iSvcHeapSize);	
-	test(threadData1.iNamesize == threadData2.iNamesize);
-	test(threadData1.iName.Compare(threadData2.iName) == 0);	
-	}
-
-//---------------------------------------------
-//! @SYMTestCaseID KBASE-T_SCMLIB-2371 
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TThreadStack structure 
-//! @SYMTestActions TThreadStack serialized & then deserialized
-//! @SYMTestExpectedResults TThreadStack structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestThreadStack()
-	{
-	test.Next(_L("TestThreadStack\n"));
-	
-	TThreadStack threadStack1;
-	threadStack1.iStackType = TThreadStack::ESvrStack;
-	threadStack1.iThreadId = MAKE_TINT64(774998,17345);
-	
-	DoWrite(threadStack1);
-
-	iReader.SetPosition(0);
-	TThreadStack threadStack2;
-	test(threadStack2.Deserialize(iReader) == KErrNone);
-	
-	test(threadStack1.iStackType == threadStack2.iStackType);
-	test(threadStack1.iThreadId == threadStack2.iThreadId);
-	}
-
-//---------------------------------------------
-//! @SYMTestCaseID KBASE-T_SCMLIB-2372 
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TRegisterValue structure 
-//! @SYMTestActions TRegisterValue serialized & then deserialized
-//! @SYMTestExpectedResults TRegisterValue structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestRegisterValue()
-	{
-	test.Next(_L("TestregisterValue\n"));
-	TRegisterValue regValue1;
-	
-	regValue1.iOwnId = MAKE_TINT64(55498,58345);
-	regValue1.iType = 3456;
-	regValue1.iClass = 45;
-	regValue1.iSubId = 5546;
-	regValue1.iSize = 2;
-	
-	DoWrite(regValue1);
-	
-	iReader.SetPosition(0);
-	TRegisterValue regValue2;
-	test(regValue2.Deserialize(iReader) == KErrNone);
-	
-	test(regValue1.iOwnId == regValue2.iOwnId);
-	test(regValue1.iType == regValue2.iType);
-	test(regValue1.iClass == regValue2.iClass);
-	test(regValue1.iSubId == regValue2.iSubId);
-	test(regValue1.iSize == regValue2.iSize);	
-	
-	switch(regValue1.iSize)
-		{
-		case 0:
-			test(regValue1.iValue8 == regValue2.iValue8);
-			break;
-		case 1:
-			test(regValue1.iValue16 == regValue2.iValue16);
-			break;
-		case 2:
-			test(regValue1.iValue32 == regValue2.iValue32);
-			break;
-		case 3:
-			test(regValue1.iValue64 == regValue2.iValue64);
-			break;
-		default:
-			test(EFalse);
-			break;
-		}	
-	}
-
-//---------------------------------------------
-//! @SYMTestCaseID KBASE-T_SCMLIB-2373 
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TRegisterSet structure 
-//! @SYMTestActions TRegisterSet serialized & then deserialized
-//! @SYMTestExpectedResults TRegisterSet structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestRegisterSet()
-	{
-	test.Next(_L("TRegisterSet\n"));
-	
-	TRegisterSet set1;	
-	set1.iNumRegisters = 3784;
-	DoWrite(set1);
-	
-	iReader.SetPosition(0); 
-	TRegisterSet set2;
-	test(set2.Deserialize(iReader) == KErrNone);
-		
-	test(set1.iNumRegisters == set2.iNumRegisters);	
-	}
-
-//---------------------------------------------
-//! @SYMTestCaseID KBASE-T_SCMLIB-2374 
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TMemoryDump structure 
-//! @SYMTestActions TMemoryDump serialized & then deserialized
-//! @SYMTestExpectedResults TMemoryDump structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestMemoryDump()
-	{
-	test.Next(_L("TestMemoryDump\n"));
-	
-	TMemoryDump memDump1;
-	memDump1.iStartAddress = 0x23FACED0;
-	memDump1.iPid = MAKE_TINT64(1234, 5678);
-	memDump1.iLength = 999;
-	
-	DoWrite(memDump1);
-	
-	iReader.SetPosition(0); 
-	TMemoryDump memDump2;
-	test(memDump2.Deserialize(iReader) == KErrNone);
-
-	test(memDump1.iStartAddress = memDump2.iStartAddress);
-	test(memDump1.iPid = memDump2.iPid);
-	test(memDump1.iLength = memDump2.iLength);
-	}
-
-//---------------------------------------------
-//! @SYMTestCaseID KBASE-T_SCMLIB-2375 
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TCodeSegmentSet structure 
-//! @SYMTestActions TCodeSegmentSet serialized & then deserialized
-//! @SYMTestExpectedResults TCodeSegmentSet structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestCodeSegmentSet()
-	{
-	test.Next(_L("TestCodeSegmentSet\n"));
-	TCodeSegmentSet tss1;
-		
-	tss1.iNumSegs = 45;	
-	tss1.iPid = MAKE_TINT64(28272,671717);
-	
-	DoWrite(tss1);
-	
-	iReader.SetPosition(0);
-	TCodeSegmentSet tss2;
-	test(tss2.Deserialize(iReader) == KErrNone);
-	
-	test(tss1.iNumSegs == tss2.iNumSegs);
-	test(tss1.iPid == tss2.iPid);
-	}
-
-//---------------------------------------------
-//! @SYMTestCaseID KBASE-T_SCMLIB-2376 
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TCodeSegment structure 
-//! @SYMTestActions TCodeSegment serialized & then deserialized
-//! @SYMTestExpectedResults TCodeSegment structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestCodeSegment()
-	{
-	test.Next(_L("TestCodeSegment\n"));
-	
-	TCodeSegment cs1;
-	cs1.iCodeSegType = EExeCodeSegType;	
-	cs1.iCodeSegMemInfo.iCodeBase = 345;
-	cs1.iCodeSegMemInfo.iCodeSize = 566;
-	cs1.iCodeSegMemInfo.iConstDataBase = 776;
-	cs1.iCodeSegMemInfo.iConstDataSize = 626267;
-	cs1.iCodeSegMemInfo.iInitialisedDataBase = 873;
-	cs1.iCodeSegMemInfo.iInitialisedDataSize = 52625;
-	cs1.iCodeSegMemInfo.iUninitialisedDataBase = 3737;
-	cs1.iCodeSegMemInfo.iUninitialisedDataSize = 53535;
-	
-	cs1.iName.Zero();
-	for(TInt i=0;i<TCodeSegment::KMaxSegmentNameSize;i++)
-		{
-		cs1.iName.Append( TChar( (i%60) + 32 ));
-		}
-
-	cs1.iNameLength = TCodeSegment::KMaxSegmentNameSize;
-	cs1.iXip = ETrue;
-	
-	DoWrite(cs1);
-	
-	iReader.SetPosition(0);	
-	TCodeSegment cs2;
-	test(cs2.Deserialize(iReader) == KErrNone);
-		
-	test(cs1.iCodeSegType == cs2.iCodeSegType);	
-	test(cs1.iCodeSegMemInfo.iCodeBase == cs2.iCodeSegMemInfo.iCodeBase);
-	test(cs1.iCodeSegMemInfo.iCodeSize == cs2.iCodeSegMemInfo.iCodeSize);
-	test(cs1.iCodeSegMemInfo.iConstDataBase == cs2.iCodeSegMemInfo.iConstDataBase);
-	test(cs1.iCodeSegMemInfo.iConstDataSize == cs2.iCodeSegMemInfo.iConstDataSize); 
-	test(cs1.iCodeSegMemInfo.iInitialisedDataBase == cs2.iCodeSegMemInfo.iInitialisedDataBase);
-	test(cs1.iCodeSegMemInfo.iInitialisedDataSize == cs2.iCodeSegMemInfo.iInitialisedDataSize);
-	test(cs1.iCodeSegMemInfo.iUninitialisedDataBase == cs2.iCodeSegMemInfo.iUninitialisedDataBase);
-	test(cs1.iCodeSegMemInfo.iUninitialisedDataSize == cs2.iCodeSegMemInfo.iUninitialisedDataSize);
-		
-	test(cs1.iNameLength == cs2.iNameLength);
-	test(cs1.iName.Compare(cs2.iName) == 0);	
-	test(cs1.iXip == cs2.iXip);
-	
-	}
-
-//---------------------------------------------
-//! @SYMTestCaseID KBASE-T_SCMLIB-2377 
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TTraceDump structure 
-//! @SYMTestActions TTraceDump serialized & then deserialized
-//! @SYMTestExpectedResults TTraceDump structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestTraceDump()
-	{
-	test.Next(_L("TestTraceDump\n"));
-	
-	TTraceDump td1;
-	td1.iSizeOfMemory = 378282;
-	td1.iNumberOfParts = 440;
-	
-	DoWrite(td1);
-	
-	iReader.SetPosition(0);
-
-	TTraceDump td2;
-	test(td2.Deserialize(iReader) == KErrNone);
-	test(td1.iSizeOfMemory == td2.iSizeOfMemory);
-	test(td1.iNumberOfParts == td2.iNumberOfParts);
-	}
-	
-
-//---------------------------------------------
-//! @SYMTestCaseID KBASE-T_SCMLIB-2379 
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TVariantSpecificData structure 
-//! @SYMTestActions TVariantSpecificData serialized & then deserialized
-//! @SYMTestExpectedResults TVariantSpecificData structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestVariantSpecificData()
-	{
-	test.Next(_L("TestVariantSpecificData\n"));		
-	TVariantSpecificData vsd1;
-	
-	vsd1.iSize = 37372;
-	DoWrite(vsd1);
-	
-	iReader.SetPosition(0);		
-	TVariantSpecificData vsd2;
-	test(vsd2.Deserialize(iReader) == KErrNone);	
-	}
-
-//---------------------------------------------
-//! @SYMTestCaseID KBASE-T_SCMLIB-2380 
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TRomHeaderData structure 
-//! @SYMTestActions TRomHeaderData serialized & then deserialized
-//! @SYMTestExpectedResults TRomHeaderData structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestRomHeaderData()
-	{
-	test.Next(_L("TestRomHeaderData\n"));
-	
-	TRomHeaderData rhd1;
-	rhd1.iMajorVersion = 12;
-	rhd1.iMinorVersion = 2;							
-	rhd1.iBuildNumber = 7828;				
-	rhd1.iTime = MAKE_TINT64(716171, 62672);
-	
-	DoWrite(rhd1);
-	
-	iReader.SetPosition(0);
-	TRomHeaderData rhd2;
-	test(rhd2.Deserialize(iReader) == KErrNone);
-	test(rhd1.iMajorVersion == rhd2.iMajorVersion);
-	test(rhd1.iMinorVersion == rhd2.iMinorVersion);							
-	test(rhd1.iBuildNumber == rhd2.iBuildNumber);				
-	test(rhd1.iTime == rhd2.iTime);		
-	}
-
-//---------------------------------------------
-//! //! @SYMTestCaseID KBASE-T_SCMLIB-2381 
-//! @SYMTestType
-//! @SYMPREQ PREQ1700
-//! @SYMTestCaseDesc Ensures we can serialise and deserialise the TSCMLockData structure 
-//! @SYMTestActions TSCMLockData serialized & then deserialized
-//! @SYMTestExpectedResults <> structure serialized / deserialized ok
-//! @SYMTestPriority High
-//! @SYMTestStatus Implemented
-//---------------------------------------------
-void CSCMLibraryClient::TestSCMLockData()
-	{
-	
-	test.Next(_L("TestSCMLockData\n"));
-
-	TSCMLockData ld1;	
-	ld1.SetMutexHoldCount(3);
-	ld1.SetLockCount(4);
-	ld1.SetMutexThreadWaitCount(5);
-
-	DoWrite(ld1);
-	
-	iReader.SetPosition(0);
-	TSCMLockData ld2;
-	test(ld2.Deserialize(iReader) == KErrNone);
-	
-	test(ld1.MutexHoldCount() == ld2.MutexHoldCount());
-	test(ld1.MutexThreadWaitCount() == ld2.MutexThreadWaitCount());
-	test(ld1.LockCount() == ld2.LockCount());
-	test(ld1 == ld2);
-	test(!(ld1 != ld2));
-	}	
-		
-//eof
-