supl/locationomasuplpostester/epos_comasuplpostestermodulecfg/src/epos_comasuplmultiplesessiontest.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:24:21 +0100
branchRCL_3
changeset 45 6b6920c56e2f
parent 0 667063e416a2
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "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:  Controls the execution of multiple session test.
*
*/

#include <ecom/implementationinformation.h>
#include "epos_comasuplmultiplesessiontest.h"
#include "epos_comasupltesthandler.h"
#include "epos_comasuplpostesterlogger.h"

#include "epos_comasuplpositionvelocitytest.h"
#include "epos_comasuplgetsuplinfocanceltest.h"
#include "epos_comasuplgetsuplinfotest.h"
#include "epos_comasuplmsgfilereadertest.h"
#include "epos_comasuplpossessioncreationtest.h"
#include "epos_comasuplpositioncanceltest.h"
#include "epos_comasuplcancelinitializetest.h"
#include "epos_comasuplpositiontest.h"
#include "epos_comasuplsessiontest.h"

_LIT8(KMultipleCanceled, "Info: Multiple Session Test Canceled.");
_LIT8(KMultipleComplete, "Info: Multiple Session test complete.");
const TInt KPositionReqCount = 2;

// ---------------------------------------------------------------------------
// Named constructor
// ---------------------------------------------------------------------------
//
COMASuplMultipleSessionTest* COMASuplMultipleSessionTest::NewL(
									COMASuplPosHandlerBase* aPosHandler
									, CImplementationInformation& aImplInfo
									, TInt aSessionCount
									, COMASuplPosTesterCategory* aCallBack)
	{
	COMASuplMultipleSessionTest* self = new(ELeave)
				COMASuplMultipleSessionTest(aPosHandler, aImplInfo
									, aSessionCount, aCallBack);
	CleanupStack::PushL(self);
	self->ConstructL();
	CleanupStack::Pop(self);
	return self;
	}

// ---------------------------------------------------------------------------
// Destructor
// ---------------------------------------------------------------------------
//
COMASuplMultipleSessionTest::~COMASuplMultipleSessionTest()
	{
	iTestList.ResetAndDestroy();
	iTestList.Close();
	}

// ---------------------------------------------------------------------------
// Second phase constructor
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::ConstructL()
	{
	AddCancelInitializeTestL();
	AddPosSessionCreationTestL();
	AddGetSuplInfoTestL();
	AddGetSuplInfoCancelTestL();
	
	AddMsgFileReaderTestL();
	AddPositionVelocityTestL();
	AddPositionCancelTestL();
	AddPositionTestL();
	AddSessionTestL();
	}

// ---------------------------------------------------------------------------
// Constructor
// ---------------------------------------------------------------------------
//
COMASuplMultipleSessionTest::COMASuplMultipleSessionTest(
							COMASuplPosHandlerBase* aPosHandler
							, CImplementationInformation& aImplInfo
							, TInt aSessionCount
							, COMASuplPosTesterCategory* aCallBack)
							: COMASuplPosTesterCategory(aCallBack)
							, iPosHandler(*aPosHandler)
							, iImplInfo(aImplInfo)
							, iSessionCount(aSessionCount)
							, iTestExecuted(0)
							, iTotalTests(0)
	{
	
	}

// ---------------------------------------------------------------------------
// Initializes all test class objects
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::InitializeL(COMASuplTestHandler* aTestHandler
						, COMASuplPosTesterLogger& aLogger, TInt /*aTestNo*/)
	{
	iTestHandler = aTestHandler;
	iLogger = &aLogger;
	TInt listSize = iTestList.Count();
	//Initialize the list
	for(TInt count = 0; count < listSize; count++)
		{
		//Initialize
		iTestList[count]->InitializeL(iTestHandler, *iLogger, count + 1);
		}
	}

// ---------------------------------------------------------------------------
// Starts testing of test classes one by one.
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::StartTestingL()
	{
	TInt listSize = iTestList.Count();
	for(TInt count = 0; count < listSize; count++)
		{
		//Create objects. Append to list.
		iTestList[count]->StartTestingL();
		}
	}

// ---------------------------------------------------------------------------
// Handles an active object's request completion event.
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::RunL()
	{
	
	}

// ---------------------------------------------------------------------------
// Implements cancellation of an outstanding request.
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::DoCancel()
	{
	
	}

// ---------------------------------------------------------------------------
// Handles a leave occurring in the request completion event handler RunL().
// ---------------------------------------------------------------------------
//
TInt COMASuplMultipleSessionTest::RunError(TInt /*aError*/)
	{
	return KErrNone;
	}

// ---------------------------------------------------------------------------
// If user selects to cancel tests, all tests are canceled.
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::TestingCancelled(const TDesC8& /*aInfo*/)
	{
	iTestExecuted++;
	Cancel();
	iTestHandler->Cancel();
	iTestingStatus = ETestCancelled;
	TInt listSize = iTestList.Count();
	for(TInt sessionNo = 0; sessionNo < listSize; sessionNo++)
		{
		iTestList[sessionNo]->Cancel();
		}
	CActiveScheduler::Stop();
	iInfo++;
	iLogger->WriteLine(KMultipleCanceled, iTestNo);
	}

// ---------------------------------------------------------------------------
// Logs about testing completion of a session
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::TestingComplete(const TDesC8& aInfo)
	{
	iTestExecuted++;
	iInfo++;
	iLogger->WriteLine(aInfo, iTestNo);
	if(iTestExecuted == iTotalTests)
		{
		iTestHandler->Cancel();
		Cancel();
		CActiveScheduler::Stop();
		iTestingStatus = ETestComplete;
		iInfo++;
		iLogger->WriteLine(KMultipleComplete);
		}
	}

