commsprocess/commsrootserverconfig/te_cap_rootserver/te_rootserverplatsecConnectStep.cpp
changeset 0 dfb7c4ff071f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsprocess/commsrootserverconfig/te_cap_rootserver/te_rootserverplatsecConnectStep.cpp	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,170 @@
+// Copyright (c) 2004-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:
+// Root Server Connection Test Step
+// 
+//
+
+/**
+ @file 
+*/
+#include "te_rootserverplatsecConnectStep.h"
+#include "te_rootserverplatsecConnectSuiteDefs.h"
+#include <rsshared.h>
+
+/**
+ Destructor
+*/
+CRootServerPlatSecConnectStep::~CRootServerPlatSecConnectStep()
+	{
+	}
+
+
+/**
+ Constructor
+*/
+CRootServerPlatSecConnectStep::CRootServerPlatSecConnectStep()
+	{
+	// **MUST** call SetTestStepName in the constructor as the controlling
+	// framework uses the test step name immediately following construction to set
+	// up the step's unique logging ID.
+	SetTestStepName(KRootServerPlatSecConnectStep);
+	}
+
+
+/**
+ @return - TVerdict code
+ Override of base class virtual
+*/
+TVerdict CRootServerPlatSecConnectStep::doTestStepPreambleL()
+	{
+	return TestStepResult();
+	}
+
+
+
+/**
+ @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.
+*/
+TVerdict CRootServerPlatSecConnectStep::doTestStepL()
+	{
+
+	SetTestStepResult(EFail);	
+
+	INFO_PRINTF1(_L("Root Server Connection Attempt"));  //Block start 
+
+	// capabilities required for connect to succeed
+	TCapability cap[] = {ECapabilityNetworkControl, ECapability_Limit};
+	
+	TSecurityInfo info;
+	info.Set(RProcess());
+	TBool expectFail = EFalse;
+	
+	for (TInt i = 0; cap[i] != ECapability_Limit; i++) 
+		{
+	
+		if (!(info.iCaps.HasCapability(cap[i])))
+			{
+			expectFail = ETrue;
+			break;
+			}
+		
+		}
+	
+	if (expectFail) 
+		{
+		INFO_PRINTF1(_L("Insufficient capabilities - expecting test to Fail"));
+		}
+		else
+		{
+		INFO_PRINTF1(_L("Sufficient capabilities - expecting test to Pass"));
+		}
+
+	// attempt a connection to Root server
+	TInt result;
+	iSessionHelper = new(ELeave) CSessionConnectionHelper ();
+	CleanupStack::PushL (iSessionHelper);
+
+	result = iSessionHelper->OpenSession (RootServer::KRootServerName, TVersion (0, 0, 0));
+	INFO_PRINTF2(_L("CreateSession() returned with %d"), result);
+	
+	if (result == KErrNotFound) 
+		{
+		// not running attempt to start it
+    	_LIT(KRootServerExe, "c32exe.exe");
+		INFO_PRINTF1(_L("RootServer not running, attempting to start it."));
+
+    	RProcess process;
+    	result = process.Create (KRootServerExe, KNullDesC);
+
+		TRequestStatus status;
+    	if (result == KErrNone)
+			{
+			process.Rendezvous (status);
+			process.Resume ();
+			User::WaitForRequest (status);
+			process.Close ();
+			result = status.Int ();
+			}
+			
+	   	INFO_PRINTF2(_L("RootServer startup completed with [Return Value: %d] "), result);
+	    result = iSessionHelper->OpenSession (RootServer::KRootServerName, TVersion (0, 0, 0));
+		INFO_PRINTF2(_L("CreateSession() returned with %d"), result);
+		}
+	
+	if ( (result != KErrNone) && (result != KErrPermissionDenied))
+		{
+		// inconclusive result
+		SetTestStepResult (EInconclusive);
+		return TestStepResult();
+		}
+
+	if (result == KErrNone) iSessionHelper->Close ();
+	CleanupStack::PopAndDestroy (iSessionHelper);
+	
+	if (expectFail)
+		{
+		if (result == KErrPermissionDenied) 
+			{
+			// expected to fail and did
+			SetTestStepResult (EPass);
+			}
+		}
+	else
+		{
+		if (result == KErrNone) 
+			{
+			// expected to pass and did
+			SetTestStepResult (EPass);
+			}
+		}
+	
+	
+
+	return TestStepResult();
+	}
+
+
+
+/**
+ @return - TVerdict code
+ Override of base class virtual
+*/
+TVerdict CRootServerPlatSecConnectStep::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+