--- a/stif/ATSInterface/src/ATSInterface.cpp Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/ATSInterface/src/ATSInterface.cpp Tue Apr 27 18:14:33 2010 +0300
@@ -561,12 +561,12 @@
_LIT( KEngineIniFile, "-engineini" );
_LIT( KModuleIniFile, "-moduleini" );
- const TInt length = User().CommandLineLength();
+ const TInt length = User::CommandLineLength();
HBufC* cmdLine = HBufC::NewLC( length );
TPtr ptr = cmdLine->Des();
- User().CommandLine( ptr );
+ User::CommandLine( ptr );
TBool moduleFound( EFalse );
TLex lex( ptr );
--- a/stif/StifTFwIf/src/UIEngineContainer.cpp Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/StifTFwIf/src/UIEngineContainer.cpp Tue Apr 27 18:14:33 2010 +0300
@@ -480,7 +480,6 @@
{
// Call TestExecuted of CUIEngine interface
iUIEngine->TestExecuted(this, iRunner->FullResult() );
- iState = EFinished;
}
}
--- a/stif/TestCombiner/inc/TestCombiner.h Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/TestCombiner/inc/TestCombiner.h Tue Apr 27 18:14:33 2010 +0300
@@ -655,6 +655,10 @@
RTimer iPauseTimer;
TName iPausedTestCase;
TInt iPauseTime;
+
+ // Pause combiner timer
+ RTimer iPauseCombTimer;
+ TInt iPauseCombRemainingTime;
// Temporary line buffer
HBufC* iLine;
--- a/stif/TestCombiner/src/TestCombiner.cpp Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/TestCombiner/src/TestCombiner.cpp Tue Apr 27 18:14:33 2010 +0300
@@ -2445,8 +2445,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 +2528,8 @@
iLine = 0;
iPauseTimer.Close();
+
+ iPauseCombTimer.Close();
}
@@ -2550,8 +2565,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 +2736,8 @@
__TRACE( KMessage, (_L("CTestRunner::DoCancel")));
iTestCombiner->TestModuleIf().Printf( KPrintPriLow, _L("Runner"), _L("DoCancel"));
+ iPauseCombTimer.Cancel();
+
switch( iState )
{
case ERunnerWaitTimeout:
@@ -3397,7 +3440,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 +3459,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/TestEngine/inc/TestEngine.h Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/TestEngine/inc/TestEngine.h Tue Apr 27 18:14:33 2010 +0300
@@ -59,20 +59,25 @@
};
// Struct to Test report settings
-class TTestReportSettings
+NONSHARABLE_CLASS(CTestReportSettings)
+ :public CBase
{
public:
+
+ /**
+ * NewL is two-phased constructor.
+ */
+ static CTestReportSettings* NewL();
- TTestReportSettings(){ iCreateTestReport = ETrue;
- iPath = NULL;
- iName = NULL;
- iFormat = CStifLogger::ETxt;
- iOutput = CStifLogger::EFile;
- iOverwrite = ETrue;
- iXML = EFalse;
- }
- ~TTestReportSettings(){ delete iPath; delete iName; }
+ ~CTestReportSettings();
+
+ private:
+ CTestReportSettings();
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
public:
@@ -231,7 +236,7 @@
public: // Data
// Test report settings
- TTestReportSettings iTestReportSettings;
+ CTestReportSettings* iTestReportSettings;
// Logger overwrite settings
TLoggerSettings iLoggerSettings;
--- a/stif/TestEngine/inc/TestReport.h Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/TestEngine/inc/TestReport.h Tue Apr 27 18:14:33 2010 +0300
@@ -156,7 +156,7 @@
/**
* Two-phased constructor.
*/
- static CTestReport* NewL( TTestReportSettings& aTestReportSettings,
+ static CTestReport* NewL( CTestReportSettings& aTestReportSettings,
const TTestReportMode aReportMode );
/**
@@ -199,7 +199,7 @@
/**
* By default Symbian OS constructor is private.
*/
- void ConstructL( TTestReportSettings& aTestReportSettings );
+ void ConstructL( CTestReportSettings& aTestReportSettings );
/**
* Default C++ constructor.
--- a/stif/TestEngine/src/TestCaseController.cpp Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/TestEngine/src/TestCaseController.cpp Tue Apr 27 18:14:33 2010 +0300
@@ -2567,18 +2567,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/TestEngine.cpp Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/TestEngine/src/TestEngine.cpp Tue Apr 27 18:14:33 2010 +0300
@@ -411,6 +411,8 @@
*/
void CTestEngineServer::ConstructL()
{
+ // Create report setting
+ iTestReportSettings = CTestReportSettings::NewL();
// Create container
iContainerIndex = CObjectConIx::NewL();
@@ -505,6 +507,8 @@
__TRACE(KAlways, ( _L( "---------------- Log Ended ----------------" ) ) );
delete iLogger;
+ delete iTestReportSettings;
+ iTestReportSettings = NULL;
}
/*
@@ -881,6 +885,7 @@
iTestCases = NULL;
}
+ iTestCaseArray.Close();
delete iTestEngineSubSessions;
iTestEngineSubSessions = NULL;
@@ -1234,14 +1239,18 @@
void CTestEngine::InitTestReportAndLoggerVarL()
{
// Test report settings initialization
- iTestEngineServer->iTestReportSettings.iCreateTestReport = ETrue;
+ iTestEngineServer->iTestReportSettings->iCreateTestReport = ETrue;
_LIT( path, "C:\\LOGS\\TestFramework\\");
_LIT( name, "TestReport");
- iTestEngineServer->iTestReportSettings.iPath = path().AllocL();
- iTestEngineServer->iTestReportSettings.iName = name().AllocL();
- iTestEngineServer->iTestReportSettings.iFormat = CStifLogger::ETxt;
- iTestEngineServer->iTestReportSettings.iOutput = CStifLogger::EFile;
- iTestEngineServer->iTestReportSettings.iOverwrite = ETrue;
+ delete iTestEngineServer->iTestReportSettings->iPath;
+ iTestEngineServer->iTestReportSettings->iPath = NULL;
+ iTestEngineServer->iTestReportSettings->iPath = path().AllocL();
+ delete iTestEngineServer->iTestReportSettings->iName;
+ iTestEngineServer->iTestReportSettings->iName = NULL;
+ iTestEngineServer->iTestReportSettings->iName = name().AllocL();
+ iTestEngineServer->iTestReportSettings->iFormat = CStifLogger::ETxt;
+ iTestEngineServer->iTestReportSettings->iOutput = CStifLogger::EFile;
+ iTestEngineServer->iTestReportSettings->iOverwrite = ETrue;
// Initializations to indicator is setting in use
iTestEngineServer->iLoggerSettings.iIsDefined.iCreateLogDir = EFalse;
@@ -1370,10 +1379,10 @@
Logger()->WriteDelimiter();
// Create Test Reporter if allowed
- if ( iTestEngineServer->iTestReportSettings.iCreateTestReport )
+ if ( iTestEngineServer->iTestReportSettings->iCreateTestReport )
{
TRAPD(err, iTestReport =
- CTestReport::NewL( iTestEngineServer->iTestReportSettings,
+ CTestReport::NewL( *(iTestEngineServer->iTestReportSettings),
( CTestReport::TTestReportMode ) iReportMode ));
if(err!=KErrNone)
{
@@ -1476,7 +1485,7 @@
if ( get_ret == KErrNone )
{
__TRACE( KInit,( _L( "Test report creation indicator: %d"), createTestReport ) );
- iTestEngineServer->iTestReportSettings.iCreateTestReport = createTestReport;
+ iTestEngineServer->iTestReportSettings->iCreateTestReport = createTestReport;
}
else
{
@@ -1484,7 +1493,7 @@
}
// Get Test report path settings
- if ( iTestEngineServer->iTestReportSettings.iCreateTestReport )
+ if ( iTestEngineServer->iTestReportSettings->iCreateTestReport )
{
__TRACE( KInit,( _L( "Parsing Test report path" ) ) );
TPtrC path;
@@ -1494,9 +1503,9 @@
{
__TRACE( KInit,( _L( "Test report path: %S"), &path ) );
// Delete old one before setting new one
- delete iTestEngineServer->iTestReportSettings.iPath;
- iTestEngineServer->iTestReportSettings.iPath = NULL;
- iTestEngineServer->iTestReportSettings.iPath = path.AllocL();
+ delete iTestEngineServer->iTestReportSettings->iPath;
+ iTestEngineServer->iTestReportSettings->iPath = NULL;
+ iTestEngineServer->iTestReportSettings->iPath = path.AllocL();
}
else
{
@@ -1505,7 +1514,7 @@
}
// Get Test report name settings
- if ( iTestEngineServer->iTestReportSettings.iCreateTestReport )
+ if ( iTestEngineServer->iTestReportSettings->iCreateTestReport )
{
__TRACE( KInit,( _L( "Parsing Test report filename" ) ) );
TPtrC name;
@@ -1515,9 +1524,9 @@
{
__TRACE( KInit,( _L( "Test report filename: %S"), &name ) );
// Delete old one before setting new one
- delete iTestEngineServer->iTestReportSettings.iName;
- iTestEngineServer->iTestReportSettings.iName = NULL;
- iTestEngineServer->iTestReportSettings.iName = name.AllocL();
+ delete iTestEngineServer->iTestReportSettings->iName;
+ iTestEngineServer->iTestReportSettings->iName = NULL;
+ iTestEngineServer->iTestReportSettings->iName = name.AllocL();
}
else
{
@@ -1526,7 +1535,7 @@
}
// Get Test report format settings
- if ( iTestEngineServer->iTestReportSettings.iCreateTestReport )
+ if ( iTestEngineServer->iTestReportSettings->iCreateTestReport )
{
__TRACE( KInit,( _L( "Parsing Test report format" ) ) );
CStifLogger::TLoggerType type;
@@ -1536,8 +1545,8 @@
if ( get_ret == KErrNone )
{
__TRACE( KInit,( _L( "Test report format: %d, xml: %d"), type, xml ) );
- iTestEngineServer->iTestReportSettings.iFormat = type;
- iTestEngineServer->iTestReportSettings.iXML = xml;
+ iTestEngineServer->iTestReportSettings->iFormat = type;
+ iTestEngineServer->iTestReportSettings->iXML = xml;
}
else
{
@@ -1546,7 +1555,7 @@
}
// Get Test report output settings
- if ( iTestEngineServer->iTestReportSettings.iCreateTestReport )
+ if ( iTestEngineServer->iTestReportSettings->iCreateTestReport )
{
__TRACE( KInit,( _L( "Parsing Test report output" ) ) );
CStifLogger::TOutput output;
@@ -1555,7 +1564,7 @@
if ( get_ret == KErrNone )
{
__TRACE( KInit,( _L( "Test report output: %d"), output ) );
- iTestEngineServer->iTestReportSettings.iOutput = output;
+ iTestEngineServer->iTestReportSettings->iOutput = output;
}
else
{
@@ -1564,7 +1573,7 @@
}
// Get Test report file creation mode (overwrite settings)
- if ( iTestEngineServer->iTestReportSettings.iCreateTestReport )
+ if ( iTestEngineServer->iTestReportSettings->iCreateTestReport )
{
__TRACE( KInit,( _L( "Parsing Test report file writing mode" ) ) );
TBool overwrite;
@@ -1573,7 +1582,7 @@
if ( get_ret == KErrNone )
{
__TRACE( KInit,( _L( "Test report file creation mode: %d"), overwrite ) );
- iTestEngineServer->iTestReportSettings.iOverwrite = overwrite;
+ iTestEngineServer->iTestReportSettings->iOverwrite = overwrite;
}
else
{
@@ -5570,6 +5579,74 @@
DESCRIPTION
+ Default constructor
+
+-------------------------------------------------------------------------------
+*/
+CTestReportSettings::CTestReportSettings()
+ {
+ iCreateTestReport = ETrue;
+ iPath = NULL;
+ iName = NULL;
+ iFormat = CStifLogger::ETxt;
+ iOutput = CStifLogger::EFile;
+ iOverwrite = ETrue;
+ iXML = EFalse;
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ DESCRIPTION
+
+ Two-phased constructor.
+
+-------------------------------------------------------------------------------
+*/
+CTestReportSettings* CTestReportSettings::NewL()
+ {
+ CTestReportSettings* self = new ( ELeave ) CTestReportSettings();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ DESCRIPTION
+
+ Symbian OS second phase constructor
+
+-------------------------------------------------------------------------------
+*/
+void CTestReportSettings::ConstructL()
+ {
+
+ }
+/*
+-------------------------------------------------------------------------------
+
+ DESCRIPTION
+
+ Destructor
+
+-------------------------------------------------------------------------------
+*/
+CTestReportSettings::~CTestReportSettings()
+ {
+ delete iPath;
+ iPath = NULL;
+ delete iName;
+ iName = NULL;
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ DESCRIPTION
+
This module contains implementation of CRebootParams class member functions.
-------------------------------------------------------------------------------
--- a/stif/TestEngine/src/TestModuleController.cpp Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/TestEngine/src/TestModuleController.cpp Tue Apr 27 18:14:33 2010 +0300
@@ -393,10 +393,11 @@
iTestCaseArray.Close();
// Release the config file array
+ iConfigFiles.ResetAndDestroy();
iConfigFiles.Close();
// Release the config file array
- iFailedEnumerateConfig.Reset();
+ iFailedEnumerateConfig.ResetAndDestroy();
iFailedEnumerateConfig.Close();
// Release the children array
--- a/stif/TestEngine/src/TestReport.cpp Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/TestEngine/src/TestReport.cpp Tue Apr 27 18:14:33 2010 +0300
@@ -194,7 +194,7 @@
-------------------------------------------------------------------------------
*/
-void CTestReport::ConstructL( TTestReportSettings& aTestReportSettings )
+void CTestReport::ConstructL( CTestReportSettings& aTestReportSettings )
{
// Create summary for all test cases
_LIT( KName, "All test cases" );
@@ -307,7 +307,7 @@
-------------------------------------------------------------------------------
*/
-CTestReport* CTestReport::NewL( TTestReportSettings& aTestReportSettings,
+CTestReport* CTestReport::NewL( CTestReportSettings& aTestReportSettings,
const TTestReportMode aReportMode )
{
CTestReport* self = new ( ELeave ) CTestReport( aReportMode );
@@ -339,6 +339,9 @@
*/
CTestReport::~CTestReport()
{
+ iTestModulesVersionsInfo.ResetAndDestroy();
+ iTestModulesVersionsInfo.Close();
+
// Reset and destroy arrays
iTestSummaries.ResetAndDestroy();
delete iTotalSummary;
--- a/stif/TestInterface/src/TestInterface.cpp Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/TestInterface/src/TestInterface.cpp Tue Apr 27 18:14:33 2010 +0300
@@ -418,7 +418,7 @@
//__UHEAP_MARK;
// Get module name from command line
- const TInt length = User().CommandLineLength();
+ const TInt length = User::CommandLineLength();
HBufC* cmdLine = HBufC::New( length );
if ( cmdLine == NULL )
@@ -428,7 +428,7 @@
}
TPtr moduleName = cmdLine->Des();
- User().CommandLine( moduleName );
+ User::CommandLine( moduleName );
RDebug::Print(_L("StartSession() Received data [%S]"), &moduleName);
--- a/stif/TestServer/inc/TestServer.h Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/TestServer/inc/TestServer.h Tue Apr 27 18:14:33 2010 +0300
@@ -703,7 +703,64 @@
};
+// DESCRIPTION
+// CTestCasesList is a class, which contains list of test cases assosiated with
+// specified config file.
+NONSHARABLE_CLASS( CTestCasesList ): public CBase
+ {
+public:
+ /**
+ * NewL is first phase of two-phased constructor.
+ */
+ static CTestCasesList* NewL( const TDesC& aConfigFileName );
+public:
+ /**
+ * Destructor of CTestServer.
+ */
+ ~CTestCasesList();
+ /**
+ * Appends test case.
+ */
+ void AppendTestCaseL( const TDesC& aTestCaseTitle );
+
+ /**
+ * Returns specified test case title.
+ */
+ const TDesC& GetTestCaseTitleL( TInt aIndex ) const;
+
+ /**
+ * Returns config file name.
+ */
+ const TDesC& GetConfigFileName() const;
+
+ /**
+ * Returns count of test cases.
+ */
+ TInt Count() const;
+
+ /**
+ * Resets list of test cases.
+ */
+ void ResetAndDestroy();
+private:
+ /**
+ * C++ default constructor.
+ */
+ CTestCasesList();
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL( const TDesC& aConfigFileName );
+private:
+ // Config file name
+ HBufC* iConfigFileName;
+ // List of test cases
+ RPointerArray<HBufC> iTestCases;
+ };
+
+
// DESCRIPTION
// CTestModule is a session class.
// Session for the CTestServer server, to a single client-side session
@@ -844,7 +901,7 @@
/**
* Get title of currently running test case
*/
- void GetTestCaseTitleL(TInt aTestCaseNumber, TDes& aTestCaseTitle);
+ void GetTestCaseTitleL(TInt aTestCaseNumber, const TDesC& aConfigFile, TDes& aTestCaseTitle);
/**
* Get pointer to test server
@@ -901,7 +958,7 @@
TBool iErrorMessageAvailable; // Error message available?
- RPointerArray<TDesC> iTestCaseTitles; //Test case titles
+ RPointerArray<CTestCasesList> iTestCaseTitlesMap; //Test case titles
public: // Friend classes
// None
--- a/stif/TestServer/src/TestExecutionThread.cpp Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/TestServer/src/TestExecutionThread.cpp Tue Apr 27 18:14: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;
--- a/stif/TestServer/src/TestModuleContainer.cpp Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/TestServer/src/TestModuleContainer.cpp Tue Apr 27 18:14:33 2010 +0300
@@ -1747,19 +1747,7 @@
__TRACE( KInit, ( _L("Loaded test module[%S]"), &dllName ) );
}
- // Verify the UID
- TUid KUidTestModule = TUid::Uid ( 0x101FB3E7 );
- TUidType requiredUID( KDynamicLibraryUid, KSharedLibraryUid, KUidTestModule );
-
- TUidType moduleUID = testModule.Type();
- if ( moduleUID != requiredUID )
- {
- // New instance can't be created
- RDebug::Print( ( _L("STIF TF: Test module has invalid UID. Aborting loading!") ) );
- __TRACE ( KError, ( CStifLogger::EError, _L("Test module has invalid UID. Aborting loading!" ) ) );
- testModule.Close();
- return KErrNotSupported;
- }
+
CTestInterfaceFactoryTestModule libEntry = NULL;
@@ -1973,7 +1961,10 @@
*/
void CTestModuleContainer::GetTestCaseTitleL(TDes& aTestCaseTitle)
{
- iCTestModule->GetTestCaseTitleL(iOperationIntBuffer, aTestCaseTitle); //currently run test case stored in the iOperationIntBuffer variable
+ //currently run test case stored in the iOperationIntBuffer variable
+ iCTestModule->GetTestCaseTitleL( iOperationIntBuffer,
+ iCTestExecution->GetConfigFileName(),
+ aTestCaseTitle);
}
--- a/stif/TestServer/src/Testserversession.cpp Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/TestServer/src/Testserversession.cpp Tue Apr 27 18:14:33 2010 +0300
@@ -55,6 +55,234 @@
// ================= MEMBER FUNCTIONS =========================================
+/*
+-------------------------------------------------------------------------------
+
+ Class: CTestCasesList
+
+ Method: NewL
+
+ Description: Create new test cases list
+
+ Parameters: const TDesC& aConfigFileName :in: Config file name
+
+ Return Values: CTestCasesList* Pointer to new test cases list
+
+ Errors/Exceptions: Leaves if memory allocation fails or ConstructL leaves.
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+CTestCasesList* CTestCasesList::NewL( const TDesC& aConfigFileName )
+ {
+ CTestCasesList* self = new(ELeave)CTestCasesList;
+ CleanupStack::PushL( self );
+ self->ConstructL( aConfigFileName );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: CTestCasesList
+
+ Method: ~CTestCasesList
+
+ Description: Destructor
+
+ Parameters:
+
+ Return Values:
+
+ Errors/Exceptions:
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+CTestCasesList::~CTestCasesList()
+ {
+ delete iConfigFileName;
+ iConfigFileName = NULL;
+ iTestCases.ResetAndDestroy();
+ iTestCases.Close();
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: CTestCasesList
+
+ Method: AppendTestCaseL
+
+ Description: Appends test case.
+
+ Parameters: const TDesC& aTestCaseTitle in: Test case title
+
+ Return Values:
+
+ Errors/Exceptions: Leaves if memory allocation fails
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+void CTestCasesList::AppendTestCaseL( const TDesC& aTestCaseTitle )
+ {
+ HBufC* testCaseTitle = aTestCaseTitle.AllocL();
+ CleanupStack::PushL( testCaseTitle );
+ iTestCases.AppendL( testCaseTitle );
+ CleanupStack::Pop( testCaseTitle );
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: CTestCasesList
+
+ Method: GetTestCaseTitleL
+
+ Description: Returns specified test case title
+
+ Parameters: TInt aIndex: in: Requested test case index.
+
+ Return Values: Test case title.
+
+ Errors/Exceptions: Leaves if test case index is invalid
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+const TDesC& CTestCasesList::GetTestCaseTitleL( TInt aIndex ) const
+ {
+ if ( ( aIndex < 0 ) || ( aIndex >= iTestCases.Count() ) )
+ {
+ User::Leave( KErrNotFound );
+ }
+ return *iTestCases[ aIndex ];
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: CTestCasesList
+
+ Method: GetConfigFileName
+
+ Description: Returns config file name
+
+ Parameters:
+
+ Return Values: Config file name.
+
+ Errors/Exceptions:
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+const TDesC& CTestCasesList::GetConfigFileName() const
+ {
+ return *iConfigFileName;
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: CTestCasesList
+
+ Method: Count
+
+ Description: Returns count of test cases.
+
+ Parameters:
+
+ Return Values: Test cases count.
+
+ Errors/Exceptions:
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+TInt CTestCasesList::Count() const
+ {
+ return iTestCases.Count();
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: CTestCasesList
+
+ Method: ResetAndDestroy
+
+ Description: Resets list of test cases.
+
+ Parameters:
+
+ Return Values:
+
+ Errors/Exceptions:
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+void CTestCasesList::ResetAndDestroy()
+ {
+ iTestCases.ResetAndDestroy();
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: CTestCasesList
+
+ Method: ~CTestCasesList
+
+ Description: Destructor
+
+ Parameters:
+
+ Return Values:
+
+ Errors/Exceptions:
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+CTestCasesList::CTestCasesList()
+ {
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: CTestCasesList
+
+ Method: ~CTestCasesList
+
+ Description: Destructor
+
+ Parameters:
+
+ Return Values:
+
+ Errors/Exceptions:
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+void CTestCasesList::ConstructL( const TDesC& aConfigFileName )
+ {
+ iConfigFileName = aConfigFileName.AllocL();
+ }
/*
-------------------------------------------------------------------------------
@@ -188,8 +416,8 @@
iIniBuffer = NULL;
// Delete array of test case titles
- iTestCaseTitles.ResetAndDestroy();
- iTestCaseTitles.Close();
+ iTestCaseTitlesMap.ResetAndDestroy();
+ iTestCaseTitlesMap.Close();
}
/*
@@ -690,18 +918,34 @@
User::Leave( KErrGeneral );
}
+ CTestCasesList* testCasesList = NULL;
+ for ( TInt i = 0; i < iTestCaseTitlesMap.Count(); i++ )
+ {
+ if ( iTestCaseTitlesMap[ i ]->GetConfigFileName() == config )
+ {
+ testCasesList = iTestCaseTitlesMap[ i ];
+ break;
+ }
+ }
+ if ( testCasesList == NULL )
+ {
+ testCasesList = CTestCasesList::NewL( config );
+ CleanupStack::PushL( testCasesList );
+ iTestCaseTitlesMap.AppendL( testCasesList );
+ CleanupStack::Pop( testCasesList );
+ }
+
// Store titles (for further use, i.e. when asked for title from the interface via CTestModuleIf->CTestThreadContainer->CTestModuleContainer)
- iTestCaseTitles.ResetAndDestroy();
+ testCasesList->ResetAndDestroy();
TInt i;
for(i = 0; i < testCases->Count(); i++)
{
//Handle situation when test cases are enumerated not as 0-based (testscripter, ...)
if(i == 0 && (*testCases)[i]->iCaseNumber > 0)
{
- iTestCaseTitles.Append(NULL);
+ testCasesList->AppendTestCaseL( KNullDesC );
}
- HBufC* title = (*testCases)[i]->iTitle.AllocL();
- iTestCaseTitles.Append(title);
+ testCasesList->AppendTestCaseL( (*testCases)[i]->iTitle );
}
TPckgBuf<TInt> countPckg( testCases->Count() );
@@ -1380,10 +1624,25 @@
-------------------------------------------------------------------------------
*/
-void CTestModule::GetTestCaseTitleL(TInt aTestCaseNumber, TDes& aTestCaseTitle)
+void CTestModule::GetTestCaseTitleL(TInt aTestCaseNumber, const TDesC& aConfigFile,TDes& aTestCaseTitle)
{
- RDebug::Print(_L("Trying to get test case title from module. Index=%d, count=%d"), aTestCaseNumber, iTestCaseTitles.Count());
- aTestCaseTitle.Copy(*(iTestCaseTitles[aTestCaseNumber]));
+ CTestCasesList* testCasesList = NULL;
+ for ( TInt i = 0; i < iTestCaseTitlesMap.Count(); i++ )
+ {
+ if ( iTestCaseTitlesMap[ i ]->GetConfigFileName() == aConfigFile )
+ {
+ testCasesList = iTestCaseTitlesMap[ i ];
+ break;
+ }
+ }
+ if ( testCasesList == NULL )
+ {
+ User::Leave( KErrNotFound );
+ }
+
+ RDebug::Print(_L("Trying to get test case title from module. Index=%d, count=%d"), aTestCaseNumber, testCasesList->Count() );
+
+ aTestCaseTitle.Copy( testCasesList->GetTestCaseTitleL( aTestCaseNumber ) );
}
--- a/stif/TestServerStarter/src/TestServerStarter.cpp Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/TestServerStarter/src/TestServerStarter.cpp Tue Apr 27 18:14:33 2010 +0300
@@ -53,7 +53,7 @@
RDebug::Print(_L("STIF: New process starting"));
// Get module name from command line
- const TInt length = User().CommandLineLength();
+ const TInt length = User::CommandLineLength();
HBufC* cmdLine = HBufC::New( length );
@@ -64,7 +64,7 @@
TPtr moduleName = cmdLine->Des();
- User().CommandLine( moduleName );
+ User::CommandLine( moduleName );
RDebug::Print(_L("STIF: Received data [%S]"), &moduleName);
--- a/stif/group/ReleaseNote.txt Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/group/ReleaseNote.txt Tue Apr 27 18:14:33 2010 +0300
@@ -1,5 +1,5 @@
========================================================================
-RELEASE NOTE FOR STIF - STIF_201012 (7.3.29)
+RELEASE NOTE FOR STIF - STIF_201014 (7.3.30)
SUPPORTING SERIES 60 3.0 ->
========================================================================
--- a/stif/inc/TestServerModuleIf.h Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/inc/TestServerModuleIf.h Tue Apr 27 18:14:33 2010 +0300
@@ -470,6 +470,7 @@
*/
TInt TestThreadMutexHandle() { return iTestThreadMutex.Handle(); };
+ const TDesC& GetConfigFileName() const { return iConfig; }
public: // Functions from base classes
// None
--- a/stif/inc/version.h Wed Apr 14 17:35:04 2010 +0300
+++ b/stif/inc/version.h Tue Apr 27 18:14:33 2010 +0300
@@ -20,9 +20,9 @@
#define STIF_MAJOR_VERSION 7
#define STIF_MINOR_VERSION 3
-#define STIF_BUILD_VERSION 29
+#define STIF_BUILD_VERSION 30
-#define STIF_REL_DATE "23th Mar 2010"
+#define STIF_REL_DATE "06th Apr 2010"
#define TO_UNICODE(text) _L(text)
Binary file stif/sis/Stif_31.sis has changed