201023
authorhgs
Mon, 14 Jun 2010 11:37:33 +0300
changeset 25 9aaae25af322
parent 21 f5d4820de50d
201023
hti/HtiServicePlugins/HtiFtpServicePlugin/src/HtiFtpServicePlugin.cpp
hti/hti_plat/hti_api/inc/HtiVersion.h
stif/TestCombiner/inc/TestCase.h
stif/TestCombiner/inc/TestCombinerUtils.h
stif/TestCombiner/inc/TestKeywords.h
stif/TestCombiner/src/TestCase.cpp
stif/TestCombiner/src/TestCombiner.cpp
stif/TestCombiner/src/TestCombinerUtils.cpp
stif/TestCombiner/src/TestKeywords.cpp
stif/TestEngine/BWINS/StifTestEngineu.def
stif/TestEngine/eabi/StifTestEngineu.def
stif/TestEngine/inc/TestCaseController.h
stif/TestEngine/src/TestCaseController.cpp
stif/TestEngine/src/TestEngineClient.cpp
stif/TestInterface/BWINS/StifTestInterfaceu.def
stif/TestInterface/eabi/StifTestInterfaceu.def
stif/TestInterface/src/TestModuleIf.cpp
stif/TestServer/BWINS/StifTestServeru.def
stif/TestServer/eabi/StifTestServeru.def
stif/TestServer/src/TestExecutionThread.cpp
stif/TestServer/src/TestServerClient.cpp
stif/TestServer/src/Testexecution.cpp
stif/group/ReleaseNote.txt
stif/inc/TestServerModuleIf.h
stif/inc/TestThreadContainer.h
stif/inc/version.h
stif/sis/Stif_31.sis
stif/stif_plat/inc/StifTestModule.h
stif/stif_plat/inc/TestEngineClient.h
stif/stif_plat/inc/TestServerClient.h
--- a/hti/HtiServicePlugins/HtiFtpServicePlugin/src/HtiFtpServicePlugin.cpp	Tue May 25 18:01:01 2010 +0300
+++ b/hti/HtiServicePlugins/HtiFtpServicePlugin/src/HtiFtpServicePlugin.cpp	Mon Jun 14 11:37:33 2010 +0300
@@ -682,15 +682,33 @@
     TInt newNameLength = aMessage[newNamePos];
     GetFileNameL( aMessage.Mid( newNamePos, newNameLength + 1 ), aUnicode );
 
+    TInt msglen = aMessage.Length();
+    TInt recurse = 1;
+    if(msglen>originalLenngth+newNameLength+3)        
+        {
+        recurse = aMessage[newNamePos+1+newNameLength];
+        }
+    
+    TInt err=0;
     if ( IsFileTcb( origName ) || IsFileTcb( iFileName ) )
         {
         HandleTcbCopyL( origName, iFileName );
         }
     else{
         iHandlerAO = new ( ELeave ) CFtpHandlerAO( this );
-        TInt err = iFileMan->Copy( origName, iFileName,
+        
+        if (recurse)
+            {
+            err = iFileMan->Copy( origName, iFileName,
                 ( CFileMan::EOverWrite | CFileMan::ERecurse ),
                 iHandlerAO->iStatus );
+            }
+        else
+            {
+            err = iFileMan->Copy( origName, iFileName,
+                ( CFileMan::EOverWrite ),
+                iHandlerAO->iStatus );
+            }
 
         if ( err == KErrNone)
             {
--- a/hti/hti_plat/hti_api/inc/HtiVersion.h	Tue May 25 18:01:01 2010 +0300
+++ b/hti/hti_plat/hti_api/inc/HtiVersion.h	Mon Jun 14 11:37:33 2010 +0300
@@ -25,13 +25,13 @@
 // CONSTANTS
 
 const TUint8 KHtiVersionMajor = 2;
-const TUint8 KHtiVersionMinor = 23;
+const TUint8 KHtiVersionMinor = 24;
 const TUint8 KHtiVersionBuild = 0;
 
 const TUint16 KHtiVersionYear  = 2010;
 const TUint8  KHtiVersionMonth = 5;
-const TUint8  KHtiVersionWeek  = 19;
-const TUint8  KHtiVersionDay   = 14;
+const TUint8  KHtiVersionWeek  = 21;
+const TUint8  KHtiVersionDay   = 28;
 
 //  MACROS
 
--- a/stif/TestCombiner/inc/TestCase.h	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestCombiner/inc/TestCase.h	Mon Jun 14 11:37:33 2010 +0300
@@ -207,8 +207,8 @@
                                   TDesC& aModuleName,
                                   TDesC& aTestId,
                                   TInt aExpectedResult,
-                                  TFullTestResult::TCaseExecutionResult
-                                        aCategory,
+                                  TFullTestResult::TCaseExecutionResult aCategory,
+                                  const TDesC& aTestCaseArguments,
                                   CTCTestModule* aModule ); //--PYTHON--
 
         /**
@@ -228,6 +228,11 @@
         const TDesC& ModuleName(){ return *iModuleName; }
 
         /**
+         * Get test case arguments
+         */
+        const TDesC& TestCaseArguments() const;
+        
+        /**
         * Get reference to RTestExecution.
         */
         RTestExecution& TestExecution(){ return iTestExecution; }
@@ -269,12 +274,13 @@
         CTCTestCase( CTestCombiner* testCombiner,
                      TInt aExpectedResult,
                      TFullTestResult::TCaseExecutionResult aCategory,
+                     const TDesC& aTestCaseArguments,
                      CTCTestModule* aModule ); //--PYTHON--
 
         /**
         * By default Symbian OS constructor is private.
         */
-        void ConstructL( TDesC& aModuleName, TDesC& aTestId );
+        void ConstructL( TDesC& aModuleName, TDesC& aTestId, const TDesC& aTestCaseArguments );
 
         /**
         * Start complete the testcase(Complete2 make the final complete).
@@ -298,6 +304,9 @@
         // Module name
         HBufC*                  iModuleName;
 
+        // Test case arguments
+        HBufC*                  iTestCaseArguments;
+        
         // Handle to test case execution
         RTestExecution          iTestExecution;
 
--- a/stif/TestCombiner/inc/TestCombinerUtils.h	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestCombiner/inc/TestCombinerUtils.h	Mon Jun 14 11:37:33 2010 +0300
@@ -91,6 +91,11 @@
         */
         void SetTitleL(TDesC& aTitle);
 
+        /**
+         * Sets test case arguments.
+         */
+        void SetTestCaseArgumentsL( const TDesC& aTestCaseArguments );
+
     private:
         /**
         * C++ default constructor.
@@ -112,6 +117,7 @@
         TFullTestResult::TCaseExecutionResult iCategory;
         TInt    iTimeout;
         TPtrC   iTitle;
+		TPtrC   iTestCaseArguments;
         
     private:
         HBufC*  iModuleBuf;
@@ -119,7 +125,7 @@
         HBufC*  iConfigBuf;
         HBufC*  iTestIdBuf;
         HBufC*  iTitleBuf;
-    
+        HBufC*  iTestCaseArgumentsBuf;
     };
     
 // CLASS DECLARATION
--- a/stif/TestCombiner/inc/TestKeywords.h	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestCombiner/inc/TestKeywords.h	Mon Jun 14 11:37:33 2010 +0300
@@ -82,6 +82,7 @@
             ECategory,
             ECaseTimeout,
             ECaseTitle,
+            EArgs,			
             };
 
         // pause keyword optional arguments
--- a/stif/TestCombiner/src/TestCase.cpp	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestCombiner/src/TestCase.cpp	Mon Jun 14 11:37:33 2010 +0300
@@ -336,6 +336,7 @@
 CTCTestCase::CTCTestCase( CTestCombiner* testCombiner,
                           TInt aExpectedResult,
                           TFullTestResult::TCaseExecutionResult aCategory,
+                          const TDesC& aTestCaseArguments,
                           CTCTestModule* aModule ): //--PYTHON
     CTestCase( testCombiner, aExpectedResult, aCategory, ECaseLocal, aModule ), //--PYTHON
     iResultPckg( iResult )
@@ -365,12 +366,13 @@
 */
 
 void CTCTestCase::ConstructL( TDesC& aModuleName,
-                              TDesC& aTestId )
+                              TDesC& aTestId,
+                              const TDesC& aTestCaseArguments )
     {
     __ASSERT_ALWAYS( aModuleName.Length() < KMaxFileName, User::Leave( KErrArgument ) );
     CTestCase::ConstructL( aTestId );
     iModuleName = aModuleName.AllocL();
-    
+    iTestCaseArguments = aTestCaseArguments.AllocL();
     }
 
 /*
@@ -397,17 +399,18 @@
                                 TDesC& aModuleName,
                                 TDesC& aTestId,
                                 TInt aExpectedResult,
-                                TFullTestResult::TCaseExecutionResult
-                                    aCategory,
+                                TFullTestResult::TCaseExecutionResult aCategory,
+                                const TDesC& aTestCaseArguments,
                                 CTCTestModule* aModule ) //--PYTHON
     {
     CTCTestCase* self = new (ELeave) CTCTestCase( testCombiner,
                                                    aExpectedResult,
                                                    aCategory,
+                                                   aTestCaseArguments,
                                                    aModule ); //--PYTHON
      
     CleanupStack::PushL( self );
-    self->ConstructL( aModuleName, aTestId );
+    self->ConstructL( aModuleName, aTestId, aTestCaseArguments );
     CleanupStack::Pop();
     return self;
      
@@ -475,6 +478,7 @@
     
     delete iProgress;
     delete iModuleName;
+    delete iTestCaseArguments;
     
     delete iCommand;
     }
@@ -484,6 +488,34 @@
 
      Class: CTCTestCase
 
+     Method: TestCaseArguments
+
+     Description: Get test case arguments
+
+     Parameters: None.
+
+     Return Values: Test case arguments.
+
+     Errors/Exceptions: None.
+
+     Status: Proposal
+    
+-------------------------------------------------------------------------------
+*/
+const TDesC& CTCTestCase::TestCaseArguments() const 
+    {
+    if ( iTestCaseArguments !=NULL ) 
+        {
+        return *iTestCaseArguments; 
+        }
+    return KNullDesC;
+    }
+
+/*
+-------------------------------------------------------------------------------
+
+     Class: CTCTestCase
+
      Method: DoCancel
 
      Description: Derived from CActive, handles the Cancel.
--- a/stif/TestCombiner/src/TestCombiner.cpp	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestCombiner/src/TestCombiner.cpp	Mon Jun 14 11:37:33 2010 +0300
@@ -1652,6 +1652,7 @@
                            aStartInfo.iTestId, 
                            aStartInfo.iExpectedResult, 
                            aStartInfo.iCategory,
+                           aStartInfo.iTestCaseArguments,
                            module ); //--PYTHON--
 
     CleanupStack::PushL( tc );
@@ -1694,7 +1695,14 @@
          &aStartInfo.iTestId, &aStartInfo.iModule, &aStartInfo.iIniFile, 
          &aStartInfo.iConfig, aStartInfo.iCaseNum, aStartInfo.iExpectedResult );
 
-    tc->TestExecution().RunTestCase( tc->iResultPckg, tc->iStatus );
+    if ( tc->TestCaseArguments().Length() > 0 )
+        {
+        tc->TestExecution().RunTestCase( tc->iResultPckg, tc->TestCaseArguments(), tc->iStatus );
+        }
+    else
+        {
+        tc->TestExecution().RunTestCase( tc->iResultPckg, tc->iStatus );
+        }
 
     iRunningTests++;
 
@@ -2445,8 +2453,21 @@
 */
 void CTestRunner::ConstructL()
     {
-    
-    iPauseTimer.CreateLocal();
+    TInt ret;
+    
+    ret = iPauseTimer.CreateLocal();
+    if(ret != KErrNone)
+        {
+        __TRACE( KError, (_L("Unable to create RTimer: iPauseTimer [%d] "), ret));
+        User::Leave(ret);
+        }
+        
+    ret = iPauseCombTimer.CreateLocal();
+    if(ret != KErrNone)
+        {
+        __TRACE( KError, (_L("Unable to create RTimer: iPauseCombTimer [%d] "), ret));
+        User::Leave(ret);
+        }
     
     iRemoteTimer = CRemoteTimer::NewL( iTestCombiner );
     
@@ -2515,6 +2536,8 @@
     iLine = 0;
     
     iPauseTimer.Close();
+    
+    iPauseCombTimer.Close();
          
     }
 
@@ -2550,8 +2573,34 @@
         User::Leave( KErrGeneral );
         }
         
