sysstatemgmt/systemstarter/test/tapstart/src/tapstart_step.cpp
changeset 0 4e1aa6a622a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysstatemgmt/systemstarter/test/tapstart/src/tapstart_step.cpp	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,194 @@
+// Copyright (c) 2007-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:
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <apgtask.h>
+
+#include <apastarter.h>
+#include "tapstart_step.h"
+#include "testapps.h"
+
+_LIT(KApStartDLL, "apstart.dll");
+typedef CApaStarter* (*TFuncNewL)();
+
+CApStartTestStep::CApStartTestStep()
+	{
+	SetTestStepName(KCTestCaseApStart);
+	}
+
+TVerdict CApStartTestStep::doTestStepPreambleL()
+	{
+	// Load the CApaStarter implementation
+	RLibrary lib;
+	User::LeaveIfError(lib.Load(KApStartDLL)); // load the library
+	CleanupClosePushL(lib);		
+	TLibraryFunction ord1 = lib.Lookup(1); // This is the NewL function
+	TFuncNewL funcL = reinterpret_cast<TFuncNewL>(ord1);
+	iAppStart = static_cast<CApaStarter*> (funcL());	
+	CleanupStack::PopAndDestroy(&lib);
+		
+	return CTestStep::doTestStepPreambleL();	
+	}
+
+TVerdict CApStartTestStep::doTestStepPostambleL()
+	{
+	delete iAppStart;
+	iAppStart = NULL;
+	
+ 	return CTestStep::doTestStepPostambleL();
+	}
+
+TVerdict CApStartTestStep::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CApStartTestStep started....\n"));
+	__UHEAP_MARK;
+	
+	RWsSession wsSession;
+	User::LeaveIfError(wsSession.Connect());
+	CleanupClosePushL(wsSession);	
+	
+	TRAPD(err, TestStartAndForgetL(wsSession));
+	TESTE(KErrNone == err, err);
+
+	TRAP(err, TestStartAndFollowUpL(wsSession));
+	TESTE(KErrNone == err, err);
+	
+	CleanupStack::PopAndDestroy();	//wsSession.Close();
+	
+	TRAP(err, TestInitApparcL());
+	TESTE(KErrNone == err, err);
+
+	__UHEAP_MARKEND; 
+	INFO_PRINTF1(_L(".... CApStartTestStep finished!!"));
+	
+	return TestStepResult();
+	}
+
+/**
+Old Test CaseID 		APPFWK-APSTART-0001
+New Test CaseID 		DEVSRVS-SYSSTART-APSTART-0001
+ */
+
+
+void CApStartTestStep::TestStartAndForgetL(RWsSession& aWsSession)
+	{
+	INFO_PRINTF1(_L("Entering test case: APPFWK-APSTART-0001"));
+	
+	TApaTask task = TestStartL(NULL, aWsSession);
+	
+	if(task.Exists())
+		{
+		task.KillTask();
+		INFO_PRINTF1(_L("Leaving test case: APPFWK-APSTART-0001\n"));
+		}
+	else
+		{
+		ERR_PRINTF1(_L("APPFWK-APSTART-0001 failed\n"));  
+		}
+	}
+
+/**
+Old Test CaseID 		APPFWK-APSTART-0002
+New Test CaseID 		DEVSRVS-SYSSTART-APSTART-0001
+ */
+
+void CApStartTestStep::TestStartAndFollowUpL(RWsSession& aWsSession)
+	{
+	INFO_PRINTF1(_L("Entering test case: APPFWK-APSTART-0002"));	
+	
+	TRequestStatus status;
+	TApaTask task = TestStartL(&status, aWsSession);
+	TESTE(KErrNone == status.Int(), status.Int());
+	
+	if(task.Exists())
+		{
+		task.KillTask();
+		INFO_PRINTF1(_L("Leaving test case: APPFWK-APSTART-0002\n"));
+		}
+	else
+		{
+		ERR_PRINTF1(_L("APPFWK-APSTART-0002 failed\n"));  
+		}
+	}
+
+/**
+Old Test CaseID 		APPFWK-APSTART-0003
+New Test CaseID 		DEVSRVS-SYSSTART-APSTART-0001
+ */
+
+void CApStartTestStep::TestInitApparcL()
+	{ // Leavescan, this implementation of this method does not leave but further derived implementations may if they choose
+	INFO_PRINTF1(_L("Entering test case: APPFWK-APSTART-0003"));
+	INFO_PRINTF1(_L("Going to sleep until Apparc finished initialisation."));
+	TRAPD(err, iAppStart->WaitForApparcToInitialiseL());
+	TEST(err == KErrNone);
+	if(err)
+		ERR_PRINTF2(_L("APPFWK-APSTART-0003 finished with errorcode = '%d'\n"), err);  
+	else
+		INFO_PRINTF1(_L("Leaving test case: APPFWK-APSTART-0003\n"));
+	}
+
+/**
+ * Common implementation for test case 0001 and 0002. See INFO_PRINTs for further information.
+ */
+TApaTask CApStartTestStep::TestStartL(TRequestStatus* aRequestStatus, RWsSession& aWsSession)
+	{
+	INFO_PRINTF1(_L("Requesting start of KTestAppGood in foreground."));
+	const TDesC& cmdLineParams = KNullDesC;
+	const TBool viewLess = EFalse;
+	const TBool startInBackground = EFalse;
+	TThreadId tId;
+	if(aRequestStatus)
+		{
+		iAppStart->StartAppL(KTestAppGood, cmdLineParams, viewLess, startInBackground, tId, *aRequestStatus);
+		}
+	else
+		{
+		iAppStart->StartAppL(KTestAppGood, cmdLineParams, viewLess, startInBackground, tId);
+		}
+		
+	RThread thread;
+	RProcess process;
+	INFO_PRINTF1(_L("Verifying that the process was created."));
+	TEST(KErrNone == thread.Open(tId));
+	TEST(KErrNone == thread.Process(process)); 
+	
+	INFO_PRINTF1(_L("Waiting for KTestAppGood to resume."));
+	if(aRequestStatus)
+		{
+		User::WaitForRequest(*aRequestStatus);
+		}
+	else
+		{
+		TRequestStatus status;
+		process.Rendezvous(status);
+		User::WaitForRequest(status);
+		}
+	process.Close();
+	thread.Close();
+	
+	INFO_PRINTF1(_L("Verifying that KTestAppGood is now up and running."));
+	TApaTaskList taskList(aWsSession); 
+	const TUid appUid = {KTestAppGoodUid};
+	TApaTask task = taskList.FindApp(appUid);
+	TEST(task.Exists());
+	
+	return task;
+	}