stif/TestInterference/src/StifTestInterference.cpp
changeset 38 169364e7e4b4
parent 34 7259cf1302ad
child 45 185201be11b0
--- a/stif/TestInterference/src/StifTestInterference.cpp	Tue Jul 06 16:05:13 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1999 +0,0 @@
-/*
-* Copyright (c) 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: This module contains the implementation of 
-* MSTIFTestInterference class member functions.
-*
-*/
-
-// INCLUDE FILES
-#include <StifTestInterference.h>
-#include "TestInterferenceImplementation.h"
-
-// EXTERNAL DATA STRUCTURES
-//extern  ?external_data;
-
-// EXTERNAL FUNCTION PROTOTYPES  
-//extern ?external_function( ?arg_type,?arg_type );
-
-// CONSTANTS
-//const ?type ?constant_var = ?constant;
-
-// For test interference thread's heap size
-const TUint KMaxHeapSize        = 0x20000; // 128 K
-
-// MACROS
-//#define ?macro ?macro_def
-
-// LOCAL CONSTANTS AND MACROS
-//const ?type ?constant_var = ?constant;
-//#define ?macro_name ?macro_def
-
-// MODULE DATA STRUCTURES
-//enum ?declaration
-//typedef ?declaration
-
-// LOCAL FUNCTION PROTOTYPES
-//?type ?function_name( ?arg_type, ?arg_type );
-
-// FORWARD DECLARATIONS
-//class ?FORWARD_CLASSNAME;
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// ?function_name ?description.
-// ?description
-// Returns: ?value_1: ?description
-//          ?value_n: ?description_line1
-//                    ?description_line2
-// -----------------------------------------------------------------------------
-//
-/*
-?type ?function_name(
-    ?arg_type arg,  // ?description
-    ?arg_type arg)  // ?description
-    {
-
-    ?code  // ?comment
-
-    // ?comment
-    ?code
-    }
-*/
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-/*
--------------------------------------------------------------------------------
-
-    Class: MSTIFTestInterference
-
-    Method: MSTIFTestInterference
-
-    Description: Create test interference object according to the paramater.
-
-    Parameters: CTestModuleBase* aTestModuleBase: inout: CTestModuleBase object
-                for get test interference handle to STIF's side(Used if test
-                case panic so test interference thread can be kill by STIF).
-                TStifTestInterferenceCategory aCategory: in: Test interference
-                category
-
-    Return Values: MSTIFTestInterference*: pointer to MSTIFTestInterference 
-                   object
-
-    Errors/Exceptions: Leaves if object creation fails.
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C MSTIFTestInterference* MSTIFTestInterference::NewL(
-                                    CTestModuleBase* aTestModuleBase,
-                                    TStifTestInterferenceCategory aCategory )
-    {
-    if( aCategory == EActiveObject )        // Active object
-        {
-        CSTIFInterferenceAO* self = NULL;
-        self = CSTIFInterferenceAO::NewL();
-        return (MSTIFTestInterference*)self;
-        }
-    else                                    // EThread
-        {
-        CSTIFInterferenceThread* self = NULL;
-        self = CSTIFInterferenceThread::NewL( aTestModuleBase );
-        return (MSTIFTestInterference*)self;
-        }
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: MSTIFTestInterference
-
-    Method: MSTIFTestInterference
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-MSTIFTestInterference::~MSTIFTestInterference()
-    {
-    // None
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    DESCRIPTION
-
-    This module contains the implementation of CSTIFInterferenceAO class 
-    member functions.
-
--------------------------------------------------------------------------------
-*/
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceAO
-
-    Method: CSTIFInterferenceAO
-
-    Description: C++ default constructor can NOT contain any code, that
-                 might leave 
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CSTIFInterferenceAO::CSTIFInterferenceAO() :
-                                    CActive ( CActive::EPriorityStandard )
-    {
-    iInterferenceType = ENone;
-    iIdleTime = 0;
-    iActiveTime = 0;
-    iExecuteInterference = NULL;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceAO
-
-    Method: ConstructL
-
-    Description: Symbian 2nd phase constructor can leave.
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: Leave if CreateLocal fails
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CSTIFInterferenceAO::ConstructL()
-    {
-    CActiveScheduler::Add ( this );
-
-    User::LeaveIfError( iAOIdleTimer.CreateLocal() );
-
-    iExecuteInterference = CExecuteInterference::NewL();
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceAO
-
-    Method: NewL
-
-    Description: Two-phased constructor.
-
-    Parameters: None
-
-    Return Values: CSTIFInterferenceAO*: pointer to CSTIFInterferenceAO object
-
-    Errors/Exceptions: Leaves if object creation fails.
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CSTIFInterferenceAO* CSTIFInterferenceAO::NewL()
-    {
-    CSTIFInterferenceAO* self = new (ELeave) CSTIFInterferenceAO();
-
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-
-    return self;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceAO
-
-    Method: ~CSTIFInterferenceAO
-
-    Description: Destructor.
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CSTIFInterferenceAO::~CSTIFInterferenceAO()
-    {
-    Cancel(); // Cancel itself
-    // If test case panic etc. do close operations here.
-    delete iExecuteInterference;
-    iExecuteInterference = NULL;
-
-    iAOIdleTimer.Close();
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceAO
-
-    Method: RunL
-
-    Description: Derived from CActive, handles test interference execution.
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: Leaves if InterferenceL leaves.
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CSTIFInterferenceAO::RunL( )
-    {
-    iExecuteInterference->InterferenceL( iInterferenceType, iActiveTime );
-    
-    // Start idle timer
-    iAOIdleTimer.After( iStatus, iIdleTime );
-    SetActive();
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceAO
-
-    Method: DoCancel
-
-    Description: Derived from CActive handles the Cancel
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CSTIFInterferenceAO::DoCancel( )
-    {
-    iAOIdleTimer.Cancel();
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceAO
-
-    Method: RunError
-
-    Description: Derived from CActive handles errors from active handler.
-
-    Parameters: TInt aError: in: error from CActive 
-
-    Return Values: TInt: Symbian error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CSTIFInterferenceAO::RunError( TInt aError )
-    {
-    RDebug::Print( _L( "CSTIFInterferenceAO::RunError() with [%d]" ), aError );
-
-    return aError;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceAO
-
-    Method: StartL
-
-    Description: StartL method starts test interference.
-
-    Parameters: TStifTestInterferenceType aType: in: Test interference type.
-                TInt aIdleTime: in: Test interference idle time.
-                TInt aActiveTime: in: Test interference active time.
-
-    Return Values: TInt: Symbian error code.
-
-    Errors/Exceptions: Leaves if active object is active.
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CSTIFInterferenceAO::StartL( TStifTestInterferenceType aType,
-                                    TInt aIdleTime,
-                                    TInt aActiveTime )
-    {
-    if( IsActive() )
-        {
-        User::Leave( KErrAlreadyExists );
-        }
-
-    switch( aType )
-    	{
-    	case ENone:
-    	case ECpuLoad:
-    	case EFileSystemReadC:
-    	case EFileSystemReadD:
-    	case EFileSystemReadE:
-    	case EFileSystemReadZ:
-    	case EFileSystemWriteC:
-    	case EFileSystemWriteD:
-    	case EFileSystemWriteE:
-    	case EFileSystemFillAndEmptyC:
-    	case EFileSystemFillAndEmptyD:
-    	case EFileSystemFillAndEmptyE:
-    		aIdleTime = aIdleTime * 1000;
-    		aActiveTime = aActiveTime * 1000;
-    		break;
-    	case ENoneMicroSeconds:
-    		aType = ENone;
-    		break;
-    	case ECpuLoadMicroSeconds:
-			aType = ECpuLoad;
-			break;
-    	case EFileSystemReadCMicroSeconds:
-			aType = EFileSystemReadC;
-			break;
-    	case EFileSystemReadDMicroSeconds:
-			aType = EFileSystemReadD;
-			break;
-    	case EFileSystemReadEMicroSeconds:
-			aType = EFileSystemReadE;
-			break;
-    	case EFileSystemReadZMicroSeconds:
-			aType = EFileSystemReadZ;
-			break;
-    	case EFileSystemWriteCMicroSeconds:
-			aType = EFileSystemWriteC;
-			break;
-    	case EFileSystemWriteDMicroSeconds:
-			aType = EFileSystemWriteD;
-			break;
-    	case EFileSystemWriteEMicroSeconds:
-			aType = EFileSystemWriteE;
-			break;
-    	case EFileSystemFillAndEmptyCMicroSeconds:
-			aType = EFileSystemFillAndEmptyC;
-			break;
-    	case EFileSystemFillAndEmptyDMicroSeconds:
-			aType = EFileSystemFillAndEmptyD;
-			break;
-    	case EFileSystemFillAndEmptyEMicroSeconds:
-			aType = EFileSystemFillAndEmptyE;
-			break;
-    	}    
-    
-    iInterferenceType = aType;
-    iIdleTime = aIdleTime;
-    iActiveTime = aActiveTime;
-
-    // Set request to pending and active object to active
-    iStatus = KRequestPending;
-    SetActive();
-    // Complete request immediately
-    TRequestStatus* status = &iStatus;
-    User::RequestComplete( status, KErrNone );
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceAO
-
-    Method: Stop
-
-    Description: Stop method stops test interference.
-
-    Parameters: None
-
-    Return Values: TInt: Symbian error code.
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CSTIFInterferenceAO::Stop()
-    {
-    Cancel();
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceAO
-
-    Method: SetPriority
-
-    Description: Sets thread or active object priority. This should use before
-                 test interference is started otherwise error code will return.
-
-    Parameters: TInt aPriority: in: New priority for active object given by
-                user.
-
-    Return Values: TInt: Symbian error code.
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CSTIFInterferenceAO::SetPriority( TInt aPriority )
-    {
-    if( IsActive() )
-        {
-        RDebug::Print( _L( "STIF: Priority cannot set because active object is active" ) );
-        return KErrGeneral;
-        }
-
-    CActive::SetPriority( (TPriority)aPriority );
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    DESCRIPTION
-
-    This module contains the implementation of CSTIFInterferenceThread class 
-    member functions.
-
--------------------------------------------------------------------------------
-*/
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceThread
-
-    Method: CSTIFInterferenceThread
-
-    Description: C++ default constructor can NOT contain any code, that
-                 might leave.
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CSTIFInterferenceThread::CSTIFInterferenceThread()
-    {
-    // None
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceThread
-
-    Method: ConstructL
-
-    Description: C++ default constructor can NOT contain any code, that
-                 might leave.
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CSTIFInterferenceThread::ConstructL( CTestModuleBase* aTestModuleBase )
-    {
-    iTestModuleBase = aTestModuleBase;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceThread
-
-    Method: NewL
-
-    Description: Two-phased constructor.
-
-    Parameters: None
-
-    Return Values: CSTIFInterferenceThread*: pointer to CSTIFInterferenceThread
-                   object
-
-    Errors/Exceptions: Leaves if object creation fails.
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CSTIFInterferenceThread* CSTIFInterferenceThread::NewL( 
-                                            CTestModuleBase* aTestModuleBase )
-    {
-    CSTIFInterferenceThread* self = new (ELeave) CSTIFInterferenceThread();
-
-    CleanupStack::PushL( self );
-    self->ConstructL( aTestModuleBase );
-    CleanupStack::Pop();
-
-    return self;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceThread
-
-    Method: ~CSTIFInterferenceThread
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CSTIFInterferenceThread::~CSTIFInterferenceThread()
-    {
-    // If test case crash etc. do stop operations here also
-    if( iThreadParam != NULL )
-        {
-        iThreadParam->iStarted.Close();
-        }
-    delete iThreadParam;
-    iThreadParam = NULL;
-    if( iThread.Handle() != NULL )
-        {
-        iThread.Kill( KErrNone );
-        iThread.Close();
-        }    
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceThread
-
-    Method: StartL
-
-    Description: StartL method starts test interference.
-
-    Parameters: TStifTestInterferenceType aType: in: Test interference type.
-                TInt aIdleTime: in: Test interference idle time.
-                TInt aActiveTime: in: Test interference active time.
-
-    Return Values: TInt: Symbian error code.
-
-    Errors/Exceptions: Leaves if iThreadParam exists.
-                       Leaves if thread creation fails.
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CSTIFInterferenceThread::StartL( TStifTestInterferenceType aType,
-                                        TInt aIdleTime,
-                                        TInt aActiveTime )
-    {
-    //__UHEAP_MARK;
-
-    if( iThreadParam )
-        {
-        User::Leave( KErrAlreadyExists );
-        }
-
-    // Thread related parameters
-    iThreadParam = new TThreadParam;
-    iThreadParam->iStarted.CreateLocal( 0 );
-    iThreadParam->iType = aType;
-    iThreadParam->iIdleTime = aIdleTime;
-    iThreadParam->iActiveTime = aActiveTime;
-
-    // Temporary thread unique name
-    _LIT( KThreadFirstName, "STIFInterference_%x" );
-     
-    TBuf<32> tmpThreadName;
-    TInt uniqueCounter = 1;
-    
-    TInt ret = KErrNone;
-    do
-    	{
-    	tmpThreadName.Format( KThreadFirstName, uniqueCounter );
-    	// Create thread
-    	ret = iThread.Create(
-    		    					tmpThreadName,       // thread name
-    		                        ThreadFunction,         // thread function
-    		                        KDefaultStackSize*4,    // stack
-    		                        KMinHeapSize,           // Heap, min
-    		                        KMaxHeapSize*2,         // Heap, max
-    		                        (TAny*) iThreadParam    // parameter to thread function
-    		                        );
-    	uniqueCounter++;
-    	}
-    while( ret == KErrAlreadyExists );
-    
-    // If thread creation failed
-    if( ret != KErrNone )        
-        {
-        iThreadParam->iStarted.Close();         // Close semaphore
-        delete iThreadParam;
-        iThreadParam = NULL;
-        //__UHEAP_MARKEND;
-        User::Leave( ret );
-        }
-
-    // Add thread pointer to STIF side for cases where need to kill
-    // thread e.g. if test case is crashed etc. before Stop(give by user).
-    iTestModuleBase->iTestModuleIf->AddInterferenceThread( iThread );
-
-    // Create unique thread name
-    const TInt name = 17; // Name parts
-    const TInt id = 8;    // Unique id parts
-    _LIT( KThreadUniqueName, "STIFInterference_" );
-    TBuf<name+id> threadUniqueName;
-    threadUniqueName.Copy( KThreadUniqueName );
-    // Appends id in hexadesimal format 
-    threadUniqueName.AppendFormat(  _L( "%x" ), (TInt)iThread.Id() );
-    //RDebug::Print(threadUniqueName);
-
-    // Reneme thread with unique name
-    iThread.RenameMe( threadUniqueName );
-
-    // Thread is currently in suspend state
-
-    // Now start thread
-    iThread.SetPriority( EPriorityMuchMore ); // set its priority
-    iThread.Resume();                         // kick it into life in
-                                              // sometimes(depend on scheduler)
-
-    // This block execution here and continue when signal is said in thread
-    // execution side.
-    // Wait until the thread is started
-    iThreadParam->iStarted.Wait();
-
-    //__UHEAP_MARKEND;
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceThread
-
-    Method: Stop
-
-    Description:  Stop method stops test interference.
-
-    Parameters: None
-
-    Return Values: TInt: Symbian error code.
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CSTIFInterferenceThread::Stop()
-    {
-    // Ensures that remove(Stop()) sequence won't do two times for one thread.
-    if( iThread.Handle() != NULL )
-        {
-        // Remove pointer from array
-        iTestModuleBase->iTestModuleIf->RemoveInterferenceThread( iThread );
-        }
-
-    // If test case crash etc. do stop operations here also
-    if( iThreadParam != NULL )
-        {
-        iThreadParam->iStarted.Close();
-        }
-    delete iThreadParam;
-    iThreadParam = NULL;
-    if( iThread.Handle() != NULL )
-        {
-        iThread.Kill( KErrNone );
-        iThread.Close();
-        }    
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceThread
-
-    Method: SetPriority
-
-    Description: Sets thread or active object priority. This should use before
-                 test interference is started otherwise error code will return.
-
-    Parameters: TInt aPriority: in: New priority for active object given by
-                user.
-
-    Return Values: TInt: Symbian error code.
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CSTIFInterferenceThread::SetPriority( TInt aPriority )
-    {
-    // RThread priority can set during interference executions time. User
-    // should be sure that given value is acceptable, otherwise SetPriority
-    // panics.
-
-    RThread thisThread;
-    thisThread.SetPriority ( (TThreadPriority) aPriority );
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceThread
-
-    Method: ThreadFunction
-
-    Description: Implements thread code
-
-    Parameters: TAny* aThreadArg: in : Thread related informations
-
-    Return Values: TInt: Symbian error code.
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CSTIFInterferenceThread::ThreadFunction( TAny* aThreadArg )
-        {
-        // Thread code here
-
-        // Create clean-up stack
-        CTrapCleanup* tc = CTrapCleanup::New();
-
-        // Take local copy of incoming parameters. 
-        // This object is in stack -> no manual deletion
-        TThreadParam params = *(TThreadParam*)aThreadArg;
-        
-        // Signal to continue from CSTIFInterferenceThread::StartL
-        params.iStarted.Signal();
-
-        TInt ret = KErrNone;
-
-        // Construct and install active scheduler
-        CActiveScheduler* activeScheduler = new CActiveScheduler;
-        CActiveScheduler::Install( activeScheduler );
-
-        TRAP( ret, ExecuteInterferenceL( params.iType, params.iIdleTime, params.iActiveTime ) );
-
-    	User::LeaveIfError( ret );
-        
-        delete activeScheduler;
-        
-        // Delete clean-up stack
-        delete tc;
-        tc = NULL;
-
-        return KErrNone;
-        }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CSTIFInterferenceThread
-
-    Method: ExecuteInterferenceL
-
-    Description: Executes interference.
-
-    Parameters: aType		Interference type.
-    			aIdleTime	Idle time.
-    			aActiveTime Active time.
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CSTIFInterferenceThread::ExecuteInterferenceL( TStifTestInterferenceType aType, TInt aIdleTime, TInt aActiveTime )
-	{
-	CSTIFInterferenceAO* interferenceAO = CSTIFInterferenceAO::NewL();
-	CleanupStack::PushL( interferenceAO );
-
-	interferenceAO->StartL( aType, aIdleTime, aActiveTime );
-
-	CActiveScheduler::Start();
-	
-	CleanupStack::PopAndDestroy( interferenceAO );
-	}
-
-/*
--------------------------------------------------------------------------------
-
-    DESCRIPTION
-
-    This module contains the implementation of CExecuteInterference class 
-    member functions.
-
--------------------------------------------------------------------------------
-*/
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CExecuteInterference
-
-    Method: CExecuteInterference
-
-    Description: C++ default constructor can NOT contain any code, that
-                 might leave.
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CExecuteInterference::CExecuteInterference()
-    {
-    iTimer.CreateLocal();
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CExecuteInterference
-
-    Method: ConstructL
-
-    Description: C++ default constructor can NOT contain any code, that
-                 might leave.
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CExecuteInterference::ConstructL()
-    {
-    // None
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CExecuteInterference
-
-    Method: NewL
-
-    Description: Two-phased constructor.
-
-    Parameters: None
-
-    Return Values: CExecuteInterference*: pointer to CExecuteInterference
-                   object
-
-    Errors/Exceptions: Leaves if object creation fails.
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CExecuteInterference* CExecuteInterference::NewL()
-    {
-    CExecuteInterference* self = new (ELeave) CExecuteInterference();
-
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-
-    return self;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CExecuteInterference
-
-    Method: ~CExecuteInterference
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CExecuteInterference::~CExecuteInterference()
-    {
-    iTimer.Cancel();
-    iTimer.Close();
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CExecuteInterference
-
-    Method: Interference
-
-    Description: Start implement the test interference according to aType
-                 parameter.
-
-    Parameters: MSTIFTestInterference::TStifTestInterferenceType aType: in:
-                    Test interference type.
-                TInt aActiveTime: in: Test interference active time
-
-    Return Values: TInt: Symbian error code
-
-    Errors/Exceptions: Leaves if CleanupClosePushL leave
-
-    Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-TInt CExecuteInterference::InterferenceL( 
-                    MSTIFTestInterference::TStifTestInterferenceType aType,
-                    TInt aActiveTime )
-    {
-    TTimeIntervalMicroSeconds32 myActiveTime( aActiveTime );    
-    
-    TTime endTime;
-    endTime.HomeTime();           
-    endTime = endTime + myActiveTime;   
-        
-    TFileName myFile;    
-        
-    switch( aType )
-        {
-        case MSTIFTestInterference::ECpuLoad:
-            {
-            return CPULoad( myActiveTime );
-            }
-        case MSTIFTestInterference::EFileSystemReadC:
-            {           
-            RDebug::Print( _L( "STIFTestInterference::EFileSystemReadC" ) );
-            
-            _LIT( KDrive, "c:\\" );   
-            myFile.Format( KDrive );
-            
-            RFs fileserver;            
-            TInt err = fileserver.Connect(); 
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "RFs connection failed with error: %d" ), err );
-                return err;
-                }          
-            CleanupClosePushL( fileserver );                                                                        
-
-            err = fileserver.SetSessionPath( myFile );
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "Drive C is not ready!" ) );                                
-                // R Classes have not created with New, no delete needed
-                CleanupStack::Pop( &fileserver );
-                fileserver.Close();
-                return KErrNone;
-                }                           
-                
-            RDebug::Print( _L( "SearchAFileForReading" ) );                  
-            err = SearchAFileForReading( myFile, fileserver );                        
-            // R Classes have not created with New, no delete needed
-            CleanupStack::Pop( &fileserver );
-            fileserver.Close();
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "File not found!" ) );                  
-                return KErrNone;
-                }                            
-
-            RDebug::Print( _L( "File's name is: %S" ), &myFile );                     
-                        
-            return RepeatReadFromFileL( myFile, myActiveTime );
-            }
-        case MSTIFTestInterference::EFileSystemReadD:
-            {
-            RDebug::Print( _L( "STIFTestInterference::EFileSystemReadD" ) );            
-            _LIT( KDrive, "D\x3a\\" );   
-            myFile.Format( KDrive );
-            
-            RFs fileserver;            
-            TInt err = fileserver.Connect(); 
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "RFs connection failed with error: %d" ), err );
-                return err;
-                }          
-            CleanupClosePushL( fileserver );                                                                        
-            err = fileserver.SetSessionPath( myFile );
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "Drive D is not ready!" ) );                                
-                // R Classes have not created with New, no delete needed
-                CleanupStack::Pop( &fileserver );
-                fileserver.Close();
-                return KErrNone;
-                }                           
-            RDebug::Print( _L( "Fileserver created" ) );                  
-                        
-            err = SearchAFileForReading( myFile, fileserver );                        
-            // R Classes have not created with New, no delete needed
-            CleanupStack::Pop( &fileserver );
-            fileserver.Close();
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "File not found!" ) );                  
-                return KErrNone;
-                }                                                  
-            return RepeatReadFromFileL( myFile, myActiveTime );
-            }
-        case MSTIFTestInterference::EFileSystemReadE:
-            {
-            RDebug::Print( _L( "STIFTestInterference::EFileSystemReadE" ) );            
-            _LIT( KDrive, "E\x3a\\" );   
-            myFile.Format( KDrive );
-           
-            RFs fileserver;            
-            TInt err = fileserver.Connect(); 
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "RFs connection failed with error: %d" ), err );
-                return err;
-                }          
-            CleanupClosePushL( fileserver );                                                                        
-            RDebug::Print( _L( "Fileserver created" ) );                  
-            err = fileserver.SetSessionPath( myFile );
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "Drive E is not ready!" ) );
-                // R Classes have not created with New, no delete needed
-                CleanupStack::Pop( &fileserver );
-                fileserver.Close();
-                return KErrNone;
-                }                           
-            
-            err = SearchAFileForReading( myFile, fileserver );                        
-            // R Classes have not created with New, no delete needed
-            CleanupStack::Pop( &fileserver );
-            fileserver.Close();
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "File not found!" ) );                  
-                return KErrNone;
-                }                                                  
-            
-            return RepeatReadFromFileL( myFile, myActiveTime );
-            }
-        case MSTIFTestInterference::EFileSystemReadZ:
-            {
-            RDebug::Print( _L( "STIFTestInterference::EFileSystemReadZ" ) );            
-            _LIT( KDrive, "Z:\\" );   
-            myFile.Format( KDrive );
-
-            RFs fileserver;            
-            TInt err = fileserver.Connect(); 
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "RFs connection failed with error: %d" ), err );
-                return err;
-                }          
-            CleanupClosePushL( fileserver );                                                        
-            RDebug::Print( _L( "Fileserver created" ) );                  
-            err = fileserver.SetSessionPath( myFile );
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "Drive Z is not ready!" ) );                                
-                // R Classes have not created with New, no delete needed
-                CleanupStack::Pop( &fileserver );
-                fileserver.Close();
-                return KErrNone;
-                }                           
-
-            err = SearchAFileForReading( myFile, fileserver );                        
-            // R Classes have not created with New, no delete needed
-            CleanupStack::Pop( &fileserver );
-            fileserver.Close();
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "File not found!" ) );                  
-                return KErrNone;
-                }                                                  
-            
-            return RepeatReadFromFileL( myFile, myActiveTime );
-            }           
-        case MSTIFTestInterference::EFileSystemWriteC:
-            {            
-            RDebug::Print( _L( "STIFTestInterference::EFileSystemWriteC" ) );            
-            _LIT( KDrive, "C:\\" );
-            _LIT( KFileName,  "FileSystemWriteC.txt" );                                    
-            TBufC<20> myFileName( KFileName );            
-            myFile.Format( KDrive );
-
-            RFs fileserver;            
-            TInt err = fileserver.Connect(); 
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "RFs connection failed with error: %d" ), err );
-                return err;
-                }          
-            CleanupClosePushL( fileserver );                                                        
-            RDebug::Print( _L( "Fileserver created" ) );                  
-                        
-            err = fileserver.SetSessionPath( myFile );                       
-            // R Classes have not created with New, no delete needed
-            CleanupStack::Pop( &fileserver );
-            fileserver.Close();
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "Drive C is not ready!" ) );
-                return KErrNone;
-                }
-            
-            PrepareFileSystemL( myFile, myFileName );
-            myFile.Append( myFileName );
-            return RepeatWriteToFileL( myFile, endTime );
-            }
-        case MSTIFTestInterference::EFileSystemWriteD:
-            {
-            RDebug::Print( _L( "STIFTestInterference::EFileSystemWriteD" ) );            
-            _LIT( KDrive, "D\x3a\\" );
-            _LIT( KFileName,  "FileSystemWriteD.txt" );                                    
-            TBufC<20> myFileName( KFileName );            
-            myFile.Format( KDrive );
-
-            RFs fileserver;            
-            TInt err = fileserver.Connect(); 
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "RFs connection failed with error: %d" ), err );
-                return err;
-                }          
-            CleanupClosePushL( fileserver );                                            
-            RDebug::Print( _L( "Fileserver created" ) );                  
-            err = fileserver.SetSessionPath( myFile );                       
-                        
-            // R Classes have not created with New, no delete needed
-            CleanupStack::Pop( &fileserver );
-            fileserver.Close();
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "Drive D is not ready!" ) );
-                return KErrNone;
-                }
-                            
-            PrepareFileSystemL( myFile, myFileName );
-            myFile.Append( myFileName );
-            return RepeatWriteToFileL( myFile, endTime );
-            }
-        case MSTIFTestInterference::EFileSystemWriteE:
-            {            
-            RDebug::Print( _L( "STIFTestInterference::EFileSystemWriteE" ) );            
-            _LIT( KDrive, "E\x3a\\" );
-            _LIT( KFileName,  "FileSystemWriteE.txt" );
-            TBufC<20> myFileName( KFileName );            
-            myFile.Format( KDrive );
-            
-            RFs fileserver;            
-            TInt err = fileserver.Connect(); 
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "RFs connection failed with error: %d" ), err );
-                return err;
-                }          
-            CleanupClosePushL( fileserver );                                
-            RDebug::Print( _L( "Fileserver created" ) );                  
-                        
-            err = fileserver.SetSessionPath( myFile );                       
-            // R Classes have not created with New, no delete needed
-            CleanupStack::Pop( &fileserver );
-            fileserver.Close();
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "Drive E is not ready!" ) );
-                return KErrNone;
-                }            
-            PrepareFileSystemL( myFile, myFileName );
-            myFile.Append( myFileName );
-
-            return RepeatWriteToFileL( myFile, endTime );
-            }
-        case MSTIFTestInterference::EFileSystemFillAndEmptyC:
-            {                       
-            RDebug::Print( _L( "STIFTestInterference::EFileSystemFillAndEmptyC" ) );            
-            _LIT( KDrive, "C:\\" );
-            _LIT( KFileName,  "FillAndEmptyFile.txt" );                      
-            TBufC<20> myFileName( KFileName );            
-            myFile.Format( KDrive );
-            
-            RFs fileserver;            
-            TInt err = fileserver.Connect();             
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "RFs connection failed with error: %d" ), err );
-                return err;
-                }          
-            CleanupClosePushL( fileserver );                    
-            RDebug::Print( _L( "Fileserver created" ) );                  
-                        
-            err = fileserver.SetSessionPath( myFile );                       
-            // R Classes have not created with New, no delete needed
-            CleanupStack::Pop( &fileserver );
-            fileserver.Close();
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "Drive C is not ready!" ) );
-                return KErrNone;
-                }                
-            PrepareFileSystemL( myFile, myFileName );
-            myFile.Append( myFileName );
-
-            RepeatWriteToFileL( myFile, endTime );                        
-            EmptyTheFileSystemL( myFile, endTime );
-            
-            return KErrNone;
-            }
-        case MSTIFTestInterference::EFileSystemFillAndEmptyD:
-            {
-            RDebug::Print( _L( "STIFTestInterference::EFileSystemFillAndEmptyD" ) );            
-            _LIT( KDrive, "D\x3a\\" );
-            _LIT( KFileName,  "FillAndEmptyFile.txt" );                      
-            TBufC<20> myFileName( KFileName );            
-            myFile.Format( KDrive );
-            
-            RFs fileserver;            
-            TInt err = fileserver.Connect(); 
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "RFs connection failed with error: %d" ), err );
-                return err;
-                }      
-            CleanupClosePushL( fileserver );                    
-            RDebug::Print( _L( "Fileserver created" ) );                  
-                        
-            err = fileserver.SetSessionPath( myFile );                       
-            // R Classes have not created with New, no delete needed
-            CleanupStack::Pop( &fileserver );
-            fileserver.Close();
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "Drive D is not ready!" ) );
-                return KErrNone;
-                }                
-            PrepareFileSystemL( myFile, myFileName );
-            myFile.Append( myFileName );
-
-            RepeatWriteToFileL( myFile, endTime );                        
-            EmptyTheFileSystemL( myFile, endTime );
-            
-            return KErrNone;
-            }
-        case MSTIFTestInterference::EFileSystemFillAndEmptyE:
-            {
-            RDebug::Print( _L( "STIFTestInterference::EFileSystemFillAndEmptyE" ) );            
-            _LIT( KDrive, "E\x3a\\" );
-            _LIT( KFileName,  "FillAndEmptyFile.txt" );                      
-            TBufC<20> myFileName( KFileName );            
-            myFile.Format( KDrive );
-            
-            RFs fileserver;            
-            TInt err = fileserver.Connect(); 
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "RFs connection failed with error: %d" ), err );
-                return err;
-                }          
-            CleanupClosePushL( fileserver );
-            RDebug::Print( _L( "Fileserver created" ) );                  
-                        
-            err = fileserver.SetSessionPath( myFile );                       
-            // R Classes have not created with New, no delete needed
-            CleanupStack::Pop( &fileserver );
-            fileserver.Close();
-
-            if( err != KErrNone )
-                {
-                RDebug::Print( _L( "Drive E is not ready!" ) );
-                return KErrNone;
-                }                
-            PrepareFileSystemL( myFile, myFileName );
-            myFile.Append( myFileName );
-
-            RepeatWriteToFileL( myFile, endTime );                        
-            EmptyTheFileSystemL( myFile, endTime );
-            
-            return KErrNone;
-            }       
-        default:
-            {
-            return KErrNone;
-            }
-        }
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CExecuteInterference
-
-    Method: SearchAFileForReading
-
-    Description: Searches a file from given directory
-
-    Parameters: TDes &aPath, TDes &aFileserver
-
-    Return Values: TInt Symbian error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CExecuteInterference::SearchAFileForReading( TDes &aPath, RFs &aFileserver )
-    {
-    RDebug::Print( _L( "CExecuteInterference::SearchAFileForReading" ) );    
-    
-    CDir * filelist;
-    CDir * dirlist;
-    TInt ret = KErrNotFound;       
-    aFileserver.SetSessionPath( aPath );        
-    
-    aFileserver.GetDir( aPath, KEntryAttNormal, ESortByName, filelist, dirlist );        
-    
-    if( !filelist || !dirlist )
-        {
-        return KErrArgument;
-        }
-
-    if( filelist->Count() > 0 )
-        {
-        RDebug::Print( _L( "Filelist > 0" ) );    
-            
-        // File found! 
-        
-        // Check file size and accept it only if the size is ~10kb
-        // at miminum, or something like that
-        aPath.Append( (*filelist)[0].iName );                        
-        ret = KErrNone;
-        
-        RDebug::Print( _L( "File name: %S" ), &(*filelist)[0].iName );        
-        }
-    else
-        {
-        RDebug::Print( _L( "Filelist < 0, lets check other dirs" ) );            
-        TFileName tmp;
-        tmp.Append( aPath );
-        for( TInt x=0; x<dirlist->Count(); x++ )
-            {            
-            aPath.Format( tmp );
-            aPath.Append( (*dirlist)[0].iName );
-            aPath.Append( _L("\\") );
-            ret = SearchAFileForReading( aPath, aFileserver );
-            if( ret == KErrNone )
-                {
-                break;
-                }
-            }
-        }
-    
-    delete filelist;
-    delete dirlist;    
-       
-    return ret;        
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CExecuteInterference
-
-    Method: PrepareFileSystemLL
-
-    Description: Creates directory and file for test cases, if necessary
-
-    Parameters: TDes &aDriveName, TDes &aFileName
-
-    Return Values: TInt Symbian error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CExecuteInterference::PrepareFileSystemL( TDesC &aDriveName,
-                                              TDesC &aFileName )
-    {
-    // Note that aDriveName must be in format drivename:\\, e.g. "c:\\"
-    
-    RDebug::Print(_L("CExecuteInterference::PrepareFileSystemL"));
-    TFileName tmp;
-    tmp.Append( aDriveName );
-    
-    RFs fileserver;
-    TInt err = fileserver.Connect(); 
-    if( err != KErrNone )
-        {
-        RDebug::Print( _L( "RFs connection failed with error: %d" ), err );
-        return err;
-        }      
-    CleanupClosePushL( fileserver );                    
-            
-    _LIT( KSTIFDirName, "STIFInterference\\" );                                          
-
-    err = fileserver.SetSessionPath( tmp );                           
-    if( err != KErrNone )
-        {
-        CleanupStack::Pop( &fileserver );
-        fileserver.Close();
-        return err;
-        }
-    
-    tmp.Append( KSTIFDirName );
-    err = fileserver.MkDir( tmp );
-    if( err != KErrNone && err != KErrAlreadyExists )
-        {
-        RDebug::Print( _L( "MkDir failed with error: %d" ), err );
-        // R Classes have not created with New, no delete needed
-        CleanupStack::Pop( &fileserver );
-        fileserver.Close();
-        return err;
-        }              
-    
-    tmp.Format( aDriveName );
-    tmp.Append( KSTIFDirName );        
-    fileserver.SetSessionPath( tmp );                               
-
-    RFile newFile;
-    CleanupClosePushL( newFile );                    
-    TInt ret = newFile.Create( fileserver, aFileName, EFileWrite );
-    if( ret != KErrNone && ret != KErrAlreadyExists )
-        {
-        RDebug::Print( _L( "File create failed with error: %d" ), err );            
-        }
-        
-    // R Classes have not created with New, no delete needed
-    CleanupStack::Pop( &newFile );
-    CleanupStack::Pop( &fileserver );
-    newFile.Close();
-    fileserver.Close();
-    
-    return ret;      
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CExecuteInterference
-
-    Method: CPULoad
-
-    Description: Creates CPU load to the system
-
-    Parameters: const TTimeIntervalMicroSeconds32 &aActiveTime
-
-    Return Values: TInt Symbian error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CExecuteInterference::CPULoad( const TTimeIntervalMicroSeconds32 &aActiveTime )
-    {
-    RDebug::Print(_L("CExecuteInterference::CPULoad"));
-
-    TTime endTime;
-    TTime currentTime;
-
-    currentTime.HomeTime();
-    endTime.HomeTime();
-
-    endTime = endTime + aActiveTime;  
-
-    while ( currentTime < endTime )
-       {
-        currentTime.HomeTime();    
-       }
-
-    return KErrNone;    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CExecuteInterference
-
-    Method: DeleteFilesRecursivelyL
-
-    Description: Delete files in current directory and its subdirectories
-
-    Parameters: RFs &aFileserver, 
-                TDes &aStartDirectory
-
-    Return Values: TInt Symbian error code
-
-    Errors/Exceptions: Leaves if GetDir fails
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CExecuteInterference::DeleteFilesRecursivelyL( RFs &aFileserver, 
-                                                    TDes &aStartDirectory,
-                                                    const TTime &aEndTime )
-    { 
-    TTime currentTime;
-    currentTime.HomeTime();      
-    if( currentTime >= aEndTime )
-        {
-        return KErrTimedOut;
-        }
-    
-    RDebug::Print( _L( "CExecuteInterference::DeleteFilesRecursivelyL" ) );    
-    
-    TFileName currentDir;   
-    CDir * filelist;
-    CDir * dirlist;       
-    
-    aFileserver.SetSessionPath( aStartDirectory );    
-    aFileserver.SessionPath( currentDir );
-    RDebug::Print( _L( "Hakemistopolku = %S" ), &currentDir );       
-    
-    User::LeaveIfError( aFileserver.GetDir( 
-            currentDir, KEntryAttNormal, ESortByName, filelist, dirlist ) );
-               
-    // Delete all files
-    for( TInt x=0; x<filelist->Count(); x++ )
-        {
-        RDebug::Print( _L( "CExecuteInterference::DeleteFilesRecursivelyL: delete: %S" ), &(*filelist)[x].iName );                    
-        aFileserver.Delete( (*filelist)[x].iName );    
-        }
-    
-    // Looping all directories recursively
-    for( TInt y= 0; y<dirlist->Count(); y++ )
-        {        
-        currentDir.Format( aStartDirectory );
-        currentDir.Append( (*dirlist)[y].iName );
-        currentDir.Append( _L("\\") );
-        DeleteFilesRecursivelyL( aFileserver, currentDir, aEndTime );
-        }    
-     
-    delete filelist;
-    delete dirlist;
-
-    return KErrNone;
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CExecuteInterference
-
-    Method: EmptyTheFileSystemL
-
-    Description: Empty the file system using DeleteFilesRecursivelyL
-
-    Parameters: TDes &aFilePath
-
-    Return Values: TInt Symbian error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CExecuteInterference::EmptyTheFileSystemL( TDes &aFilePath, 
-                                               const TTime &aEndTime )
-    {
-    TTime currentTime;
-    currentTime.HomeTime();
-    if( currentTime >= aEndTime )
-        {
-        // End of time
-        return KErrTimedOut;
-        }    
-    
-    RDebug::Print( _L( "CExecuteInterference::EmptyTheFileSystemL" ) );    
-    RFs fileserver;
-    TInt err = fileserver.Connect(); 
-    if( err != KErrNone )
-        {
-        RDebug::Print( _L( "RFs connection failed with error: %d" ), err );
-        return err;
-        }      
-    CleanupClosePushL( fileserver );                           
-    TRAP( err, DeleteFilesRecursivelyL( fileserver, aFilePath, aEndTime ) );        
-    if( err != KErrNone )
-        {
-        RDebug::Print( _L( "DeleteFilesRecursivelyL failed with error: %d" ), err );
-        }    
-    // R Classes have not created with New, no delete needed
-    CleanupStack::Pop( &fileserver );   
-    fileserver.Close();
-    return err;
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CExecuteInterference
-
-    Method: WriteToFileAsynchL
-
-    Description: Writes data to a file asynchronously
-
-    Parameters: RFs &aFileserver,
-                const TTime &aEndTime 
-
-    Return Values: TInt Symbian error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CExecuteInterference::WriteToFileAsynchL( TDes &aFilePath,
-                                              RFs &aFileserver,
-                                              const TTime &aEndTime )
-    {
-    RFile myFile;
-
-    TInt err = myFile.Open( aFileserver, aFilePath, EFileWrite );
-    if( err != KErrNone )
-        {
-        RDebug::Print( _L( "Open file failed with error: %d" ), err );
-        return err;
-        }    
-    CleanupClosePushL( myFile );                      
-    TInt position = 0;
-    myFile.Seek( ESeekEnd, position );
-
-    _LIT8( KMyBuffer, "STIF Interference module: WriteToFile");
-    
-    // NOTE: this part has previous asynch implementation, doesn't work
-    // at the moment
-    /* 
-    TRequestStatus status;
-    myFile.Write( position, KMyBuffer, status );    
-    // Loop until either write operation is completed or the execution 
-    // time has expired    
-    while( doAlways ) 
-        {
-        if( status != KRequestPending )
-            {
-            return status.Int();
-            }
-        currentTime.HomeTime();                   
-        if( currentTime >= aEndTime )
-            {
-            return KErrTimedOut;
-            }
-         
-       }
-    */            
-
-    TTime currentTime;
-    currentTime.HomeTime();
-    
-    while( currentTime <= aEndTime )
-        {
-        myFile.Write( position, KMyBuffer );
-        currentTime.HomeTime();
-        }
-    // R Classes have not created with New, no delete needed
-    CleanupStack::Pop( &myFile );          
-    myFile.Close();
-    return KErrNone;      
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CExecuteInterference
-
-    Method: RepeatWriteToFileL
-
-    Description: Repeats file writing using WriteToFileAsynchL method
-
-    Parameters: const TTimeIntervalMicroSeconds32 &aActiveTime
-
-    Return Values: TInt Symbian error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CExecuteInterference::RepeatWriteToFileL(
-                    TDes &aFilePath, 
-                    const TTime &aActiveTime )
-    {
-    RFs fileserver;
-    TInt err = fileserver.Connect(); 
-    if( err != KErrNone )
-        {
-        RDebug::Print( _L( "RFs connection failed with error: %d" ), err );
-        return err;
-        }      
-    CleanupClosePushL( fileserver );                           
-        
-    TTime currentTime;
-    currentTime.HomeTime();
-
-    TVolumeInfo myVolume;
-    fileserver.Volume( myVolume, EDriveC );   
-
-    while( ( currentTime <= aActiveTime ) && ( myVolume.iFree > 0 ) )    
-        {
-        WriteToFileAsynchL( aFilePath, fileserver, aActiveTime );        
-        currentTime.HomeTime();
-        }
-    
-    // R Classes have not created with New, no delete needed
-    CleanupStack::Pop( &fileserver );        
-    fileserver.Close();
-    return KErrNone;
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CExecuteInterference
-
-    Method: RepeatReadFromFileL
-
-    Description: Repeats file reading using ReadFromFileAsynch method
-
-    Parameters: const TTimeIntervalMicroSeconds32 &aActiveTime
-
-    Return Values: TInt Symbian error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CExecuteInterference::RepeatReadFromFileL( 
-                               TDes &aFilePath,
-                               const TTimeIntervalMicroSeconds32 &aActiveTime )
-    {
-    RDebug::Print( _L( "CExecuteInterference::RepeatReadFromFileL" ) );
-    
-    RFs fileserver;
-    TInt err = fileserver.Connect(); 
-    if( err != KErrNone )
-        {
-        RDebug::Print( _L( "RFs connection failed with error: %d" ), err );
-        return err;
-        }      
-    CleanupClosePushL( fileserver );                           
-    
-    TTime endTime;
-    TTime currentTime;
-    RFile myFile;
-    TBuf8<20> myReadBuffer;
-
-    RDebug::Print( _L( "RepeatReadFromFileL: Open" ) );                  
-
-    // Open file
-    err = myFile.Open( fileserver, aFilePath, EFileWrite );
-    if( err != KErrNone )
-        {
-        RDebug::Print( _L( "Open file failed with error: %d" ), err );
-        // R Classes have not created with New, no delete needed
-        CleanupStack::Pop( &fileserver );
-        fileserver.Close();
-        return err;
-        }        
-            
-    CleanupClosePushL( myFile );                                       
-    // This part has previous async implementation, doesn't work at moment
-    /*   
-    RDebug::Print( _L( "ReadFromFileAsynch: trequeststatus" ) );                        
-           
-    TRequestStatus timer;
-    TRequestStatus read;
-
-    RDebug::Print( _L( "ReadFromFileAsynch: asynk timer" ) );                    
-
-    RTimer clock;
-    clock.CreateLocal();
-    clock.At( timer, endTime);
-
-    RDebug::Print( _L( "ReadFromFileAsynch: asynk read" ) );
-    myFile.Read( myReadBuffer, 20, read );
-
-    RDebug::Print( _L( "ReadFromFileAsynch: ennen whilelooppia" ) );
-    while( timer == KRequestPending )
-        {
-        User::WaitForRequest( read, timer );
-        if( read != KRequestPending)
-            {
-            RDebug::Print( _L( "ReadFromFileAsynch: uudelleen asynk read" ) );
-            read = KRequestPending;                              
-    	    myFile.Read( myReadBuffer, 20, read );    	    
-            }
-        else
-            {  
-            RDebug::Print( _L( "ReadFromFileAsynch: cancel luku, timer kompletoitui" ) );                  
-            // Timer valmis         
-            //read = KRequestPending;   
-            myFile.ReadCancel( read );
-            User::WaitForRequest( read );
-            break;
-            }
-        }      
-    */
-
-    currentTime.HomeTime();
-    endTime.HomeTime();
-    endTime = endTime + aActiveTime;
-    
-    while( currentTime <= endTime )
-        {
-        myFile.Read( myReadBuffer );
-        currentTime.HomeTime();    	    
-        }
-        
-    //myFile.Close();
-    //fileserver.Close();
-    // R Classes have not created with New, no delete needed
-    CleanupStack::Pop( &myFile );
-    CleanupStack::Pop( &fileserver );
-    myFile.Close();
-    fileserver.Close();
-    //CleanupStack::PopAndDestroy( 2 );       
-   
-    RDebug::Print( _L( "CExecuteInterference::RepeatReadFromFileL success" ) );
-    return KErrNone;    
-    }
-
-// ========================== OTHER EXPORTED FUNCTIONS =========================
-// None
-
-// End of File