diff -r 36d60d12b4af -r 819e59dfc032 debugapps/appregexec/tsrc/src/AppRegExec_testBlocks.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debugapps/appregexec/tsrc/src/AppRegExec_testBlocks.cpp Mon Oct 04 10:09:02 2010 +0300 @@ -0,0 +1,273 @@ +/* +* Copyright (c) 2010 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: +* +*/ + + +// [INCLUDE FILES] - do not remove +#include +#include +#include +#include +#include "AppRegExec_test.h" + + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CAppRegExec_test::Delete +// Delete here all resources allocated and opened from test methods. +// Called from destructor. +// ----------------------------------------------------------------------------- +// +void CAppRegExec_test::Delete() + { + + } + +// ----------------------------------------------------------------------------- +// CAppRegExec_test::RunMethodL +// Run specified method. Contains also table of test mothods and their names. +// ----------------------------------------------------------------------------- +// +TInt CAppRegExec_test::RunMethodL( + CStifItemParser& aItem ) + { + + static TStifFunctionInfo const KFunctions[] = + { + // Copy this line for every implemented function. + // First string is the function name used in TestScripter script file. + // Second is the actual implementation member function. + ENTRY( "Positive_TestCase", CAppRegExec_test::Positive ), + ENTRY( "Negative_TestCase", CAppRegExec_test::Negative ), + ENTRY( "StartBackRoundApp",CAppRegExec_test::StartBackRoundApp), + //ADD NEW ENTRY HERE + // [test cases entries] - Do not remove + + }; + + const TInt count = sizeof( KFunctions ) / + sizeof( TStifFunctionInfo ); + + return RunInternalL( KFunctions, count, aItem ); + + } + + +/* + * In this Test Case we assume that the console App is running in backround and will try to copy GUI app resource + * registration file . So the GUI app corresponding to this resource should launch successfully. + */ +TInt CAppRegExec_test::Positive(CStifItemParser& /*aItem*/) + { + TInt err = KErrNone; + + // delete Test data from C:\logs\stopmodetestdata.txt + CheckAndDeleteL(KTestDataSessionPath,KTestDataFile); + + // Start unRegistration Process & wait till it get exit/terminated. + StartProcess(KAppUnRegisterEXE,ETrue); + + // delete Resource Registration files + CheckAndDeleteL(KResourceSessionPath,KResRegFile); + + //Transfer the Resource Registration files + TInt ret = BaflUtils::CopyFile(iFsSession,KTestDataRSC_SRC,KTestDataRSC_DST); + + // wait some time till this resource get registered by background process + User::After(5000000); + + // Start GUI app under test which will write some testdata in filesystem and exit. + StartProcess(KTestDataEXE,ETrue); + + // check whether the test data written by GUI app exist .If exist then assuming that the GUI app launched + // Successfully else not launched. + TBool isPresent = IsExist(KTestDataSessionPath,KTestDataFile); + if(!isPresent) + { + _LIT( KLogStr02, "Has not launched Hello.exe" ); + iLog->Log( KLogStr02 ); + RDebug::Print(KLogStr02); + return KErrGeneral; + } + return err; + } + +/* + * In this Test Case,the console App is not running in backround.Will try to copy resource + * registration file . So the GUI app corresponding to this resource should not launch successfully. + */ +TInt CAppRegExec_test::Negative(CStifItemParser& /*aItem*/) + { + TInt err = KErrNone; + + // delete Test data from C:\logs\stopmodetestdata.txt + CheckAndDeleteL(KTestDataSessionPath,KTestDataFile); + + // Start unRegistration Process & wait till it get exit/terminated. + StartProcess(KAppUnRegisterEXE,ETrue); + + // delete Resource Registration files + CheckAndDeleteL(KResourceSessionPath,KResRegFile); + + + // Find the Backround Process & shut down if it is already running + TBool found = FindProcess(KMatchName); + // If not found then there is no need to proceed with negative testing + // Simply returning KErrNotFound + if(!found) + { + return KErrNotFound; + } + + //Transfer the Resource Registration files + TInt ret = BaflUtils::CopyFile(iFsSession,KTestDataRSC_SRC,KTestDataRSC_DST); + + // Start GUI app under test which will write some testdata in filesystem and exit. + StartProcess(KTestDataEXE,ETrue); + + // check whether the test data written by GUI app exist .If exist then assuming that the GUI app launched + // Successfully else not launched. + TBool isPresent = IsExist(KTestDataSessionPath,KTestDataFile); + + if(isPresent) + { + _LIT( KLogStr03, "Has launched Hello.exe" ); + iLog->Log( KLogStr03 ); + RDebug::Print(KLogStr03); + return KErrGeneral; + } + + return err; + } + +/* + * StartBackRoundApp: This Test cases should be used to launch the Backround process + * which actually registers the GUI app.& which was shut down by Negative Test Case. + * + */ +TInt CAppRegExec_test::StartBackRoundApp(CStifItemParser& /*aItem*/) + { + return StartProcess(KAppRegisterEXE,EFalse); + } + +/* + * CheckAndDeleteL- will takes dirPath & Filename. + * will check whether the provided file is Valid or not. If valid then delete it. + */ +void CAppRegExec_test::CheckAndDeleteL(const TDesC16& aPath,const TDesC16& aFile) + { + TBuf<256> abuf; + abuf.Copy(aPath); + abuf.Append(aFile); + + TBool ret = BaflUtils::FileExists(iFsSession,abuf); + if(ret) + { + _LIT( KLogStr01, "CAppRegExec_test:: File deleted" ); + iLog->Log( KLogStr01 ); + RDebug::Print(KLogStr01); + iFsSession.Delete(abuf); + } + + } + +/* + * IsExist - will takes dirPath & Filename. + * return True if valid file else False. + */ +TBool CAppRegExec_test::IsExist(const TDesC16& aPath,const TDesC16& aFile) + { + TBuf<256> abuf; + abuf.Copy(aPath); + abuf.Append(aFile); + + TBool ret = BaflUtils::FileExists(iFsSession,abuf); + _LIT( KLogStr04, "CAppRegExec_test:: IsExist -FileExists bool = %d" ); + RDebug::Print(KLogStr04,ret); + iLog->Log(KLogStr04,ret); + return ret; + } + + +/* + * StartProcess - wil be used to launch any application. + */ +TInt CAppRegExec_test::StartProcess(const TDesC16& aFileName,TBool wait) // Filename with drive and path + { + RProcess proc; + TInt err = KErrNone; + err = proc.Create(aFileName, KNullDesC); + + if(wait) + { + TRequestStatus stat; + proc.Logon(stat); + proc.Resume(); + // Thread is executing. Can add code here to run in parallel... + // blocks here while process is running + User::WaitForRequest(stat); + // Process is ended, you can use proc.ExitType() + proc.Close(); + } + else{ + proc.Resume(); + proc.Close(); + } + return err; + } + +/* + * FindProcess - This function searches the given process . + * it will shutdown the process if running in backround. + */ +TBool CAppRegExec_test::FindProcess(const TDesC16& aPath) + { + RProcess procHandle; + TFindProcess procFinder; + TFullName result; + TBool found = EFalse; + while(procFinder.Next(result)== KErrNone) + { + //Checking for AppRegExec.exe process with its length(14). + //Since the TFindProcess conatins the process Name + some orbitary values + //associated with it.something like [0X234567] + + if(result.Left(14) == aPath) + { + + RDebug::Print(_L("**** Found the Process ****")); + RDebug::Print(result); + TInt err = procHandle.Open(procFinder,EOwnerThread); + if(err == KErrNone) + { + procHandle.Kill(0); + found = ETrue; + break; + } + } + } + procHandle.Close(); + return found; + } + + + + +// [End of File] - Do not remove + +// End of File