-    TBool continueTask = EFalse; 
+    TBool continueTask = EFalse;
+    
+    // Check if there is still some time for combiner pause and we need to 
+    // continue pausing
+    if(iPauseCombRemainingTime > 0)
+        {           
+        // Maximum time for one RTimer::After request                   
+        TInt maximumTime = KMaxTInt / 1000;                       
+        
+        __TRACE( KMessage, (_L("CTestRunner::RunL: Going to reissue PauseCombiner request ") ) );           
+        __TRACE( KMessage, (_L("CTestRunner::RunL: iRemainingTimeValue = %d"), iPauseCombRemainingTime ) );        
         
+        if( iPauseCombRemainingTime < maximumTime )
+            {                           
+            iPauseCombTimer.After(iStatus, (iPauseCombRemainingTime * 1000));
+            iPauseCombRemainingTime = 0;
+            }
+        else
+            {            
+            iPauseCombRemainingTime -= maximumTime;
+            iPauseCombTimer.After(iStatus, (maximumTime * 1000));        
+            }     
+            
+        SetActive();
+        return;
+        }     
+ 
+    // Handling runner states
     switch( iState )
         {
         case ERunnerWaitTimeout:
@@ -2695,6 +2744,8 @@
     __TRACE( KMessage, (_L("CTestRunner::DoCancel")));
     iTestCombiner->TestModuleIf().Printf( KPrintPriLow, _L("Runner"), _L("DoCancel"));
     
+    iPauseCombTimer.Cancel();
+    
     switch( iState )
         {
         case ERunnerWaitTimeout:
@@ -3243,6 +3294,12 @@
                 aStartInfo.SetTitleL(val);
                 break;
            	    }
+            case TTCKeywords::EArgs:
+                {
+                __TRACE( KMessage, (_L("case arguments=%S"), &val));
+                aStartInfo.SetTestCaseArgumentsL( val );
+                }
+                break;				
             default:
 				{
                 __TRACE( KError, (_L("Unknown or illegal keyword")));
@@ -3397,7 +3454,7 @@
 	_LIT( KErrMsgPauseTimeoutNotDefined, "PauseCombiner : No timeout value given or value has invalid format" );
 	_LIT( KErrMsgPauseTimeoutNotPositive, "PauseCombiner : Timeout value can't be <0" );
 
-    TBool continueTask = ETrue;
+    TBool continueTask = EFalse;
     TInt pauseTime;
     TInt ret = KErrNone;
     
@@ -3416,12 +3473,31 @@
         User::Leave( KErrArgument );
         }    
     
-    //Time given by End User should be given in miliseconds
-    pauseTime*=1000;
-
-    __TRACE( KMessage, (_L("time=%d"), pauseTime ) );
-
-    User::After( pauseTime );
+    
+    // Maximum time for one RTimer::After request
+    TInt maximumTime = KMaxTInt / 1000;
+
+    // Check if pause value is suitable for RTimer::After
+    if(pauseTime < maximumTime)
+        {
+        iPauseCombTimer.After(iStatus, pauseTime * 1000);
+        iPauseCombRemainingTime = 0;
+        }
+    else
+        {
+        // Given pause value after multiplication with 1000 is
+        // larger than KMaxTInt, so we need to split it and 
+        // re-request After with remaining value from RunL
+
+        iPauseCombRemainingTime = pauseTime - maximumTime;
+        iPauseCombTimer.After(iStatus, maximumTime * 1000);
+        }
+
+    SetActive();
+
+    __TRACE(KMessage, (_L("Executing pause, time=[%d]"), pauseTime));
+    
+    iState = ERunnerRunning;
     
     return continueTask;
 }
--- a/stif/TestCombiner/src/TestCombinerUtils.cpp	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestCombiner/src/TestCombinerUtils.cpp	Mon Jun 14 11:37:33 2010 +0300
@@ -86,7 +86,8 @@
     iIniFileBuf(0),
     iConfigBuf(0),
     iTestIdBuf(0),
