lbstest/lbstestproduct/LbsROMspecificSuites/src/ctpositionerteststep.cpp
changeset 0 9cfd9a3ee49c
child 45 15a2125aa2f3
--- /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 <lbsareainfo.h>
+#include <lbspositioninfo.h>
+
+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();
+	}
+
+