// Copyright (c) 2001-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:
//
// INCLUDES
#include "ctlbsclientpostp193.h"
#include "ctlbsposclientholder.h"
#include <e32keys.h>
// CONSTANTS
// ================= MEMBER FUNCTIONS =======================
// ---------------------------------------------------------
// Constructor.
// ---------------------------------------------------------
CT_LbsClientPosTp193::CT_LbsClientPosTp193(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
{
_LIT(KTestName, "TP193 - Maximum number of Clients");
SetTestStepName(KTestName);
}
// ---------------------------------------------------------
// Destructor.
// ---------------------------------------------------------
CT_LbsClientPosTp193::~CT_LbsClientPosTp193()
{
}
// ---------------------------------------------------------
// CT_LbsClientPosTp193::CloseTest
// Always called after the test, even if the test leaves
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CT_LbsClientPosTp193::CloseTest()
{
}
// ---------------------------------------------------------
// CT_LbsClientPosTp193::StartL
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CT_LbsClientPosTp193::StartL()
{
SetupPsyL(iUidTestPsy2);
User::After(2000000);
const TInt KNrOfClients = 25;
CT_LbsPosClientHolder* clients = CT_LbsPosClientHolder::NewLC(KNrOfClients,iUidTestPsy2);
TTime starttime,stoptime;
starttime.UniversalTime();
clients->MakeRequests();
stoptime.UniversalTime();
// Substract total delay incurred due to TestPsy2...i.e 2sec
TInt duration=stoptime.Int64()-starttime.Int64()-2000000;
_LIT(KMessage,"25 simultaneous requests from 25 different sessions with a psy completed in %d microsec");
TBuf<256> message;
message.Format(KMessage,duration);
INFO_PRINTF1(message);
if(duration>3000000)
{
_LIT(KTime, "Time taken>3 sec");
INFO_PRINTF1(KTime);
}
//check the result of the request
//only KErrNoMemory or KErrNone is allowed.
// CONSTANTS
TPositionInfo position[KNrOfClients];
TTimeIntervalMicroSeconds reqTime[KNrOfClients];
TInt status;
TBool error = EFalse;
TBuf<150> buf;
//some printing mostly used for information purpose.
for (TInt i = 0; i < KNrOfClients; i++)
{
clients->GetResult(status, position[i], reqTime[i], i);
if (status != 0)
{
_LIT(KError, "The position requested could not be retrieved, status = %d");
buf.Format(KError, status);
ERR_PRINTF1(buf);
if (status != -4)
{
error = ETrue;
}
}
_LIT(KReqMsg, "client %d request time: %d");
buf.Format(KReqMsg, i, reqTime[i].Int64());
INFO_PRINTF1(buf);
_LIT(KSeparator, "********");
INFO_PRINTF1(KSeparator);
}
if (error)
{
_LIT(KErrorCode, "The requests was not completed with KErrNoMemory or KErrNone");
LogErrorAndLeaveL(KErrorCode);
}
CleanupStack::PopAndDestroy(clients); //clients
}