-    iTitleBuf(0)
+    iTitleBuf(0),
+	iTestCaseArgumentsBuf(0)
     {
 
     iCategory = TFullTestResult::ECaseExecuted; 
@@ -177,6 +178,7 @@
     delete iConfigBuf;
     delete iTestIdBuf;
     delete iTitleBuf;
+	delete iTestCaseArgumentsBuf;
     }
 
 /*
@@ -355,6 +357,34 @@
 /*
 -------------------------------------------------------------------------------
 
+     Class: CStartInfo
+
+     Method: SetTestCaseArguments
+
+     Description: Sets test case arguments
+     
+     Parameters:  const TDesC& aTestCaseArguments: in: test case arguments.
+     
+     Return Values: None
+
+     Errors/Exceptions: None
+
+     Status: Proposal
+    
+-------------------------------------------------------------------------------
+*/        
+void CStartInfo::SetTestCaseArgumentsL( const TDesC& aTestCaseArguments )
+    {
+    delete iTestCaseArgumentsBuf;
+	iTestCaseArgumentsBuf = NULL;
+    iTestCaseArgumentsBuf = aTestCaseArguments.AllocL();
+	iTestCaseArguments.Set( iTestCaseArgumentsBuf->Des() );
+    }
+
+
+/*
+-------------------------------------------------------------------------------
+
     DESCRIPTION
 
     This module contains the implementation of CSlaveInfo class 
--- a/stif/TestCombiner/src/TestKeywords.cpp	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestCombiner/src/TestKeywords.cpp	Mon Jun 14 11:37:33 2010 +0300
@@ -139,6 +139,7 @@
         (TText*)L"category",
         (TText*)L"timeout",
         (TText*)L"title",
+        (TText*)L"args",
         };
 
     if( aArg >= (TInt)(sizeof( runOptArgs )/sizeof(TText*)) )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stif/TestEngine/BWINS/StifTestEngineu.def	Mon Jun 14 11:37:33 2010 +0300
@@ -0,0 +1,65 @@
+EXPORTS
+	??0RSettingServer@@QAE@XZ @ 1 NONAME ; public: __thiscall RSettingServer::RSettingServer(void)
+	??1CSTIFTestFrameworkSettings@@UAE@XZ @ 2 NONAME ; public: virtual __thiscall CSTIFTestFrameworkSettings::~CSTIFTestFrameworkSettings(void)
+	?AddConfigFile@RTestEngine@@QAEHABV?$TBuf@$0IA@@@ABV?$TBuf@$0BAA@@@@Z @ 3 NONAME ; public: int __thiscall RTestEngine::AddConfigFile(class TBuf<128> const &,class TBuf<256> const &)
+	?AddTestModule@RTestEngine@@QAEHABV?$TBuf@$0IA@@@ABV?$TBuf@$0BAA@@@@Z @ 4 NONAME ; public: int __thiscall RTestEngine::AddTestModule(class TBuf<128> const &,class TBuf<256> const &)
+	?CancelAsyncRequest@RTestCase@@QAEHH@Z @ 5 NONAME ; public: int __thiscall RTestCase::CancelAsyncRequest(int)
+	?CancelAsyncRequest@RTestEngine@@QAEHH@Z @ 6 NONAME ; public: int __thiscall RTestEngine::CancelAsyncRequest(int)
+	?Close@RSettingServer@@QAEXXZ @ 7 NONAME ; public: void __thiscall RSettingServer::Close(void)
+	?Close@RTestCase@@QAEXXZ @ 8 NONAME ; public: void __thiscall RTestCase::Close(void)
+	?Close@RTestEngine@@QAEXXZ @ 9 NONAME ; public: void __thiscall RTestEngine::Close(void)
+	?Close@RTestEngineServer@@QAEXXZ @ 10 NONAME ; public: void __thiscall RTestEngineServer::Close(void)
+	?Connect@RSettingServer@@QAEHXZ @ 11 NONAME ; public: int __thiscall RSettingServer::Connect(void)
+	?Connect@RTestEngineServer@@QAEHXZ @ 12 NONAME ; public: int __thiscall RTestEngineServer::Connect(void)
+	?EnumerateTestCases@RTestEngine@@QAEXAAV?$TPckgBuf@H@@AAVTRequestStatus@@@Z @ 13 NONAME ; public: void __thiscall RTestEngine::EnumerateTestCases(class TPckgBuf<int> &,class TRequestStatus &)
+	?ErrorNotification@RTestEngine@@QAEXAAV?$TPckg@VTErrorNotification@@@@AAVTRequestStatus@@@Z @ 14 NONAME ; public: void __thiscall RTestEngine::ErrorNotification(class TPckg<class TErrorNotification> &,class TRequestStatus &)
+	?Event@RTestEngine@@QAEXAAV?$TPckg@VTEventIf@@@@AAVTRequestStatus@@@Z @ 15 NONAME ; public: void __thiscall RTestEngine::Event(class TPckg<class TEventIf> &,class TRequestStatus &)
+	?GetBooleanSettingsL@CSTIFTestFrameworkSettings@@QAEHPAVCStifSectionParser@@VTPtrC16@@AAH@Z @ 16 NONAME ; public: int __thiscall CSTIFTestFrameworkSettings::GetBooleanSettingsL(class CStifSectionParser *,class TPtrC16,int &)
+	?GetFileSetting@CSTIFTestFrameworkSettings@@QAEHPAVCStifSectionParser@@VTPtrC16@@AAV3@@Z @ 17 NONAME ; public: int __thiscall CSTIFTestFrameworkSettings::GetFileSetting(class CStifSectionParser *,class TPtrC16,class TPtrC16 &)
+	?GetFormatL@CSTIFTestFrameworkSettings@@QAEHPAVCStifSectionParser@@VTPtrC16@@AAW4TLoggerType@CStifLogger@@@Z @ 18 NONAME ; public: int __thiscall CSTIFTestFrameworkSettings::GetFormatL(class CStifSectionParser *,class TPtrC16,enum CStifLogger::TLoggerType &)
+	?GetLoggerSettings@RSettingServer@@QAEHAAUTLoggerSettings@@@Z @ 19 NONAME ; public: int __thiscall RSettingServer::GetLoggerSettings(struct TLoggerSettings &)
+	?GetOutputL@CSTIFTestFrameworkSettings@@QAEHPAVCStifSectionParser@@VTPtrC16@@AAW4TOutput@CStifLogger@@@Z @ 20 NONAME ; public: int __thiscall CSTIFTestFrameworkSettings::GetOutputL(class CStifSectionParser *,class TPtrC16,enum CStifLogger::TOutput &)
+	?GetOverwriteL@CSTIFTestFrameworkSettings@@QAEHPAVCStifSectionParser@@VTPtrC16@@AAH@Z @ 21 NONAME ; public: int __thiscall CSTIFTestFrameworkSettings::GetOverwriteL(class CStifSectionParser *,class TPtrC16,int &)
+	?GetReportModeL@CSTIFTestFrameworkSettings@@QAEHPAVCStifSectionParser@@VTPtrC16@@AAI@Z @ 22 NONAME ; public: int __thiscall CSTIFTestFrameworkSettings::GetReportModeL(class CStifSectionParser *,class TPtrC16,unsigned int &)
+	?GetTestCases@RTestEngine@@QAEHAAV?$CFixedFlatArray@VTTestInfo@@@@@Z @ 23 NONAME ; public: int __thiscall RTestEngine::GetTestCases(class CFixedFlatArray<class TTestInfo> &)
+	?NewL@CSTIFTestFrameworkSettings@@SAPAV1@XZ @ 24 NONAME ; public: static class CSTIFTestFrameworkSettings * __cdecl CSTIFTestFrameworkSettings::NewL(void)
+	?NotifyProgress@RTestCase@@QAEXAAV?$TPckg@VTTestProgress@@@@AAVTRequestStatus@@@Z @ 25 NONAME ; public: void __thiscall RTestCase::NotifyProgress(class TPckg<class TTestProgress> &,class TRequestStatus &)
+	?NotifyRemoteMsg@RTestCase@@QAEHAAVTDes8@@W4TStifCommand@@@Z @ 26 NONAME ; public: int __thiscall RTestCase::NotifyRemoteMsg(class TDes8 &,enum TStifCommand)
+	?NotifyRemoteType@RTestCase@@QAEXAAV?$TPckg@W4TStifCommand@@@@AAV?$TPckg@H@@AAVTRequestStatus@@@Z @ 27 NONAME ; public: void __thiscall RTestCase::NotifyRemoteType(class TPckg<enum TStifCommand> &,class TPckg<int> &,class TRequestStatus &)
+	?Open@RTestCase@@QAEHAAVRTestEngineServer@@ABV?$TPckg@VTTestInfo@@@@@Z @ 28 NONAME ; public: int __thiscall RTestCase::Open(class RTestEngineServer &,class TPckg<class TTestInfo> const &)
+	?Open@RTestEngine@@QAEHAAVRTestEngineServer@@ABV?$TBuf@$0BAA@@@@Z @ 29 NONAME ; public: int __thiscall RTestEngine::Open(class RTestEngineServer &,class TBuf<256> const &)
+	?OpenLoggerSession@RTestEngine@@QAEHAAVRTestEngineServer@@AAUTLoggerSettings@@@Z @ 30 NONAME ; public: int __thiscall RTestEngine::OpenLoggerSession(class RTestEngineServer &,struct TLoggerSettings &)
+	?Pause@RTestCase@@QAEHXZ @ 31 NONAME ; public: int __thiscall RTestCase::Pause(void)
+	?ReadLoggerSettingsFromIniFile@RSettingServer@@QAEHAAUTLoggerSettings@@@Z @ 32 NONAME ; public: int __thiscall RSettingServer::ReadLoggerSettingsFromIniFile(struct TLoggerSettings &)
+	?RemoveConfigFile@RTestEngine@@QAEHABV?$TBuf@$0IA@@@ABV?$TBuf@$0BAA@@@@Z @ 33 NONAME ; public: int __thiscall RTestEngine::RemoveConfigFile(class TBuf<128> const &,class TBuf<256> const &)
+	?RemoveTestModule@RTestEngine@@QAEHABV?$TBuf@$0IA@@@@Z @ 34 NONAME ; public: int __thiscall RTestEngine::RemoveTestModule(class TBuf<128> const &)
+	?Resume@RTestCase@@QAEHXZ @ 35 NONAME ; public: int __thiscall RTestCase::Resume(void)
+	?RunTestCase@RTestCase@@QAEXAAV?$TPckg@VTFullTestResult@@@@AAVTRequestStatus@@@Z @ 36 NONAME ; public: void __thiscall RTestCase::RunTestCase(class TPckg<class TFullTestResult> &,class TRequestStatus &)
+	?SetAttribute@RTestEngine@@QAEHW4TAttribute@@ABVTDesC16@@@Z @ 37 NONAME ; public: int __thiscall RTestEngine::SetAttribute(enum TAttribute,class TDesC16 const &)
+	?SetIniFileInformation@RSettingServer@@QAEHABV?$TBuf@$0BAA@@@@Z @ 38 NONAME ; public: int __thiscall RSettingServer::SetIniFileInformation(class TBuf<256> const &)
+	?SetNewIniFileSetting@RSettingServer@@QAEHAAV?$TBuf@$0IA@@@@Z @ 39 NONAME ; public: int __thiscall RSettingServer::SetNewIniFileSetting(class TBuf<128> &)
+	?StartEngine@@YAHXZ @ 40 NONAME ; int __cdecl StartEngine(void)
+	?StartNewServer@@YAHAAV?$TBuf@$0IA@@@@Z @ 41 NONAME ; int __cdecl StartNewServer(class TBuf<128> &)
+	?Version@RSettingServer@@QBE?AVTVersion@@XZ @ 42 NONAME ; public: class TVersion __thiscall RSettingServer::Version(void)const 
+	?Version@RTestEngineServer@@QBE?AVTVersion@@XZ @ 43 NONAME ; public: class TVersion __thiscall RTestEngineServer::Version(void)const 
+	??1CTestModuleList@@UAE@XZ @ 44 NONAME ; CTestModuleList::~CTestModuleList(void)
+	?AddCfgFile@CTestModuleInfo@@QAEHAAVTDesC16@@@Z @ 45 NONAME ; int CTestModuleInfo::AddCfgFile(class TDesC16 &)
+	?AddTestModule@CTestModuleList@@QAEHAAVTDesC16@@@Z @ 46 NONAME ; int CTestModuleList::AddTestModule(class TDesC16 &)
+	?Count@CTestModuleList@@QAEHXZ @ 47 NONAME ; int CTestModuleList::Count(void)
+	?CountCfgFiles@CTestModuleInfo@@QAEHXZ @ 48 NONAME ; int CTestModuleInfo::CountCfgFiles(void)
+	?GetCfgFileName@CTestModuleInfo@@QAEHHAAVTDes16@@@Z @ 49 NONAME ; int CTestModuleInfo::GetCfgFileName(int, class TDes16 &)
+	?GetIniFileName@CTestModuleInfo@@QAEHAAVTDes16@@@Z @ 50 NONAME ; int CTestModuleInfo::GetIniFileName(class TDes16 &)
+	?GetModule@CTestModuleList@@QAEPAVCTestModuleInfo@@AAVTDesC16@@@Z @ 51 NONAME ; class CTestModuleInfo * CTestModuleList::GetModule(class TDesC16 &)
+	?GetModule@CTestModuleList@@QAEPAVCTestModuleInfo@@H@Z @ 52 NONAME ; class CTestModuleInfo * CTestModuleList::GetModule(int)
+	?GetModuleName@CTestModuleInfo@@QAEHAAVTDes16@@@Z @ 53 NONAME ; int CTestModuleInfo::GetModuleName(class TDes16 &)
+	?GetUncheckedCfgFile@CTestModuleList@@QAEPAVCTestCaseFileInfo@@XZ @ 54 NONAME ; class CTestCaseFileInfo * CTestModuleList::GetUncheckedCfgFile(void)
+	?NewL@CTestModuleList@@SAPAV1@PAVCStifLogger@@@Z @ 55 NONAME ; class CTestModuleList * CTestModuleList::NewL(class CStifLogger *)
+	?SetIniFile@CTestModuleInfo@@QAEHAAVTDesC16@@@Z @ 56 NONAME ; int CTestModuleInfo::SetIniFile(class TDesC16 &)
+	?GetCfgFileName@CTestCaseFileInfo@@QAEHAAVTDes16@@@Z @ 57 NONAME ; int CTestCaseFileInfo::GetCfgFileName(class TDes16 &)
+	?SetChecked@CTestCaseFileInfo@@QAEXXZ @ 58 NONAME ; void CTestCaseFileInfo::SetChecked(void)
+	?GetEngineSettings@RSettingServer@@QAEHAAUTEngineSettings@@@Z @ 59 NONAME ; int RSettingServer::GetEngineSettings(struct TEngineSettings &)
+	?StoreEngineSettings@RSettingServer@@QAEHAAUTEngineSettings@@@Z @ 60 NONAME ; int RSettingServer::StoreEngineSettings(struct TEngineSettings &)
+	?GetFormatL@CSTIFTestFrameworkSettings@@QAEHPAVCStifSectionParser@@VTPtrC16@@AAW4TLoggerType@CStifLogger@@AAH@Z @ 61 NONAME ; int CSTIFTestFrameworkSettings::GetFormatL(class CStifSectionParser *, class TPtrC16, enum CStifLogger::TLoggerType &, int &)
+	?AddTestCaseResultToTestReport@RTestEngine@@QAEHABVTTestInfo@@ABVTFullTestResult@@H@Z @ 62 NONAME ; int RTestEngine::AddTestCaseResultToTestReport(class TTestInfo const &, class TFullTestResult const &, int)
+	?RunTestCase@RTestCase@@QAEXAAV?$TPckg@VTFullTestResult@@@@ABVTDesC16@@AAVTRequestStatus@@@Z @ 63 NONAME ; void RTestCase::RunTestCase(class TPckg<class TFullTestResult> &, class TDesC16 const &, class TRequestStatus &)
+
--- a/stif/TestEngine/eabi/StifTestEngineu.def	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestEngine/eabi/StifTestEngineu.def	Mon Jun 14 11:37:33 2010 +0300
@@ -110,4 +110,5 @@
 	_ZTV21CTestEngineSubSession @ 109 NONAME ; #<VT>#
 	_ZN26CSTIFTestFrameworkSettings10GetFormatLEP18CStifSectionParser7TPtrC16RN11CStifLogger11TLoggerTypeERi @ 110 NONAME
 	_ZN11RTestEngine29AddTestCaseResultToTestReportERK9TTestInfoRK15TFullTestResulti @ 111 NONAME
+	_ZN9RTestCase11RunTestCaseER5TPckgI15TFullTestResultERK7TDesC16R14TRequestStatus @ 112 NONAME
 
--- a/stif/TestEngine/inc/TestCaseController.h	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestEngine/inc/TestCaseController.h	Mon Jun 14 11:37:33 2010 +0300
@@ -176,6 +176,9 @@
         // Test Info
         TTestInfo           iTestInfo;
 
+        // Test case arguments
+		HBufC*              iTestCaseArguments;
+        
         // Internal state
         TTestCaseStatus     iState;
 
--- a/stif/TestEngine/src/TestCaseController.cpp	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestEngine/src/TestCaseController.cpp	Mon Jun 14 11:37:33 2010 +0300
@@ -219,7 +219,7 @@
 
     delete iRDebugLogger;
     delete iTimeout;
-
+    delete iTestCaseArguments;
     }
 
 /*
@@ -253,10 +253,23 @@
 
     iState = ETestCaseRunning;
     
+    delete iTestCaseArguments;
+    iTestCaseArguments = NULL;
+    
+    TInt testCaseArgumentsLength = iMessage.GetDesLength( 1 );
+    if ( ( testCaseArgumentsLength != KErrArgument ) && ( testCaseArgumentsLength != KErrBadDescriptor ) )
+        {
+        iTestCaseArguments = HBufC::NewL( testCaseArgumentsLength );
+        TPtr testCaseArgumentsPtr( iTestCaseArguments->Des() );
+        User::LeaveIfError( iMessage.Read( 1, testCaseArgumentsPtr ) );
+        iTestExecution.RunTestCase( iResultPckg, *iTestCaseArguments, iStatus );        
+        }
+    else
+        {    
+        iTestExecution.RunTestCase( iResultPckg, iStatus );
+        }
     SetActive();
 
-    iTestExecution.RunTestCase( iResultPckg, iStatus );    
-
     // If testcase has timeout (handler), then start it
     if ( iTimeout )
         {
@@ -2567,18 +2580,7 @@
         __TRACE( KInit, (  _L("Loaded reset module[%S]"), &dllName ) );
         }
 
-    // Verify the UID
-    TUid KUidTestModule = TUid::Uid ( 0x101FB3E7 );
-    TUidType requiredUID( KDynamicLibraryUid, KSharedLibraryUid, KUidTestModule );
-
-    TUidType moduleUID = resetModule.Type();    
-    if ( moduleUID != requiredUID )
-        {
-        // New instance can't be created
-        RDebug::Print( ( _L("STIF TF: Reset module has invalid UID. Aborting loading!") ) );
-        __TRACE ( KError, ( CStifLogger::EError, _L("Reset module has invalid UID. Aborting loading!" ) ) );
-        return KErrNotSupported;
-        }
+    
 
     // Get pointer to first exported function
     CTestInterfaceFactory libEntry;
--- a/stif/TestEngine/src/TestEngineClient.cpp	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestEngine/src/TestEngineClient.cpp	Mon Jun 14 11:37:33 2010 +0300
@@ -661,6 +661,37 @@
 
     Class: RTestCase
 
+    Method: RunTestCase
+
+    Description: Run a test case asynchronously.
+
+    Parameters: TFullTestResultPckg& aTestResult : TFullTestResult :
+                 Test Result package
+                const TDesC& aTestCaseArgs: Test case arguments
+                TRequestStatus& aStatus : Request status
+
+    Return Values: TInt KErrNone : Test case could be run
+                        Other error code : Reason the test case couldn't be run
+
+    Errors/Exceptions: None
+
+    Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C void RTestCase::RunTestCase( TFullTestResultPckg& aTestResult,
+                                      const TDesC& aTestCaseArgs,
+                                      TRequestStatus& aStatus )
+    {
+    TIpcArgs args( &aTestResult, &aTestCaseArgs, TIpcArgs::ENothing );
+    SendReceive( ETestCaseRunTestCase, args, aStatus );
+    }
+
+/*
+-------------------------------------------------------------------------------
+
+    Class: RTestCase
+
     Method: Pause
 
     Description: Pause suspends the execution of the test case.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stif/TestInterface/BWINS/StifTestInterfaceu.def	Mon Jun 14 11:37:33 2010 +0300
@@ -0,0 +1,141 @@
+EXPORTS
+	??0CScriptBase@@IAE@AAVCTestModuleIf@@@Z @ 1 NONAME ; CScriptBase::CScriptBase(class CTestModuleIf &)
+	??0TErrorNotification@@QAE@XZ @ 2 NONAME ; TErrorNotification::TErrorNotification(void)
+	??0TFullTestResult@@QAE@XZ @ 3 NONAME ; TFullTestResult::TFullTestResult(void)
+	??0TTestCaseInfo@@QAE@XZ @ 4 NONAME ; TTestCaseInfo::TTestCaseInfo(void)
+	??0TTestInfo@@QAE@XZ @ 5 NONAME ; TTestInfo::TTestInfo(void)
+	??0TTestProgress@@QAE@XZ @ 6 NONAME ; TTestProgress::TTestProgress(void)
+	??0TTestResult@@QAE@XZ @ 7 NONAME ; TTestResult::TTestResult(void)
+	??1CStifParser@@UAE@XZ @ 8 NONAME ; CStifParser::~CStifParser(void)
+	??1CStifTFwIfProt@@UAE@XZ @ 9 NONAME ; CStifTFwIfProt::~CStifTFwIfProt(void)
+	??1CTestModuleParamVer01@@UAE@XZ @ 10 NONAME ; CTestModuleParamVer01::~CTestModuleParamVer01(void)
+	?Append@CStifTFwIfProt@@QAEHABVTDesC16@@@Z @ 11 NONAME ; int CStifTFwIfProt::Append(class TDesC16 const &)
+	?Append@CStifTFwIfProt@@QAEHP6A?AVTPtrC16@@H@ZH0H@Z @ 12 NONAME ; int CStifTFwIfProt::Append(class TPtrC16 (*)(int), int, class TPtrC16 (*)(int), int)
+	?Append@CStifTFwIfProt@@QAEHP6A?AVTPtrC16@@H@ZH@Z @ 13 NONAME ; int CStifTFwIfProt::Append(class TPtrC16 (*)(int), int)
+	?Append@CStifTFwIfProt@@QAEHP6A?AVTPtrC16@@H@ZHABVTDesC16@@@Z @ 14 NONAME ; int CStifTFwIfProt::Append(class TPtrC16 (*)(int), int, class TDesC16 const &)
+	?Append@CStifTFwIfProt@@QAEHP6A?AVTPtrC16@@H@ZHH@Z @ 15 NONAME ; int CStifTFwIfProt::Append(class TPtrC16 (*)(int), int, int)
+	?AppendId@CStifTFwIfProt@@QAEHK@Z @ 16 NONAME ; int CStifTFwIfProt::AppendId(unsigned long)
+	?CallTestClass@CScriptBase@@QAEHABVTDesC16@@@Z @ 17 NONAME ; int CScriptBase::CallTestClass(class TDesC16 const &)
+	?CancelEvent@CTestModuleIf@@QAEHAAVTEventIf@@PAVTRequestStatus@@@Z @ 18 NONAME ; int CTestModuleIf::CancelEvent(class TEventIf &, class TRequestStatus *)
+	?CancelSignal@CScriptBase@@AAEXXZ @ 19 NONAME ; void CScriptBase::CancelSignal(void)
+	?CheckAllowResult@CTestModuleIf@@QAEHH@Z @ 20 NONAME ; int CTestModuleIf::CheckAllowResult(int)
+	?CmdType@CStifTFwIfProt@@SA?AVTPtrC16@@H@Z @ 21 NONAME ; class TPtrC16 CStifTFwIfProt::CmdType(int)
+	?CreateL@CStifTFwIfProt@@QAEXH@Z @ 22 NONAME ; void CStifTFwIfProt::CreateL(int)
+	?CreationResult@CStifLogger@@QAEHXZ @ 23 NONAME ; int CStifLogger::CreationResult(void)
+	?DstDevId@CStifTFwIfProt@@QAEGXZ @ 24 NONAME ; unsigned short CStifTFwIfProt::DstDevId(void)
+	?DstId@CStifTFwIfProt@@QAEKXZ @ 25 NONAME ; unsigned long CStifTFwIfProt::DstId(void)
+	?DstTestId@CStifTFwIfProt@@QAEGXZ @ 26 NONAME ; unsigned short CStifTFwIfProt::DstTestId(void)
+	?EnableSignal@CScriptBase@@AAEXAAVTRequestStatus@@@Z @ 27 NONAME ; void CScriptBase::EnableSignal(class TRequestStatus &)
+	?Event@CTestModuleIf@@QAEHAAVTEventIf@@@Z @ 28 NONAME ; int CTestModuleIf::Event(class TEventIf &)
+	?Event@CTestModuleIf@@QAEXAAVTEventIf@@AAVTRequestStatus@@@Z @ 29 NONAME ; void CTestModuleIf::Event(class TEventIf &, class TRequestStatus &)
+	?EventStatus@CStifTFwIfProt@@SA?AVTPtrC16@@H@Z @ 30 NONAME ; class TPtrC16 CStifTFwIfProt::EventStatus(int)
+	?EventStatusParams@CStifTFwIfProt@@SA?AVTPtrC16@@H@Z @ 31 NONAME ; class TPtrC16 CStifTFwIfProt::EventStatusParams(int)
+	?EventType@CStifTFwIfProt@@SA?AVTPtrC16@@H@Z @ 32 NONAME ; class TPtrC16 CStifTFwIfProt::EventType(int)
+	?GetChar@CStifItemParser@@QAEHABVTDesC16@@AAVTChar@@@Z @ 33 NONAME ; int CStifItemParser::GetChar(class TDesC16 const &, class TChar &)
+	?GetInt@CStifItemParser@@QAEHABVTDesC16@@AAH@Z @ 34 NONAME ; int CStifItemParser::GetInt(class TDesC16 const &, int &)
+	?GetInt@CStifItemParser@@QAEHABVTDesC16@@AAIW4TRadix@@@Z @ 35 NONAME ; int CStifItemParser::GetInt(class TDesC16 const &, unsigned int &, enum TRadix)
+	?GetItemLineL@CStifSectionParser@@QAEPAVCStifItemParser@@ABVTDesC16@@W4TTagToReturnValue@@@Z @ 36 NONAME ; class CStifItemParser * CStifSectionParser::GetItemLineL(class TDesC16 const &, enum TTagToReturnValue)
+	?GetLine@CStifSectionParser@@QAEHABVTDesC16@@AAVTPtrC16@@W4TTagToReturnValue@@@Z @ 37 NONAME ; int CStifSectionParser::GetLine(class TDesC16 const &, class TPtrC16 &, enum TTagToReturnValue)
+	?GetMeasurementOptions@CTestModuleIf@@QAEHAAH@Z @ 38 NONAME ; int CTestModuleIf::GetMeasurementOptions(int &)
+	?GetNextChar@CStifItemParser@@QAEHAAVTChar@@@Z @ 39 NONAME ; int CStifItemParser::GetNextChar(class TChar &)
+	?GetNextChar@CStifItemParser@@QAEHABVTDesC16@@AAVTChar@@@Z @ 40 NONAME ; int CStifItemParser::GetNextChar(class TDesC16 const &, class TChar &)
+	?GetNextInt@CStifItemParser@@QAEHAAH@Z @ 41 NONAME ; int CStifItemParser::GetNextInt(int &)
+	?GetNextInt@CStifItemParser@@QAEHAAIW4TRadix@@@Z @ 42 NONAME ; int CStifItemParser::GetNextInt(unsigned int &, enum TRadix)
+	?GetNextInt@CStifItemParser@@QAEHABVTDesC16@@AAH@Z @ 43 NONAME ; int CStifItemParser::GetNextInt(class TDesC16 const &, int &)
+	?GetNextInt@CStifItemParser@@QAEHABVTDesC16@@AAIW4TRadix@@@Z @ 44 NONAME ; int CStifItemParser::GetNextInt(class TDesC16 const &, unsigned int &, enum TRadix)
+	?GetNextItemLineL@CStifSectionParser@@QAEPAVCStifItemParser@@ABVTDesC16@@W4TTagToReturnValue@@@Z @ 45 NONAME ; class CStifItemParser * CStifSectionParser::GetNextItemLineL(class TDesC16 const &, enum TTagToReturnValue)
+	?GetNextItemLineL@CStifSectionParser@@QAEPAVCStifItemParser@@XZ @ 46 NONAME ; class CStifItemParser * CStifSectionParser::GetNextItemLineL(void)
+	?GetNextLine@CStifSectionParser@@QAEHAAVTPtrC16@@@Z @ 47 NONAME ; int CStifSectionParser::GetNextLine(class TPtrC16 &)
+	?GetNextLine@CStifSectionParser@@QAEHABVTDesC16@@AAVTPtrC16@@W4TTagToReturnValue@@@Z @ 48 NONAME ; int CStifSectionParser::GetNextLine(class TDesC16 const &, class TPtrC16 &, enum TTagToReturnValue)
+	?GetNextString@CStifItemParser@@QAEHAAVTPtrC16@@@Z @ 49 NONAME ; int CStifItemParser::GetNextString(class TPtrC16 &)
+	?GetNextString@CStifItemParser@@QAEHABVTDesC16@@AAVTPtrC16@@@Z @ 50 NONAME ; int CStifItemParser::GetNextString(class TDesC16 const &, class TPtrC16 &)
+	?GetPosition@CStifSectionParser@@QAEHXZ @ 51 NONAME ; int CStifSectionParser::GetPosition(void)
+	?GetStoredState@CTestModuleIf@@QAEHAAHAAV?$TBuf@$0IA@@@@Z @ 52 NONAME ; int CTestModuleIf::GetStoredState(int &, class TBuf<128> &)
+	?GetString@CStifItemParser@@QAEHABVTDesC16@@AAVTPtrC16@@@Z @ 53 NONAME ; int CStifItemParser::GetString(class TDesC16 const &, class TPtrC16 &)
+	?GetTestObject@CScriptBase@@QAEPAV1@ABVTDesC16@@@Z @ 54 NONAME ; class CScriptBase * CScriptBase::GetTestObject(class TDesC16 const &)
+	?Log@CStifLogger@@QAAHHV?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 55 NONAME ; int CStifLogger::Log(int, class TRefByValue<class TDesC16 const >, ...)
+	?Log@CStifLogger@@QAAHHV?$TRefByValue@$$CBVTDesC8@@@@ZZ @ 56 NONAME ; int CStifLogger::Log(int, class TRefByValue<class TDesC8 const >, ...)
+	?Log@CStifLogger@@QAAHV?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 57 NONAME ; int CStifLogger::Log(class TRefByValue<class TDesC16 const >, ...)
+	?Log@CStifLogger@@QAAHV?$TRefByValue@$$CBVTDesC8@@@@ZZ @ 58 NONAME ; int CStifLogger::Log(class TRefByValue<class TDesC8 const >, ...)
+	?Log@CStifLogger@@QAEHABVTDesC16@@@Z @ 59 NONAME ; int CStifLogger::Log(class TDesC16 const &)
+	?Log@CStifLogger@@QAEHABVTDesC8@@@Z @ 60 NONAME ; int CStifLogger::Log(class TDesC8 const &)
+	?Log@CStifLogger@@QAEHHABVTDesC16@@@Z @ 61 NONAME ; int CStifLogger::Log(int, class TDesC16 const &)
+	?Log@CStifLogger@@QAEHHABVTDesC8@@@Z @ 62 NONAME ; int CStifLogger::Log(int, class TDesC8 const &)
+	?MsgType@CStifTFwIfProt@@SA?AVTPtrC16@@H@Z @ 63 NONAME ; class TPtrC16 CStifTFwIfProt::MsgType(int)
+	?NewL@CSTIFTestMeasurement@@SAPAV1@PAVCTestModuleBase@@W4TSTIFMeasurementType@1@ABVTDesC16@@@Z @ 64 NONAME ; class CSTIFTestMeasurement * CSTIFTestMeasurement::NewL(class CTestModuleBase *, enum CSTIFTestMeasurement::TSTIFMeasurementType, class TDesC16 const &)
+	?NewL@CStifItemParser@@SAPAV1@VTPtrC16@@HH@Z @ 65 NONAME ; class CStifItemParser * CStifItemParser::NewL(class TPtrC16, int, int)
+	?NewL@CStifLogger@@KAPAV1@ABVTDesC16@@0AAUTLoggerSettings@@@Z @ 66 NONAME ; class CStifLogger * CStifLogger::NewL(class TDesC16 const &, class TDesC16 const &, struct TLoggerSettings &)
+	?NewL@CStifLogger@@SAPAV1@ABVTDesC16@@0W4TLoggerType@1@W4TOutput@1@HHHHHHHH@Z @ 67 NONAME ; class CStifLogger * CStifLogger::NewL(class TDesC16 const &, class TDesC16 const &, enum CStifLogger::TLoggerType, enum CStifLogger::TOutput, int, int, int, int, int, int, int, int)
+	?NewL@CStifParser@@SAPAV1@ABVTDesC16@@0W4TCommentType@1@@Z @ 68 NONAME ; class CStifParser * CStifParser::NewL(class TDesC16 const &, class TDesC16 const &, enum CStifParser::TCommentType)
+	?NewL@CStifParser@@SAPAV1@ABVTDesC16@@W4TCommentType@1@@Z @ 69 NONAME ; class CStifParser * CStifParser::NewL(class TDesC16 const &, enum CStifParser::TCommentType)
+	?NewL@CStifTFwIfProt@@SAPAV1@XZ @ 70 NONAME ; class CStifTFwIfProt * CStifTFwIfProt::NewL(void)
+	?NewL@CTestModuleIf@@SAPAV1@PAVCTestThreadContainer@@PAVCTestModuleBase@@@Z @ 71 NONAME ; class CTestModuleIf * CTestModuleIf::NewL(class CTestThreadContainer *, class CTestModuleBase *)
+	?NewL@CTestModuleParamVer01@@SAPAV1@XZ @ 72 NONAME ; class CTestModuleParamVer01 * CTestModuleParamVer01::NewL(void)
+	?NewL@MSTIFTestInterference@@SAPAV1@PAVCTestModuleBase@@W4TStifTestInterferenceCategory@1@@Z @ 73 NONAME ; class MSTIFTestInterference * MSTIFTestInterference::NewL(class CTestModuleBase *, enum MSTIFTestInterference::TStifTestInterferenceCategory)
+	?NextSectionL@CStifParser@@QAEPAVCStifSectionParser@@ABVTDesC16@@0H@Z @ 74 NONAME ; class CStifSectionParser * CStifParser::NextSectionL(class TDesC16 const &, class TDesC16 const &, int)
+	?NextSubSectionL@CStifSectionParser@@QAEPAV1@ABVTDesC16@@0H@Z @ 75 NONAME ; class CStifSectionParser * CStifSectionParser::NextSubSectionL(class TDesC16 const &, class TDesC16 const &, int)
+	?OutputType@CStifLogger@@QAE?AW4TOutput@1@XZ @ 76 NONAME ; enum CStifLogger::TOutput CStifLogger::OutputType(void)
+	?ParsingType@CStifItemParser@@QAE?AW4TParsingType@1@XZ @ 77 NONAME ; enum CStifItemParser::TParsingType CStifItemParser::ParsingType(void)
+	?Printf@CTestModuleIf@@QAAXHABVTDesC16@@V?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 78 NONAME ; void CTestModuleIf::Printf(int, class TDesC16 const &, class TRefByValue<class TDesC16 const >, ...)
+	?Reboot@CTestModuleIf@@QAEHH@Z @ 79 NONAME ; int CTestModuleIf::Reboot(int)
+	?Remainder@CStifItemParser@@QAEHAAVTPtrC16@@@Z @ 80 NONAME ; int CStifItemParser::Remainder(class TPtrC16 &)
+	?RemoteReceive@CTestModuleIf@@QAEXAAVTDes16@@AAVTRequestStatus@@@Z @ 81 NONAME ; void CTestModuleIf::RemoteReceive(class TDes16 &, class TRequestStatus &)
+	?RemoteReceiveCancel@CTestModuleIf@@QAEXXZ @ 82 NONAME ; void CTestModuleIf::RemoteReceiveCancel(void)
+	?RemoteSend@CTestModuleIf@@QAEHABVTDesC16@@@Z @ 83 NONAME ; int CTestModuleIf::RemoteSend(class TDesC16 const &)
+	?RemoteType@CStifTFwIfProt@@SA?AVTPtrC16@@H@Z @ 84 NONAME ; class TPtrC16 CStifTFwIfProt::RemoteType(int)
+	?ResetAllowResult@CTestModuleIf@@QAEHXZ @ 85 NONAME ; int CTestModuleIf::ResetAllowResult(void)
+	?RespParam@CStifTFwIfProt@@SA?AVTPtrC16@@H@Z @ 86 NONAME ; class TPtrC16 CStifTFwIfProt::RespParam(int)
+	?ResultCategory@CStifTFwIfProt@@SA?AVTPtrC16@@H@Z @ 87 NONAME ; class TPtrC16 CStifTFwIfProt::ResultCategory(int)
+	?RunInternalL@CScriptBase@@MAEHQBVTStifFunctionInfo@@HAAVCStifItemParser@@@Z @ 88 NONAME ; int CScriptBase::RunInternalL(class TStifFunctionInfo const * const, int, class CStifItemParser &)
+	?RunParams@CStifTFwIfProt@@SA?AVTPtrC16@@H@Z @ 89 NONAME ; class TPtrC16 CStifTFwIfProt::RunParams(int)
+	?RunStatus@CStifTFwIfProt@@SA?AVTPtrC16@@H@Z @ 90 NONAME ; class TPtrC16 CStifTFwIfProt::RunStatus(int)
+	?RunStatusParams@CStifTFwIfProt@@SA?AVTPtrC16@@H@Z @ 91 NONAME ; class TPtrC16 CStifTFwIfProt::RunStatusParams(int)
+	?SaveData@CStifLogger@@QAEHAAVTDesC16@@@Z @ 92 NONAME ; int CStifLogger::SaveData(class TDesC16 &)
+	?SaveData@CStifLogger@@QAEHAAVTDesC8@@@Z @ 93 NONAME ; int CStifLogger::SaveData(class TDesC8 &)
+	?SectionL@CStifParser@@QAEPAVCStifSectionParser@@ABVTDesC16@@0H@Z @ 94 NONAME ; class CStifSectionParser * CStifParser::SectionL(class TDesC16 const &, class TDesC16 const &, int)
+	?SetAllowResult@CTestModuleIf@@QAEHH@Z @ 95 NONAME ; int CTestModuleIf::SetAllowResult(int)
+	?SetBehavior@CTestModuleIf@@QAEHW4TTestBehavior@1@PAX@Z @ 96 NONAME ; int CTestModuleIf::SetBehavior(enum CTestModuleIf::TTestBehavior, void *)
+	?SetCmdType@CStifTFwIfProt@@QAEHW4TCmdType@1@@Z @ 97 NONAME ; int CStifTFwIfProt::SetCmdType(enum CStifTFwIfProt::TCmdType)
+	?SetDstId@CStifTFwIfProt@@QAEHK@Z @ 98 NONAME ; int CStifTFwIfProt::SetDstId(unsigned long)
+	?SetExitReason@CTestModuleIf@@QAEXW4TExitReason@1@H@Z @ 99 NONAME ; void CTestModuleIf::SetExitReason(enum CTestModuleIf::TExitReason, int)
+	?SetL@CStifTFwIfProt@@QAEHABVTDesC16@@@Z @ 100 NONAME ; int CStifTFwIfProt::SetL(class TDesC16 const &)
+	?SetMsgType@CStifTFwIfProt@@QAEHW4TMsgType@1@@Z @ 101 NONAME ; int CStifTFwIfProt::SetMsgType(enum CStifTFwIfProt::TMsgType)
+	?SetParsingType@CStifItemParser@@QAEHW4TParsingType@1@@Z @ 102 NONAME ; int CStifItemParser::SetParsingType(enum CStifItemParser::TParsingType)
+	?SetPosition@CStifSectionParser@@QAEHH@Z @ 103 NONAME ; int CStifSectionParser::SetPosition(int)
+	?SetRespType@CStifTFwIfProt@@QAEHW4TMsgType@1@@Z @ 104 NONAME ; int CStifTFwIfProt::SetRespType(enum CStifTFwIfProt::TMsgType)
+	?SetResult@TTestResult@@QAEXHABVTDesC16@@@Z @ 105 NONAME ; void TTestResult::SetResult(int, class TDesC16 const &)
+	?SetScripter@CScriptBase@@AAEXP6AHPAVCTestScripter@@W4TStifTSCallBackType@@ABVTDesC16@@@Z0@Z @ 106 NONAME ; void CScriptBase::SetScripter(int (*)(class CTestScripter *, enum TStifTSCallBackType, class TDesC16 const &), class CTestScripter *)
+	?SetSrcId@CStifTFwIfProt@@QAEHK@Z @ 107 NONAME ; int CStifTFwIfProt::SetSrcId(unsigned long)
+	?Signal@CScriptBase@@QAEXH@Z @ 108 NONAME ; void CScriptBase::Signal(int)
+	?SrcDevId@CStifTFwIfProt@@QAEGXZ @ 109 NONAME ; unsigned short CStifTFwIfProt::SrcDevId(void)
+	?SrcId@CStifTFwIfProt@@QAEKXZ @ 110 NONAME ; unsigned long CStifTFwIfProt::SrcId(void)
+	?SrcTestId@CStifTFwIfProt@@QAEGXZ @ 111 NONAME ; unsigned short CStifTFwIfProt::SrcTestId(void)
+	?Start@CSTIFTestMeasurement@@QAEHXZ @ 112 NONAME ; int CSTIFTestMeasurement::Start(void)
+	?StartSession@@YAHXZ @ 113 NONAME ; int StartSession(void)
+	?StifMacroError@CTestModuleIf@@QAEHHPBEPBDHHHHHHH@Z @ 114 NONAME ; int CTestModuleIf::StifMacroError(int, unsigned char const *, char const *, int, int, int, int, int, int, int)
+	?Stop@CSTIFTestMeasurement@@QAEHXZ @ 115 NONAME ; int CSTIFTestMeasurement::Stop(void)
+	?StoreState@CTestModuleIf@@QAEHHAAV?$TBuf@$0IA@@@@Z @ 116 NONAME ; int CTestModuleIf::StoreState(int, class TBuf<128> &)
+	?SubSectionL@CStifSectionParser@@QAEPAV1@ABVTDesC16@@0H@Z @ 117 NONAME ; class CStifSectionParser * CStifSectionParser::SubSectionL(class TDesC16 const &, class TDesC16 const &, int)
+	?TestModuleIf@CScriptBase@@QAEAAVCTestModuleIf@@XZ @ 118 NONAME ; class CTestModuleIf & CScriptBase::TestModuleIf(void)
+	?WriteDelimiter@CStifLogger@@QAEHABVTDesC16@@H@Z @ 119 NONAME ; int CStifLogger::WriteDelimiter(class TDesC16 const &, int)
+	?WriteDelimiter@CStifLogger@@QAEHABVTDesC8@@H@Z @ 120 NONAME ; int CStifLogger::WriteDelimiter(class TDesC8 const &, int)
+	?StopExecution@CTestModuleIf@@QAEHW4TStopExecutionType@@H@Z @ 121 NONAME ; int CTestModuleIf::StopExecution(enum TStopExecutionType, int)
+	?GetConstantValue@CScriptBase@@IAEHABVTDesC16@@AAH@Z @ 122 NONAME ; int CScriptBase::GetConstantValue(class TDesC16 const &, int &)
+	?GetConstantValue@CScriptBase@@IAEHABVTDesC16@@AAN@Z @ 123 NONAME ; int CScriptBase::GetConstantValue(class TDesC16 const &, double &)
+	?GetConstantValue@CScriptBase@@IAEHABVTDesC16@@AAVTDes16@@@Z @ 124 NONAME ; int CScriptBase::GetConstantValue(class TDesC16 const &, class TDes16 &)
+	?CorrectFilePathL@TStifUtil@@SAXAAVTDes16@@@Z @ 125 NONAME ; void TStifUtil::CorrectFilePathL(class TDes16 &)
+	?GetTestCaseTitleL@CTestModuleIf@@QAEXAAVTDes16@@@Z @ 126 NONAME ; void CTestModuleIf::GetTestCaseTitleL(class TDes16 &)
+	?STIFVersion@TStifUtil@@SAXAAH00AAVTDes16@@@Z @ 127 NONAME ; void TStifUtil::STIFVersion(int &, int &, int &, class TDes16 &)
+	?GetUiEnvProxy@CTestModuleIf@@QAEPAVCUiEnvProxy@@XZ @ 128 NONAME ; class CUiEnvProxy * CTestModuleIf::GetUiEnvProxy(void)
+	?UITesting@CTestModuleIf@@QAEHXZ @ 129 NONAME ; int CTestModuleIf::UITesting(void)
+	?SendTestModuleVersion@CTestModuleIf@@QAEHVTVersion@@V?$TBuf@$0BAA@@@@Z @ 130 NONAME ; int CTestModuleIf::SendTestModuleVersion(class TVersion, class TBuf<256>)
+	?SendTestModuleVersion@CTestModuleIf@@QAEHAAVTVersion@@ABVTDesC16@@H@Z @ 131 NONAME ; int CTestModuleIf::SendTestModuleVersion(class TVersion &, class TDesC16 const &, int)
+	?SetResultDescription@CScriptBase@@QAEXABVTDesC16@@@Z @ 132 NONAME ; void CScriptBase::SetResultDescription(class TDesC16 const &)
+	?SetLocalValue@CScriptBase@@IAEHABVTDesC16@@0@Z @ 133 NONAME ; int CScriptBase::SetLocalValue(class TDesC16 const &, class TDesC16 const &)
+	?SetLocalValue@CScriptBase@@IAEHABVTDesC16@@H@Z @ 134 NONAME ; int CScriptBase::SetLocalValue(class TDesC16 const &, int)
+	?SetLocalValue@CScriptBase@@IAEHABVTDesC16@@N@Z @ 135 NONAME ; int CScriptBase::SetLocalValue(class TDesC16 const &, double)
+	?GetLocalValue@CScriptBase@@IAEHABVTDesC16@@AAH@Z @ 136 NONAME ; int CScriptBase::GetLocalValue(class TDesC16 const &, int &)
+	?GetLocalValue@CScriptBase@@IAEHABVTDesC16@@AAN@Z @ 137 NONAME ; int CScriptBase::GetLocalValue(class TDesC16 const &, double &)
+	?GetLocalValue@CScriptBase@@IAEHABVTDesC16@@AAVTDes16@@@Z @ 138 NONAME ; int CScriptBase::GetLocalValue(class TDesC16 const &, class TDes16 &)
+	?GetTestCaseArguments@CTestModuleIf@@QBEABVTDesC16@@XZ @ 139 NONAME ; class TDesC16 const & CTestModuleIf::GetTestCaseArguments(void) const
+
--- a/stif/TestInterface/eabi/StifTestInterfaceu.def	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestInterface/eabi/StifTestInterfaceu.def	Mon Jun 14 11:37:33 2010 +0300
@@ -183,4 +183,5 @@
 	_ZN11CScriptBase13SetLocalValueERK7TDesC16S2_ @ 182 NONAME
 	_ZN11CScriptBase13SetLocalValueERK7TDesC16d @ 183 NONAME
 	_ZN11CScriptBase13SetLocalValueERK7TDesC16i @ 184 NONAME
+	_ZNK13CTestModuleIf20GetTestCaseArgumentsEv @ 185 NONAME
 
--- a/stif/TestInterface/src/TestModuleIf.cpp	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestInterface/src/TestModuleIf.cpp	Mon Jun 14 11:37:33 2010 +0300
@@ -1403,6 +1403,30 @@
 
     Class: CTestModuleIf
 
+    Method: GetTestCaseArguments
+
+    Description: Returns test case arguments.
+
+    Parameters: none
+
+    Return Values: test case arguments.
+
+    Errors/Exceptions: None
+
+    Status: proposal
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C const TDesC& CTestModuleIf::GetTestCaseArguments() const
+    {
+    return iTestExecution->GetTestCaseArguments();
+    }
+
+/*
+-------------------------------------------------------------------------------
+
+    Class: CTestModuleIf
+
     Method: UITesting
 
     Description: Gets information if it is UI test or not
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stif/TestServer/BWINS/StifTestServeru.def	Mon Jun 14 11:37:33 2010 +0300
@@ -0,0 +1,33 @@
+EXPORTS
+	??0RTestServer@@QAE@XZ @ 1 NONAME ; RTestServer::RTestServer(void)
+	?CancelAsyncRequest@RTestExecution@@QAEHH@Z @ 2 NONAME ; int RTestExecution::CancelAsyncRequest(int)
+	?CancelAsyncRequest@RTestModule@@QAEHH@Z @ 3 NONAME ; int RTestModule::CancelAsyncRequest(int)
+	?Close@RTestExecution@@QAEXXZ @ 4 NONAME ; void RTestExecution::Close(void)
+	?Close@RTestModule@@QAEXXZ @ 5 NONAME ; void RTestModule::Close(void)
+	?Close@RTestServer@@QAEXXZ @ 6 NONAME ; void RTestServer::Close(void)
+	?Connect@RTestServer@@QAEHABV?$TBuf@$0BAA@@@ABVTDesC16@@@Z @ 7 NONAME ; int RTestServer::Connect(class TBuf<256> const &, class TDesC16 const &)
+	?EnumerateTestCases@RTestModule@@QAEXAAVTDesC16@@AAV?$TPckgBuf@H@@AAVTRequestStatus@@@Z @ 8 NONAME ; void RTestModule::EnumerateTestCases(class TDesC16 &, class TPckgBuf<int> &, class TRequestStatus &)
+	?ErrorNotification@RTestModule@@QAEXAAV?$TPckg@VTErrorNotification@@@@AAVTRequestStatus@@@Z @ 9 NONAME ; void RTestModule::ErrorNotification(class TPckg<class TErrorNotification> &, class TRequestStatus &)
+	?GetTestCases@RTestModule@@QAEHAAV?$CFixedFlatArray@VTTestCaseInfo@@@@@Z @ 10 NONAME ; int RTestModule::GetTestCases(class CFixedFlatArray<class TTestCaseInfo> &)
+	?NotifyEvent@RTestExecution@@QAEHAAV?$TPckg@VTEventIf@@@@AAVTRequestStatus@@H@Z @ 11 NONAME ; int RTestExecution::NotifyEvent(class TPckg<class TEventIf> &, class TRequestStatus &, int)
+	?NotifyProgress@RTestExecution@@QAEHAAV?$TPckg@VTTestProgress@@@@AAVTRequestStatus@@@Z @ 12 NONAME ; int RTestExecution::NotifyProgress(class TPckg<class TTestProgress> &, class TRequestStatus &)
+	?NotifyRemoteCmd@RTestExecution@@QAEHAAV?$TPckg@W4TStifCommand@@@@AAV?$TPckg@H@@AAVTRequestStatus@@@Z @ 13 NONAME ; int RTestExecution::NotifyRemoteCmd(class TPckg<enum TStifCommand> &, class TPckg<int> &, class TRequestStatus &)
+	?Open@RTestExecution@@QAEHAAVRTestServer@@HABV?$TBuf@$0BAA@@@@Z @ 14 NONAME ; int RTestExecution::Open(class RTestServer &, int, class TBuf<256> const &)
+	?Open@RTestModule@@QAEHAAVRTestServer@@AAV?$TBuf@$0BAA@@@@Z @ 15 NONAME ; int RTestModule::Open(class RTestServer &, class TBuf<256> &)
+	?Pause@RTestExecution@@QAEHXZ @ 16 NONAME ; int RTestExecution::Pause(void)
+	?ReadRemoteCmdInfo@RTestExecution@@QAEHAAVTDes8@@W4TStifCommand@@H@Z @ 17 NONAME ; int RTestExecution::ReadRemoteCmdInfo(class TDes8 &, enum TStifCommand, int)
+	?Resume@RTestExecution@@QAEHXZ @ 18 NONAME ; int RTestExecution::Resume(void)
+	?RunTestCase@RTestExecution@@QAEXAAV?$TPckg@VTFullTestResult@@@@AAVTRequestStatus@@@Z @ 19 NONAME ; void RTestExecution::RunTestCase(class TPckg<class TFullTestResult> &, class TRequestStatus &)
+	?StartNewServer@@YAHABV?$TBuf@$0BAA@@@AAV1@@Z @ 20 NONAME ; int StartNewServer(class TBuf<256> const &, class TBuf<256> &)
+	?StartNewServer@@YAHABV?$TBuf@$0BAA@@@AAV1@HVRSemaphore@@@Z @ 21 NONAME ; int StartNewServer(class TBuf<256> const &, class TBuf<256> &, int, class RSemaphore)
+	?Version@RTestServer@@QBE?AVTVersion@@XZ @ 22 NONAME ; class TVersion RTestServer::Version(void) const
+	?GetServerThreadId@RTestServer@@QAEHAAVTThreadId@@@Z @ 23 NONAME ; int RTestServer::GetServerThreadId(class TThreadId &)
+	?NotifyCommand@RTestExecution@@QAEHAAV?$TPckg@W4TCommand@@@@AAV?$TBuf8@$0DC@@@AAVTRequestStatus@@H@Z @ 24 NONAME ; int RTestExecution::NotifyCommand(class TPckg<enum TCommand> &, class TBuf8<50> &, class TRequestStatus &, int)
+	?GetUiEnvProxy@CTestThreadContainer@@QAEPAVCUiEnvProxy@@XZ @ 25 NONAME ; class CUiEnvProxy * CTestThreadContainer::GetUiEnvProxy(void)
+	?NewL@CTestThreadContainerRunner@@SAPAV1@VTThreadId@@PAVCActiveScheduler@@@Z @ 26 NONAME ; class CTestThreadContainerRunner * CTestThreadContainerRunner::NewL(class TThreadId, class CActiveScheduler *)
+	?NewL@CTestThreadContainerRunnerFactory@@SAPAV1@VTThreadId@@PAVCActiveScheduler@@PAVCUiEnvProxy@@@Z @ 27 NONAME ; class CTestThreadContainerRunnerFactory * CTestThreadContainerRunnerFactory::NewL(class TThreadId, class CActiveScheduler *, class CUiEnvProxy *)
+	?StartNewServer@@YAHABV?$TBuf@$0BAA@@@AAV1@HVRSemaphore@@HPAVCTestThreadContainerRunnerFactory@@@Z @ 28 NONAME ; int StartNewServer(class TBuf<256> const &, class TBuf<256> &, int, class RSemaphore, int, class CTestThreadContainerRunnerFactory *)
+	?UITesting@CTestThreadContainer@@QAEHXZ @ 29 NONAME ; int CTestThreadContainer::UITesting(void)
+	?NotifyCommand2@RTestExecution@@QAEHAAV?$TPckg@W4TCommand@@@@AAVTDes8@@AAVTRequestStatus@@H@Z @ 30 NONAME ; int RTestExecution::NotifyCommand2(class TPckg<enum TCommand> &, class TDes8 &, class TRequestStatus &, int)
+	?RunTestCase@RTestExecution@@QAEXAAV?$TPckg@VTFullTestResult@@@@ABVTDesC16@@AAVTRequestStatus@@@Z @ 31 NONAME ; void RTestExecution::RunTestCase(class TPckg<class TFullTestResult> &, class TDesC16 const &, class TRequestStatus &)
+
--- a/stif/TestServer/eabi/StifTestServeru.def	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestServer/eabi/StifTestServeru.def	Mon Jun 14 11:37:33 2010 +0300
@@ -60,4 +60,5 @@
 	_ZN14RTestExecution14NotifyCommand2ER5TPckgI8TCommandER5TDes8R14TRequestStatusi @ 59 NONAME
 	_ZTI11CCommandDef @ 60 NONAME ; #<TI>#
 	_ZTV11CCommandDef @ 61 NONAME ; #<VT>#
+	_ZN14RTestExecution11RunTestCaseER5TPckgI15TFullTestResultERK7TDesC16R14TRequestStatus @ 62 NONAME
 
--- a/stif/TestServer/src/TestExecutionThread.cpp	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestServer/src/TestExecutionThread.cpp	Mon Jun 14 11:37:33 2010 +0300
@@ -272,22 +272,7 @@
         __TRACEI (KInit, (  _L("Loaded test module[%S]"), &moduleName ) );
         }
 
-    // Verify the UID
-    TUid KUidTestModule = TUid::Uid ( 0x101FB3E7 );
-    TUidType requiredUID( KDynamicLibraryUid, KSharedLibraryUid, KUidTestModule );
-
-    TUidType moduleUID = aModule.Type();    
-    if ( moduleUID != requiredUID )
-        {
-        // New instance can't be created
-        RDebug::Print( ( _L("STIF TF: Test module has invalid UID. Aborting loading!") ) );
-        __TRACEI (KError, ( CStifLogger::EError, _L("Test module has invalid UID. Aborting loading!")));
-        tmpBuffer.Format(_L("Module [%S] has invalid UID"), &moduleName);
-        ErrorPrint( 1, tmpBuffer ); 
-        ModuleContainer().OperationErrorResult() = KErrNotSupported;
-        return KErrNotSupported;
-        }
-
+    
     // Get pointer to first exported function
     ModuleContainer().OperationText() = _L("1st EXPORTED function");
     CTestInterfaceFactory libEntry;
@@ -2156,7 +2141,7 @@
 
 -------------------------------------------------------------------------------
 */
