diff -r e8c1ea2c6496 -r 8758140453c0 lbs/lbsclient/src/ctlbsclientpostp179.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbs/lbsclient/src/ctlbsclientpostp179.cpp Thu Jan 21 12:53:44 2010 +0000 @@ -0,0 +1,207 @@ +// 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 "Symbian Foundation License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + + + +// INCLUDES +#include "ctlbsclientpostp179.h" +#include "ctlbsposclientholder.h" +#include + +// CONSTANTS +_LIT(KPosPhoneTimeLocaleFormat, + " phone time: %F%H:%F%T:%F%S:%F%C"); + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------- +// Constructor. +// --------------------------------------------------------- +CT_LbsClientPosTp179::CT_LbsClientPosTp179(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent) + { + _LIT(KTestName, "Tp179 - One Client, same PSY"); + SetTestStepName(KTestName); + } + +// --------------------------------------------------------- +// Destructor. +// --------------------------------------------------------- +CT_LbsClientPosTp179::~CT_LbsClientPosTp179() + { + } + +// --------------------------------------------------------- +// CT_LbsClientPosTp179::CloseTest +// Always called after the test, even if the test leaves +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsClientPosTp179::CloseTest() + { + } + +// --------------------------------------------------------- +// CT_LbsClientPosTp179::StartL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsClientPosTp179::StartL() + { + const TInt NumClients = 3; + SetupPsyL(iUidTestPsy12); + + //Make one request, the performance requirement are not valid for + //the first request. + TTime startTime, stopTime; + TTime serverStartTime, serverStopTime; + TTimeIntervalMicroSeconds requestTime, connectionTime; + TBuf<150> buf; + + serverStartTime.UniversalTime(); + ConnectL(); + serverStopTime.UniversalTime(); + + User::LeaveIfError(OpenPositioner()); + + TPositionInfo posInfo = TPositionInfo(); + _LIT(KService, "service"); + // Request data from default psy should be test psy 2 + startTime.UniversalTime(); + TInt err = PerformSyncRequest(KService, &posInfo); + stopTime.UniversalTime(); + + if (err != KErrNone) + { + _LIT(KErrorRequest, "The request was not completed with KErrorNone"); + LogErrorAndLeaveL(KErrorRequest); + } + + requestTime = stopTime.MicroSecondsFrom(startTime); + connectionTime = serverStopTime.MicroSecondsFrom(serverStartTime); + + // Added some extra timing here + _LIT(KDebug, "Connecting to Epos took: %d us"); + buf.Format(KDebug, connectionTime.Int64()); + INFO_PRINTF1(buf); + _LIT(KSeparator, "********"); + INFO_PRINTF1(KSeparator); + buf.Zero(); + _LIT(KFirstRequest, "The first request took: %d us"); + buf.Format(KFirstRequest, requestTime.Int64()); + INFO_PRINTF1(buf); + INFO_PRINTF1(KSeparator); + + CT_LbsPosClientHolder* clients = CT_LbsPosClientHolder::NewLC(NumClients, iUidTestPsy12, ETrue); + + 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,"3 simultaneous requests from 3 different sub-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); + } + + TPositionInfo position[NumClients]; + + TTimeIntervalMicroSeconds + reqTime[NumClients], + reqTimeLimit(5000000), + timeDifferenceLimit(500000); + TInt status; + TBool error = EFalse; + + //some printing mostly used for information purpose. + for (TInt i = 0; i < NumClients; i++) + { + clients->GetResult(status, position[i], reqTime[i], i); + TPosition tmp; + position[i].GetPosition(tmp); + if (status != 0) + { + _LIT(KError, "The position requested could not be retrieved, status = %d"); + buf.Format(KError, status); + ERR_PRINTF1(buf); + error = ETrue; + } + if (reqTime[i].Int64() > reqTimeLimit.Int64()) + { + _LIT(KErrorMsg, "The request time of client %d took more than 5 seconds, req. time = %d microsecs."); + buf.Format(KErrorMsg, i, reqTime[i].Int64()); + ERR_PRINTF1(buf); + error = ETrue; + } + for (TInt j = 0; j < i; j++) + { + _LIT(KReqMsg, "client %d request time: %d"); + + buf.Format(KReqMsg, j, reqTime[j].Int64()); + INFO_PRINTF1(buf); + TPosition posi; + TPosition posj; + position[i].GetPosition(posi); + position[j].GetPosition(posj); + posj.Time().FormatL(buf, KPosPhoneTimeLocaleFormat); + INFO_PRINTF1(buf); + + buf.Format(KReqMsg, i, reqTime[i].Int64()); + INFO_PRINTF1(buf); + posi.Time().FormatL(buf, KPosPhoneTimeLocaleFormat); + INFO_PRINTF1(buf); + + _LIT(KSeparator, "********"); + INFO_PRINTF1(KSeparator); + + if (Abs(reqTime[i].Int64() - reqTime[j].Int64()) > timeDifferenceLimit.Int64()) + { + _LIT(KMsg1, "Requests by client %d and %d wasn't served simultaniously: %d microsecs difference between reqTime."); + TBuf<150> buf; + buf.Format(KMsg1, i, j, Abs(reqTime[i].Int64() - reqTime[j].Int64())); + ERR_PRINTF1(buf); + error = ETrue; + } + if (Abs(posi.Time().Int64() - posj.Time().Int64()) > timeDifferenceLimit.Int64()) + { + _LIT(KMsg2, "Requests by client %d and %d wasn't served simultaniously: %d microsecs difference between phoneTime."); + TBuf<150> buf; + buf.Format(KMsg2, i, j, Abs(posi.Time().Int64() - posj.Time().Int64())); + ERR_PRINTF1(buf); + error = ETrue; + } + } + } + + CleanupStack::PopAndDestroy(); //clients + ClosePositioner(); + + Disconnect(); + + if (error) + User::Leave(KErrGeneral); + }