// ---------------------------------------------------------------------------
// Logs that testing has been aborted for a session.
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::TestingAborted(const TDesC8& aError)
	{
	iTestExecuted++;
	iError++;
	iLogger->WriteLine(aError);
	if(iTestExecuted == iTotalTests)
		{
		Cancel();
		iTestHandler->Cancel();
		iTestingStatus = ETestAborted;
		CActiveScheduler::Stop();
		iInfo++;
		iLogger->WriteLine(KMultipleComplete);
		}
	}

// ---------------------------------------------------------------------------
// Adds GetSuplInfoCancelTest to the list of tests to be executed.
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::AddGetSuplInfoCancelTestL()
	{
	for(TInt count = 0; count < iSessionCount; count++)
		{
		//Create objects. Append to list.
		COMASuplGetSuplInfoCancelTest* test
						 = COMASuplGetSuplInfoCancelTest::NewL(
							iPosHandler, this);
		CleanupStack::PushL(test);
		test->CreateRequestListL(1, 1, 1, 1, 1);
		iTotalTests++;
		COMASuplPosTesterCategory* testCategory = static_cast<COMASuplPosTesterCategory*>(test);		
		iTestList.Append(testCategory);
		CleanupStack::Pop(test);
		}
	}

// ---------------------------------------------------------------------------
// Adds GetSuplInfoTest to the list of tests to be executed.
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::AddGetSuplInfoTestL()
	{
	for(TInt count = 0; count < iSessionCount; count++)
		{
		//Create objects. Append to list.
		COMASuplGetSuplInfoTest* test
						 = COMASuplGetSuplInfoTest::NewL(
							iPosHandler, this);
		CleanupStack::PushL(test);
		test->CreateRequestListL(1, 1, 1, 1, 1);
		iTotalTests++;
		COMASuplPosTesterCategory* testCategory = static_cast<COMASuplPosTesterCategory*>(test);		
		iTestList.Append(testCategory);
		CleanupStack::Pop(test);
		}
	}

// ---------------------------------------------------------------------------
// Adds MsgFileReaderTest to the list of tests to be executed.
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::AddMsgFileReaderTestL()
	{
	TFileName msgFile;//Default message file will be selected
	for(TInt count = 0; count < iSessionCount; count++)
		{
		//Create objects. Append to list.
		COMASuplPosTesterCategory* test
						 =  COMASuplMsgFileReaderTest::NewL(msgFile, this);
		
		iTotalTests++;		
		iTestList.Append(test);
		}
	}

// ---------------------------------------------------------------------------
// Adds PosSessionCreationTest to the list of tests to be executed.
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::AddPosSessionCreationTestL()
	{
	for(TInt count = 0; count < iSessionCount; count++)
		{
		//Create objects. Append to list.
		COMASuplPosTesterCategory* test =  COMASuplPosSessionCreationTest
											::NewL(iImplInfo, this);
		iTotalTests++;		
		iTestList.Append(test);
		}
	}

// ---------------------------------------------------------------------------
// Adds PositionVelocityTest to the list of tests to be executed.
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::AddPositionVelocityTestL()
	{
	TFileName fileName;
	for(TInt count = 0; count < iSessionCount; count++)
		{
		//Create objects. Append to list.
		COMASuplPosTesterCategory* test
						 = COMASuplPositionVelocityTest::NewL(
							&iPosHandler, KPositionReqCount, fileName, this);
		iTotalTests++;		
		iTestList.Append(test);
		}
	
	}

// ---------------------------------------------------------------------------
// Adds PositionCancelTest to the list of tests to be executed.
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::AddPositionCancelTestL()
	{
	TFileName fileName;
	for(TInt count = 0; count < iSessionCount; count++)
		{
		//Create objects. Append to list.
		COMASuplPosTesterCategory* test
						 = COMASuplPositionCancelTest::NewL(
							&iPosHandler, KPositionReqCount, fileName, this);
		iTotalTests++;		
		iTestList.Append(test);
		}
	
	}

// ---------------------------------------------------------------------------
// Adds CancelInitializeTest to the list of tests to be executed.
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::AddCancelInitializeTestL()
	{
	for(TInt count = 0; count < iSessionCount; count++)
		{
		//Create objects. Append to list.
		COMASuplPosTesterCategory* test
						 = COMASuplCancelInitializeTest::NewL(
						 			iImplInfo.ImplementationUid()
									, this);
		iTotalTests++;		
		iTestList.Append(test);
		}
	
	}

// ---------------------------------------------------------------------------
// Adds PositionTest to the list of tests to be executed.
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::AddPositionTestL()
	{
	for(TInt count = 0; count < iSessionCount; count++)
		{
		//Create objects. Append to list.
		COMASuplPosTesterCategory* test = COMASuplPositionTest::NewL(
													&iPosHandler, this);
		iTotalTests++;		
		iTestList.Append(test);
		}
	
	}

// ---------------------------------------------------------------------------
// Adds SessionTest to the list of tests to be executed.
// ---------------------------------------------------------------------------
//
void COMASuplMultipleSessionTest::AddSessionTestL()
	{
	for(TInt count = 0; count < iSessionCount; count++)
		{
		//Create objects. Append to list.
		COMASuplSessionTest* test = COMASuplSessionTest::NewL(
													iPosHandler, this);
		CleanupStack::PushL(test);
		test->CreateRequestListL(1, 1, 1, 1, 1);
		iTotalTests++;
		COMASuplPosTesterCategory* testCategory = static_cast<COMASuplPosTesterCategory*>(test);		
		iTestList.Append(testCategory);
		CleanupStack::Pop(test);
		}
	}