diff -r 000000000000 -r 9cfd9a3ee49c lbstest/lbstestproduct/LbsROMspecificSuites/src/ctpositionerteststep.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbstest/lbstestproduct/LbsROMspecificSuites/src/ctpositionerteststep.cpp Tue Feb 02 01:50:39 2010 +0200 @@ -0,0 +1,291 @@ +/* +* 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 "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: +* Example CTestStep derived implementation +* +*/ + + +/** + @file + @internalTechnology + @test +*/ +#include "ctpositionerteststep.h" +#include "ctlbstestsuitedefs.h" +#include +#include + +CPositionerTestStep::~CPositionerTestStep() +/** + * Destructor + */ + { + } + +CPositionerTestStep::CPositionerTestStep() +/** + * Constructor + */ + { + SetTestStepName(KPositionerTestStep); + } + +TVerdict CPositionerTestStep::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class virtual + */ + { + + CTe_TestSuiteStepBase::doTestStepPreambleL(); + SetTestStepResult(EPass); + return TestStepResult(); + } + + +TVerdict CPositionerTestStep::doTestStepL() +/** + * @return - TVerdict code + * Override of base class pure virtual + * Our implementation only gets called if the base class doTestStepPreambleL() did + * not leave. That being the case, the current test result value will be EPass. + */ + { + + _LIT(KTestName, "CPositionerTestStep::doTestStepL()"); + INFO_PRINTF1(KTestName); + + if (TestStepResult()==EPass) + { + TInt testIndex = KErrNotFound; + if(!GetIntFromConfig(ConfigSection(),KTestCaseIdInt,testIndex)) + { + User::Leave(KErrNotFound); + } + _LIT(KTestName, "Call test by index"); + INFO_PRINTF1(KTestName); + TestByIndexL(testIndex); + } + return TestStepResult(); + } + +void CPositionerTestStep::TestByIndexL(TInt aIndex) + { + switch (aIndex) + { + case 1: + _LIT(KTestName1, "LBS Full ROM Variant2 - Location Monitor startup/closedown "); + INFO_PRINTF1(KTestName1); + TdVariant2_FullRom_Check_LocMonitor_PersistentL(); + break; + case 2: + _LIT(KTestName2, "LBS StandAlonePrivacy ROM Variant2 - Location Monitor startup/closedown"); + INFO_PRINTF1(KTestName2); + TdVariant2_StandAlonePrivacyRom_Check_LocMonitor_TransientL(); + break; + + default: + _LIT(KTestName10, "This test step doesn't exist"); + INFO_PRINTF1(KTestName10); + SetTestStepResult(EFail); + break; + + } + } + + +TVerdict CPositionerTestStep::TdVariant2_StandAlonePrivacyRom_Check_LocMonitor_TransientL() + { + + // Check if the location monitor process is transient in + // the standalone privacy mode + //_LIT(KLocMonitorExeName, "\\sys\\bin\\locationmonitor.exe"); + + // Validate that the location monitor is not started by the root + // in this configuration + _LIT(KLocMonitorServerName, "locationmonitor.exe"); + TFindServer findServer(KLocMonitorServerName); + TInt err; + TFullName name; + err = findServer.Next(name); + + if ((err==KErrNone)||(err==KErrAlreadyExists)) + { + _LIT(KFailLog, "Location monitor process started by root - so test case failed"); + ERR_PRINTF1(KFailLog); + SetTestStepResult(EFail); + } + else + { + + _LIT(KPassInfoLog, "Location Monitor NOT started by the root process"); + INFO_PRINTF1(KPassInfoLog); + + RPositionServer server; + User::LeaveIfError(server.Connect()); + CleanupClosePushL(server); + + User::After(100000); + + _LIT(KTest, "Session with epos location server opened successfully"); + INFO_PRINTF1(KTest); + + RPositioner positioner; + TInt err = positioner.Open(server); + + if(KErrNone != err) + { + ERR_PRINTF1(KFailedOpenPositioner); + SetTestStepResult(EFail); + CleanupStack::PopAndDestroy(&server); + return TestStepResult(); + } + + CleanupClosePushL(positioner); + _LIT(KTest2, "SubSession with epos location server opened successfully"); + INFO_PRINTF1(KTest2); + + // Validate that the location monitor gets started up when + // a client opens a session with the EPos location server. + _LIT(KLocMonitorServerName, "locationmonitor.exe"); + TFindServer findServer2(KLocMonitorServerName); + TFullName name2; + err = -1; // assign the default value of -1 [KErrNotFound] + err = findServer2.Next(name2); + if ((err!=KErrNone)&&(err!=KErrAlreadyExists)) + { + _LIT(KFailInfoLog, "Location Monitor NOT started even after a client connects to the epos location server"); + ERR_PRINTF1(KFailInfoLog); + SetTestStepResult(EFail); + return TestStepResult(); + } + + if ((err==KErrNone)||(err==KErrAlreadyExists)) + { + _LIT(KPassInfoLog, "Location Monitor started after a client connects to the epos location server"); + INFO_PRINTF1(KPassInfoLog); + } + + CleanupStack::PopAndDestroy(2, &server); + User::After(15000000); + + //Validate that the location monitor no longer exists after the client + //closes the handle with the location server + TFindServer findServer3(KLocMonitorServerName); + TFullName name3; + err = 0; // assign the default value of 0 [KErrNone] + err = findServer3.Next(name3); + if ((err==KErrNone)||(err==KErrAlreadyExists)) + { + _LIT(KFailInfoLog, "Location Monitor NOT shut down even after all the clients disconnect from the epos location server"); + ERR_PRINTF1(KFailInfoLog); + SetTestStepResult(EFail); + return TestStepResult(); + } + + } + + return TestStepResult(); + + } + +TVerdict CPositionerTestStep::TdVariant2_FullRom_Check_LocMonitor_PersistentL() + { + + // The root process should have already been started before entering + // this function [by start lbs test step] + //_LIT(KLocMonitorExeName, "\\sys\\bin\\locationmonitor.exe"); + _LIT(KLocMonitorServerName, "locationmonitor.exe"); + + // Check if the location monitor process is running + TFindServer findServer(KLocMonitorServerName); + TInt err; + TFullName name; + err = findServer.Next(name); + + if ((err!=KErrNone)&&(err!=KErrAlreadyExists)) + { + _LIT(KFailLog, "Location monitor process not started by root - so test case failed"); + ERR_PRINTF1(KFailLog); + SetTestStepResult(EFail); + } + else + { + + _LIT(KPassInfoLog, "Location Monitor started by the root process"); + INFO_PRINTF1(KPassInfoLog); + + RPositionServer server; + User::LeaveIfError(server.Connect()); + CleanupClosePushL(server); + + _LIT(KTest, "Session with epos location server opened successfully"); + INFO_PRINTF1(KTest); + + RPositioner positioner; + TInt err = positioner.Open(server); + + if(KErrNone != err) + { + ERR_PRINTF1(KFailedOpenPositioner); + SetTestStepResult(EFail); + CleanupStack::PopAndDestroy(&server); + return TestStepResult(); + } + + _LIT(KTest2, "SubSession with epos location server opened successfully"); + INFO_PRINTF1(KTest2); + + //CleanupClosePushL(positioner); + positioner.Close(); + CleanupStack::PopAndDestroy(&server); + User::After(5000); + + // Check if the process exists even after the client + // closes the handle with the location server + + _LIT(KTest3, "Epos location server closed down as the clients are disconnected"); + INFO_PRINTF1(KTest3); + + _LIT(KLocMonitorServerName, "locationmonitor.exe"); + TFindServer findServer2(KLocMonitorServerName); + TFullName name2; + err = -1; // assign the default value of -1 [KErrNotFound] + err = findServer2.Next(name2); + if ((err!=KErrNone)&&(err!=KErrAlreadyExists)) + { + _LIT(KPassInfoLog2, "Location Monitor dies when the epos location server is closed down"); + ERR_PRINTF1(KPassInfoLog2); + SetTestStepResult(EFail); + return TestStepResult(); + } + _LIT(KPassInfoLog2, "Location Monitor exists even after the location server is closed down"); + INFO_PRINTF1(KPassInfoLog2); + } + return TestStepResult(); + + } + + +TVerdict CPositionerTestStep::doTestStepPostambleL() +/** + * @return - TVerdict code + * Override of base class virtual + */ + { + return TestStepResult(); + } + +