diff -r 76f9aaeefbab -r e13acd883fbe common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp25.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp25.cpp Tue Nov 10 13:50:58 2009 +0000 @@ -0,0 +1,175 @@ +// 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 "ctlbsclientpostp25.h" +#include "ctlbsrequester.h" +#include +#include + +// CONSTANTS + +// ==================== LOCAL FUNCTIONS ==================== + +// --------------------------------------------------------- +// EnablePsyL. Enables a specific psy +// --------------------------------------------------------- +// +void EnablePsyL( + CPosModules& aDb, + TUid aPsy) + { + CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC(); + // Enable Psy + moduleUpdate->SetUpdateAvailability(ETrue); + aDb.UpdateModuleL(aPsy, *moduleUpdate); + CleanupStack::PopAndDestroy(moduleUpdate); + + } + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------- +// Constructor. +// --------------------------------------------------------- +CT_LbsClientPosTp25::CT_LbsClientPosTp25(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent) + { + _LIT(KTestName, "TP25 - Request location from multiple PSYs"); + SetTestStepName(KTestName); + } + +// Destructor +CT_LbsClientPosTp25::~CT_LbsClientPosTp25() + { + delete iFastPsy; + delete iMediumPsy; + delete iSlowPsy; + } + +// --------------------------------------------------------- +// CT_LbsClientPosTp25::StartL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsClientPosTp25::StartL() + { + + CPosModules* db = CPosModules::OpenL(); + CleanupStack::PushL(db); + + EnablePsyL(*db, iUidTestPsy12);// 0 sec + EnablePsyL(*db, iUidTestPsy4);// 3 sec + EnablePsyL(*db, iUidTestPsy9);// 6 sec + + CleanupStack::PopAndDestroy(); // db + + iFastPsy = CT_LbsRequester::NewL(iUidTestPsy12, this, Logger()); + iMediumPsy = CT_LbsRequester::NewL(iUidTestPsy4, this, Logger()); + iSlowPsy = CT_LbsRequester::NewL(iUidTestPsy9, this, Logger()); + iCompletedRequests = 0; + + TTime starttime,stoptime; + starttime.UniversalTime(); + + // Make request to slow psy first + iSlowPsy->StartRequest(); + iFastPsy->StartRequest(); + iMediumPsy->StartRequest(); + + // Wait for completion + CActiveScheduler::Start(); + + stoptime.UniversalTime(); + + // Substract total delay incurred due to PSY's...i.e 6sec + TInt duration=stoptime.Int64()-starttime.Int64()-6000000; + + + _LIT(KMessage,"3 simultaneous requests from 3 different sessions completed in %d microsec"); + TBuf<256> error; + error.Format(KMessage,duration); + INFO_PRINTF1(error); + + if(duration>3000000) + { + _LIT(KTime, "Time taken>3 sec"); + INFO_PRINTF1(KTime); + } + + // Evaluate result + _LIT(KPsyFast, "testpsy12"); + _LIT(KPsyMedium, "testpsy4"); + _LIT(KPsySlow, "testpsy9"); + + _LIT(KReturnedErrorCode, "Positioner %S returned error code %d"); + TBuf<256> output; + output.Format(KReturnedErrorCode, &KPsyFast, iFastPsy->CompletionCode()); + AssertTrueL(iFastPsy->CompletionCode() == KErrNone, output); + + output.Format(KReturnedErrorCode, &KPsyMedium, iMediumPsy->CompletionCode()); + AssertTrueL(iMediumPsy->CompletionCode() == KErrNone, output); + + output.Format(KReturnedErrorCode, &KPsySlow, iSlowPsy->CompletionCode()); + AssertTrueL(iSlowPsy->CompletionCode() == KErrNone, output); + _LIT(KWrongComplOrder, "Positioners completed out of order"); + + AssertTrueL( + iFastPsy->CompletionTimeUTC() < iMediumPsy->CompletionTimeUTC() && + iMediumPsy->CompletionTimeUTC() < iSlowPsy->CompletionTimeUTC(), + KWrongComplOrder); + + delete iFastPsy; + delete iMediumPsy; + delete iSlowPsy; + iFastPsy = NULL; + iMediumPsy = NULL; + iSlowPsy = NULL; + + _LIT(KTEXT, "TP25 Passed! :)"); + INFO_PRINTF1(KTEXT); + } + +// --------------------------------------------------------- +// CT_LbsClientPosTp25::RequestCompleteL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsClientPosTp25::RequestCompleteL() + { + const TInt KNofRequesters = 3; + if (++iCompletedRequests == KNofRequesters) + { + CActiveScheduler::Stop(); + } + } + +// --------------------------------------------------------- +// CT_LbsClientPosTp25::AssertTrueL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsClientPosTp25::AssertTrueL(TBool aCondition, const TDesC& aErrorMsg) + { + if (!aCondition) + { + LogErrorAndLeaveL(aErrorMsg); + } + }