diff -r 000000000000 -r 3553901f7fa8 telephonyutils/telephonywatchers/Test/TE_TelWatchers/TE_TelWatchersIntBase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyutils/telephonywatchers/Test/TE_TelWatchers/TE_TelWatchersIntBase.cpp Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,182 @@ +// 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: +// Telephony Watchers Integration Test base test code. +// +// + +/** + @file +*/ + + +#include +#include + + +#include "TE_TelWatchersIntBase.h" + + +const TInt KTsyShutdownGuardTimer = 500000; + +CTelWatchersIntTestStep::CTelWatchersIntTestStep() + { + // NOP + } // CTelWatchersIntTestStep::CTelWatchersIntTestStep + + +CTelWatchersIntTestStep::~CTelWatchersIntTestStep() + { + // NOP + } // CTelWatchersIntTestStep::~CTelWatchersIntTestStep + + +TVerdict CTelWatchersIntTestStep::doTestStepPreambleL() + { + // + // Mark for memory leaks!!! + // + __UHEAP_MARK; + + // + // Create an Active Scheduler... + // + iScheduler = new(ELeave) CActiveScheduler(); + CActiveScheduler::Install(iScheduler); + + // + // Initialise to a known state... + // + StartWatcher(); + + return TestStepResult(); + } // CTelWatchersIntTestStep::doTestStepPreambleL + + +TVerdict CTelWatchersIntTestStep::doTestStepPostambleL() + { + // + // Ensure the Watcher is stopped so future tests can continue past + // failures... + // + StopWatcher(); + + delete iScheduler; + iScheduler = NULL; + + // + // Check the heap for memory leaks... + // + __UHEAP_MARKEND; + + return TestStepResult(); + } // CTelWatchersIntTestStep::doTestStepPostambleL + + +/** + * Start the Watcher. + */ +void CTelWatchersIntTestStep::StartWatcher() + { + INFO_PRINTF1(_L("Start the Watchers...")); + + if (iWatcherExeRunning == EFalse) + { + // + // We can no longer move the watcher.exe after sysbin platform security enforcement + // so the alternative method is to prevent the watchers from starting, in this case + // we can start watchers from system/bin without worry, older builds still require z: + TInt ret = iWatcherExe.Create(_L("z:\\watcher.exe"), _L("")); + if (ret == KErrNotFound) + { + ret = iWatcherExe.Create(_L("watcher.exe"), _L("")); + if (ret == KErrNotFound) + { + ret = iWatcherExe.Create(_L("z:\\System\\libs\\watcher.exe"), _L("")); + } + } + + INFO_PRINTF2(_L("Create watcher exe returned %d"), ret); + iWatcherExe.Logon(iWatcherExeStatus); + iWatcherExe.Resume(); + iWatcherExeRunning = ETrue; + } + } // CTelWatchersIntTestStep::StartWatcher + + +/** + * Stop the Watchers. + */ +void CTelWatchersIntTestStep::StopWatcher() + { + INFO_PRINTF1(_L("Stop the Watchers...")); + + // + // This is needed to ensure if ETel panics a dead client thread - that + // the test code contines. + // + TBool oldJustInTimeStatus = User::JustInTime(); + + User::SetJustInTime(EFalse); + + // + // Stop the watchers... + // + if (iWatcherExeRunning) + { + iWatcherExe.Kill(KErrAbort); + User::WaitForRequest(iWatcherExeStatus); + iWatcherExeRunning = EFalse; + } + User::After(KTsyShutdownGuardTimer); + + // + // Reset the Just-In-Time debugging value. + // + User::SetJustInTime(oldJustInTimeStatus); + } // CTelWatchersIntTestStep::StopWatcher + + +/** + * Set the test number given by the parameter aTestNumber. The test number + * indicates which section in the config.txt file should be used. + * + * @param aTestNumber The test number section within the config.txt file + * that should be used. + */ +void CTelWatchersIntTestStep::SetSimTsyTestNumberL(TInt aTestNumber) + { + INFO_PRINTF2(_L("Setting SIMTSY config to number %d..."), aTestNumber); + + User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory,KPSSimTsyTestNumber,aTestNumber)); + } // CTelWatchersIntTestStep::SetSimTsyTestNumberL + +void CTelWatchersIntTestStep::CheckSimTsyTestNumberL(TInt aTestNumber) + { + INFO_PRINTF2(_L("Checking SIMTSY config number to be %d..."), aTestNumber); + + // Ensure that the test number has been set properly + RProperty testNumberInUseProperty; + User::LeaveIfError(testNumberInUseProperty.Attach(KUidPSSimTsyCategory, KPSSimTsyTestNumberInUse)); + CleanupClosePushL(testNumberInUseProperty); + + TInt testNumberInUseCheck; + User::LeaveIfError(testNumberInUseProperty.Get(KUidPSSimTsyCategory, KPSSimTsyTestNumberInUse,testNumberInUseCheck)); + if (aTestNumber != testNumberInUseCheck) + { + INFO_PRINTF2(_L("Incorrect SIMTSY config number (%d)..."), testNumberInUseCheck); + User::Leave(KErrNotFound); + } + + CleanupStack::PopAndDestroy(&testNumberInUseProperty); + } // CTelWatchersIntTestStep::CheckSimTsyTestNumberL