-void CTestThreadContainer::IsServerAlive()
+void CTestThreadContainer::IsServerAlive() const
     {
         
     if( iServerThread.ExitType() != EExitPending ) 
@@ -2187,7 +2172,7 @@
 
 -------------------------------------------------------------------------------
 */
-CTestExecution& CTestThreadContainer::TestExecution()
+CTestExecution& CTestThreadContainer::TestExecution() const
     { 
     
     IsServerAlive();
@@ -2199,7 +2184,32 @@
     return *execution;
     
     };
+
+/*
+-------------------------------------------------------------------------------
+
+    Class: CTestThreadContainer
+
+    Method: GetTestCaseArguments
+
+    Description: Get test case arguments
+
+    Parameters: None
     
+    Return Values: test case arguments
+
+    Errors/Exceptions: 
+
+    Status: Proposal
+
+-------------------------------------------------------------------------------
+*/
+const TDesC& CTestThreadContainer::GetTestCaseArguments() const
+    {
+    return TestExecution().GetTestCaseArguments();
+    }
+
+
 /*
 -------------------------------------------------------------------------------
 
--- a/stif/TestServer/src/TestServerClient.cpp	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestServer/src/TestServerClient.cpp	Mon Jun 14 11:37:33 2010 +0300
@@ -120,6 +120,15 @@
     do
         {
         semName.Format(_L("%S%d"), &semaphoreName, x);
+        if (semName.Length() > KMaxKernelName)
+            {
+            // if the cfg file name is larger than maximum length of acceptable length of semaphore .
+            RDebug::Print(_L("Test Module name or Configuration File name is too long."));
+            
+            semName.Close();
+            return KErrBadName;
+            }
+        
         ret = startSemaphore.CreateGlobal(semName, 0);
         RDebug::Print(_L("RTestServer::Connect() Creating global semaphore [%S] with result [%d]"), &semName, ret);
         if(ret != KErrAlreadyExists)
@@ -153,7 +162,7 @@
     // Data to be passed to new process. It will contain module name and synchronization semaphore name separated with space.
     // I.e. it will be: "mymodule startupSemaphore0"
     RBuf data; 
-    ret = data.Create(KMaxName);
+    ret = data.Create(KMaxFileName);
     if(ret != KErrNone)
         {
         RDebug::Print(_L("RTestServer::Connect() Could not create buffer for data to be passed to process [%d]"), ret);
@@ -818,6 +827,36 @@
 
     Class: RTestExecution
 
+    Method: RunTestCase
+
+    Description: Runs a test case
+
+    Parameters: TFullTestResultPckg& aResult  :out: Case result
+                const TDesC& aTestCaseArgs: Test case arguments
+                TRequestStatus& aStatus       :out: Request to be completed
+
+    Return Values: None
+
+    Errors/Exceptions: None
+
+    Status: Approved
+    
+-------------------------------------------------------------------------------
+*/
+EXPORT_C void RTestExecution::RunTestCase( TFullTestResultPckg& aResult,
+                                           const TDesC& aTestCaseArgs,
+                                           TRequestStatus& aStatus 
+                                         )
+    {
+    TIpcArgs args( &aResult, &aTestCaseArgs, TIpcArgs::ENothing );
+    SendReceive( ETestExecutionRunTestCase, args, aStatus );
+    }
+
+/*
+-------------------------------------------------------------------------------
+
+    Class: RTestExecution
+
     Method: NotifyProgress
 
     Description: Notify about test case progress, i.e test case prints.
--- a/stif/TestServer/src/Testexecution.cpp	Tue May 25 18:01:01 2010 +0300
+++ b/stif/TestServer/src/Testexecution.cpp	Mon Jun 14 11:37:33 2010 +0300
@@ -191,7 +191,10 @@
     // Delete name buffer
     delete iConfigNameBuffer;
     iConfigNameBuffer = NULL;
-    
+
+    delete iTestCaseArgs;
+    iTestCaseArgs = NULL;
+        
     iStateEvents.ResetAndDestroy();
     iStateEvents.Close();
 
@@ -338,15 +341,51 @@
 
     __TRACE ( KInit, ( _L( "CTestExecution::RunTestCase in" ) ) );
 
+    TInt ret = KErrNone;
+    
     // Store message to be completed when case is finished
     iTestExeMessage = aMessage;
 
     iFullResult.iStartTime.HomeTime();
 
+    delete iTestCaseArgs;
+    iTestCaseArgs = NULL;
+    
+    TInt testCaseArgsLength = iTestExeMessage.GetDesLength( 1 );
+    if ( ( testCaseArgsLength != KErrArgument ) && ( testCaseArgsLength != KErrBadDescriptor ) )
+        {
+        iTestCaseArgs = HBufC::New( testCaseArgsLength );
+        if ( iTestCaseArgs == NULL )
+            {
+            _LIT(KRunError,"Can't allocate memory for test case arguments");
+            __TRACE ( KError, ( CStifLogger::ERed, KRunError() ) );
+            CompleteTestExecution( KErrNone,
+                                   TFullTestResult::ECaseException,
+                                   KErrNoMemory,
+                                   KErrGeneral,
+                                   KRunError );
+            return KErrNone;        
+            }
+            
+        TPtr testCaseArgsPtr( iTestCaseArgs->Des() );
+        TRAP( ret, iTestExeMessage.Read( 1, testCaseArgsPtr ) );
+        if ( ret != KErrNone )
+            {
+            _LIT(KRunError,"Can't read test case arguments");
+            __TRACE ( KError, ( CStifLogger::ERed, KRunError() ) );
+            CompleteTestExecution( KErrNone,
+                                   TFullTestResult::ECaseException,
+                                   ret,
+                                   KErrGeneral,
+                                   KRunError );
+            return KErrNone;
+            }
+        }
+
     // Get a test module, which executes the test case.
     // The test module will be freed either when the test case
     // completes, or the test case is aborted.
-    TInt ret = iModuleSession->GetTestModule( iModuleContainer, iConfig );
+    ret = iModuleSession->GetTestModule( iModuleContainer, iConfig );
     if ( ret != KErrNone || iModuleContainer == NULL )
         {
         _LIT(KRunError,"Can't get test module");
@@ -2117,6 +2156,34 @@
 
     Class: CTestExecution
 
+    Method: GetTestCaseArguments
+
+    Description: Get test case arguments
+
+    Parameters: None
+
+    Return Values: Test case arguments
+
+    Errors/Exceptions: None
+
+    Status: Proposal
+
+-------------------------------------------------------------------------------
+*/
+const TDesC& CTestExecution::GetTestCaseArguments() const
+    {
+    if ( iTestCaseArgs != NULL )
+        {
+        return *iTestCaseArgs;
+        }
+    return KNullDesC;
+    }
+
+/*
+-------------------------------------------------------------------------------
+
+    Class: CTestExecution
+
     Method: CancelTestRequest
 
     Description: Cancel test execution request.
--- a/stif/group/ReleaseNote.txt	Tue May 25 18:01:01 2010 +0300
+++ b/stif/group/ReleaseNote.txt	Mon Jun 14 11:37:33 2010 +0300
@@ -1,5 +1,5 @@
 ========================================================================
-RELEASE NOTE FOR STIF - STIF_201020 (7.3.33)
+RELEASE NOTE FOR STIF - STIF_201022 (7.3.34)
 SUPPORTING SERIES 60 3.0 ->
 ========================================================================
 
--- a/stif/inc/TestServerModuleIf.h	Tue May 25 18:01:01 2010 +0300
+++ b/stif/inc/TestServerModuleIf.h	Mon Jun 14 11:37:33 2010 +0300
@@ -415,6 +415,11 @@
         */
         TInt CancelCommandRequest();
 
+        /**
+         * Get test case arguments.
+         */
+        const TDesC& GetTestCaseArguments() const;
+
     public: // Functions that are called from test thread
 
         /**
@@ -470,6 +475,7 @@
         */
         TInt TestThreadMutexHandle() { return iTestThreadMutex.Handle(); };
 
+        const TDesC& GetConfigFileName() const { return iConfig; }
     public: // Functions from base classes
         // None
 
@@ -573,6 +579,8 @@
         TInt iCaseNumber;                        // Case to be executed
         TPtr iConfig;                            // Configuration file name
         HBufC* iConfigNameBuffer;                // HBuffer for configuration file;
+        HBufC* iTestCaseArgs;                    // HBuffer for test case arguments
+		
         RMessage2 iTestExeMessage;               // Test execution message
         TTestState iThreadState;                 // Thread state
 
--- a/stif/inc/TestThreadContainer.h	Tue May 25 18:01:01 2010 +0300
+++ b/stif/inc/TestThreadContainer.h	Mon Jun 14 11:37:33 2010 +0300
@@ -222,9 +222,15 @@
         virtual void DoNotifyCommand(TCommand aCommand, const TDesC8& aParamsPckg);
 
         /**
+         * Get test case execution arguments
+         */
+        virtual const TDesC& GetTestCaseArguments() const;        
+        
+        
+        /**
         * Obtain title of currently running test case.
         */
-        virtual void GetTestCaseTitleL(TDes& aTestCaseTitle);
+        virtual void GetTestCaseTitleL(TDes& aTestCaseTitle);        
 
         /**
          * Sets thread logger.
@@ -308,7 +314,7 @@
         /**
         * Check that server is alive.
         */ 
-        void IsServerAlive();
+        void IsServerAlive() const;
 
         /**
         * Exception handler
@@ -360,13 +366,17 @@
         /** 
         * C++ default constructor.
         */
-        CTestThreadContainer( CTestModuleContainer* aModuleContainer );
-                              
+        CTestThreadContainer( CTestModuleContainer* aModuleContainer );                              
+
+        /**
+         * Get module container.
+         */
+        CTestModuleContainer& ModuleContainer();        
+
         /**
         * Handles to parent.
         */
-        CTestExecution& TestExecution();
-        CTestModuleContainer& ModuleContainer();
+        CTestExecution& TestExecution() const;
         
     public:     // Data
         
--- a/stif/inc/version.h	Tue May 25 18:01:01 2010 +0300
+++ b/stif/inc/version.h	Mon Jun 14 11:37:33 2010 +0300
@@ -20,9 +20,9 @@
 
 #define STIF_MAJOR_VERSION 7
 #define STIF_MINOR_VERSION 3
-#define STIF_BUILD_VERSION 33
+#define STIF_BUILD_VERSION 34
 
-#define STIF_REL_DATE "18th May 2010"
+#define STIF_REL_DATE "1st June 2010"
 
 #define TO_UNICODE(text) _L(text) 
 
Binary file stif/sis/Stif_31.sis has changed
--- a/stif/stif_plat/inc/StifTestModule.h	Tue May 25 18:01:01 2010 +0300
+++ b/stif/stif_plat/inc/StifTestModule.h	Mon Jun 14 11:37:33 2010 +0300
@@ -787,6 +787,11 @@
         TInt Command(TCommand aCommand, const TDesC8& aParamsPckg);
 
         /**
+         * Get test case execution arguments
+         */
+        IMPORT_C const TDesC& GetTestCaseArguments() const;        
+
+        /**
         * GetTestCaseTitleL function is used to obtain test case title.
         */
         IMPORT_C void GetTestCaseTitleL(TDes& aTestCaseTitle);
--- a/stif/stif_plat/inc/TestEngineClient.h	Tue May 25 18:01:01 2010 +0300
+++ b/stif/stif_plat/inc/TestEngineClient.h	Mon Jun 14 11:37:33 2010 +0300
@@ -376,6 +376,19 @@
                                     TRequestStatus& aStatus );
 
         /**
+        * RunTestCase is asynchronous method and it is completed when the test
+        * case is completed. Result of the test case is returned to 
+        * aTestResult. The aTestResult is TFullTestResultPckg that is a
+        * packaged TFullTestResult.
+        * The aStatus will have the completion result of this function. If the
+        * test case could be run (despite of succesfully or not) the KErrNone 
+        * is returned to aStatus.
+        */
+        IMPORT_C void RunTestCase( TFullTestResultPckg& aTestResult,
+                                   const TDesC& aTestCaseArgs,
+                                   TRequestStatus& aStatus );        
+
+        /**
         * Pause suspends the execution of the test case. The subsession where
         * the test case is run is suspended and thus the test case execution is
         * suspended. Test case execution can be later resumed by calling 
--- a/stif/stif_plat/inc/TestServerClient.h	Tue May 25 18:01:01 2010 +0300
+++ b/stif/stif_plat/inc/TestServerClient.h	Mon Jun 14 11:37:33 2010 +0300
@@ -351,6 +351,16 @@
                                    TRequestStatus& aStatus );
 
         /**
+       * RunTestCase is used to execute the test case previously initialized by
+       * Open method. RunTestCase is asynchronous method and it is completed
+       * when the test case is completed.
+       * The result of the test case is returned to aStatus.
+       */
+       IMPORT_C void RunTestCase( TFullTestResultPckg& aResult,
+                                  const TDesC& aTestCaseArgs,
+                                  TRequestStatus& aStatus );
+
+        /**
         * Pause suspends the execution of the test case. The subsession where
         * the test case is run will be suspended and thus the test case
         * execution is suspended. The test case execution can be later resumed