installationservices/swtransactionservices/test/source/tststestsuitestep.cpp
branchRCL_3
changeset 26 8b7f4e561641
parent 25 7333d7932ef7
child 27 e8965914fac7
equal deleted inserted replaced
25:7333d7932ef7 26:8b7f4e561641
     1 /*
       
     2 * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 * tststestsuitestep.h
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 /**
       
    21  @file
       
    22  @test
       
    23  @internalComponent
       
    24 */
       
    25 #include "tststestsuitestep.h"
       
    26 #include "tststestsuiteserver.h"
       
    27 #include <s32file.h>
       
    28 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
       
    29 #include "stsrecovery.h"
       
    30 #endif //SYMBIAN_ENABLE_SPLIT_HEADERS
       
    31 
       
    32 
       
    33 _LIT(KEFileShareExclusive, 				"EFileShareExclusive");
       
    34 _LIT(KEFileShareReadersOnly,			"EFileShareReadersOnly");
       
    35 _LIT(KEFileShareAny,					"EFileShareAny");
       
    36 _LIT(KEFileShareReadersOrWriters, 		"EFileShareReadersOrWriters");
       
    37 _LIT(KEFileStream, 						"EFileStream");
       
    38 _LIT(KEFileStreamText,					"EFileStreamText");
       
    39 _LIT(KEFileRead,						"EFileRead");
       
    40 _LIT(KEFileWrite,						"EFileWrite");
       
    41 _LIT(KEFileReadAsyncAll,				"EFileReadAsyncAll");
       
    42 _LIT(KEFileWriteBuffered,				"EFileWriteBuffered");
       
    43 _LIT(KEFileWriteDirectIO,				"EFileWriteDirectIO");
       
    44 _LIT(KEFileReadBuffered,				"EFileReadBuffered");
       
    45 _LIT(KEFileReadDirectIO,				"EFileReadDirectIO");
       
    46 _LIT(KEFileReadAheadOn,					"EFileReadAheadOn");
       
    47 _LIT(KEFileReadAheadOff,				"EFileReadAheadOff");
       
    48 _LIT(KORSign,							"|");
       
    49 
       
    50 
       
    51 CStsBaseTestStep::CStsBaseTestStep(CStsTestServer &aStsTestServer): iStsTestServer(aStsTestServer)
       
    52 	{
       
    53 	}
       
    54 
       
    55 CStsTestServer& CStsBaseTestStep::Server()
       
    56 	{
       
    57 	return iStsTestServer;
       
    58 	}
       
    59 
       
    60 TInt CStsBaseTestStep::GetIntFromConfigL(const TDesC& aName)
       
    61 	{
       
    62 	TInt ret(0);
       
    63 	if(!GetIntFromConfig(ConfigSection(), aName, ret))
       
    64 		{
       
    65 		ERR_PRINTF2(_L("%S is not found in config!"), &aName);
       
    66 		User::Leave(KErrNotFound);
       
    67 		}
       
    68 	return ret;
       
    69 	}
       
    70 
       
    71 TInt CStsBaseTestStep::GetTransactionSlotFromConfigL()
       
    72 /**
       
    73  Reads the target file's path from the ini file
       
    74  */
       
    75 	{
       
    76 	return GetIntFromConfigL(KTransactionSlot);
       
    77 	}
       
    78 
       
    79 TInt CStsBaseTestStep::GetTransactionSlotToReuseTransactionIdFromConfigL()
       
    80 	{
       
    81 	return GetIntFromConfigL(KTransactionSlotID);
       
    82 	}
       
    83 
       
    84 TInt CStsBaseTestStep::GetTransactionIdFromConfigL()
       
    85 	{
       
    86 	return GetIntFromConfigL(KTransactionID);
       
    87 	}
       
    88 
       
    89 TPtrC CStsBaseTestStep::GetStringFromConfigL(const TDesC& aName)
       
    90 	{
       
    91 	TPtrC ret;
       
    92 	if(!GetStringFromConfig(ConfigSection(), aName, ret))
       
    93 		{
       
    94 		ERR_PRINTF2(_L("%S is not found in config!"), &aName);
       
    95 		User::Leave(KErrNotFound);
       
    96 		}
       
    97 	return ret;
       
    98 	}
       
    99 
       
   100 TPtrC CStsBaseTestStep::GetTargetFilePathFromConfigL()
       
   101 	{
       
   102 	return GetStringFromConfigL(KTargetFile);
       
   103 	}
       
   104 
       
   105 void CStsBaseTestStep::WriteToFileL(RFile &aFile, TDesC& aString)
       
   106 	{
       
   107 	RFileWriteStream stream;
       
   108 	CleanupClosePushL(stream);
       
   109 	stream.Attach(aFile);
       
   110 	TRAPD(err,
       
   111 		stream.WriteL(aString);
       
   112 		stream.CommitL();
       
   113 		); //catch the error so that it can be reported
       
   114 	if(err!=KErrNone)
       
   115 		{
       
   116 		ERR_PRINTF2(_L("CStsBaseTestStep::WriteToFileL() Writing to file failed! Error code: %d"), err);
       
   117 		User::Leave(err);
       
   118 		}
       
   119 	stream.Close();
       
   120 	CleanupStack::PopAndDestroy(&stream);
       
   121 	}
       
   122 
       
   123 TBool CStsBaseTestStep::FileExistsL(const TDesC &aFileName)
       
   124 	{
       
   125 	INFO_PRINTF2(_L("CStsBaseTestStep::FileExistsL() %S"), &aFileName);
       
   126 	TBool ret=EFalse;
       
   127 	TRAPD(err, ret=Server().GetTestUtil().FileExistsL(aFileName)); //trap leaving fucntion to log error
       
   128 	if(err!=KErrNone)
       
   129 		{
       
   130 		ERR_PRINTF3(_L("CStsBaseTestStep::FileExistsL() File existence check failed for %S Error code: %d"), &aFileName, err);
       
   131 		User::Leave(err);
       
   132 		}
       
   133 	return ret;
       
   134 	}
       
   135 
       
   136 void CStsBaseTestStep::DeleteFileL(const TDesC &aFileName)	
       
   137 	{
       
   138 	TInt err=Server().GetTestUtil().Delete(aFileName); 
       
   139 	if(err!=KErrNone)
       
   140 		{
       
   141 		ERR_PRINTF3(_L("DeleteFileL() Deletion failed for %S Error code: %d"), &aFileName, err);
       
   142 		User::Leave(err);
       
   143 		}
       
   144 	}
       
   145 void CStsBaseTestStep::CopyFileL(const TDesC& aSourceFile, const TDesC& aDestinationFile)
       
   146 	{
       
   147 	TInt err=Server().GetTestUtil().Copy(aSourceFile, aDestinationFile); 
       
   148 	if(err!=KErrNone)
       
   149 		{
       
   150 		ERR_PRINTF4(_L("CStsBaseTestStep::CopyFileL() Copying %S to %S failed. Error code: %d"), &aSourceFile, &aDestinationFile, err);
       
   151 		User::Leave(err);
       
   152 		}
       
   153 	}
       
   154 
       
   155 void CStsBaseTestStep::RmDirL(const TDesC& aFileName)
       
   156 	{
       
   157 	TInt err=Server().GetTestUtil().RmDir(aFileName); 
       
   158 	if(err!=KErrNone)
       
   159 		{
       
   160 		ERR_PRINTF3(_L("CStsBaseTestStep::RmDirL() Deleting dir %S failed. Error code: %d"), &aFileName, err);
       
   161 		User::Leave(err);
       
   162 		}
       
   163 	}
       
   164 
       
   165 void CStsBaseTestStep::MkDirAllL(const TDesC& aFileName)
       
   166 	{
       
   167 	TInt err=Server().GetTestUtil().MkDirAll(aFileName); 
       
   168 	if(err!=KErrNone)
       
   169 		{
       
   170 		ERR_PRINTF3(_L("CStsBaseTestStep::MkDirAllL() Creating dir %S failed. Error code: %d"), &aFileName, err);
       
   171 		User::Leave(err);
       
   172 		}
       
   173 	}
       
   174 
       
   175 void CStsBaseTestStep::DeleteL(const TDesC& aFileName)
       
   176 	{
       
   177 	TInt err=Server().GetTestUtil().Delete(aFileName); 
       
   178 	if(err!=KErrNone)
       
   179 		{
       
   180 		ERR_PRINTF3(_L("CStsBaseTestStep::DeleteL() Deleting %S failed. Error code: %d"), &aFileName, err);
       
   181 		User::Leave(err);
       
   182 		}
       
   183 	}
       
   184 
       
   185 void CStsBaseTestStep::SetReadOnlyL(const TDesC& aFileName, TInt aSetReadOnly)
       
   186 	{
       
   187 	TInt err=Server().GetTestUtil().SetReadOnly(aFileName, aSetReadOnly);
       
   188 	if(err!=KErrNone)
       
   189 		{
       
   190 		ERR_PRINTF4(_L("CStsBaseTestStep::SetReadOnly() Trying to set \"readonly\" flag on %S failed to %d. Error code: %d"), &aFileName, aSetReadOnly, err);
       
   191 		User::Leave(err);
       
   192 		}
       
   193 	}
       
   194 
       
   195 HBufC* CStsBaseTestStep::CreateDataForNewFileCreatedByStsServerLC(const TDesC& aTestStepName, TNewFileType aType)
       
   196 	{
       
   197 	HBufC *buf = HBufC::NewLC(200);
       
   198 	TPtr bufPtr = buf->Des();
       
   199 
       
   200 	bufPtr.Append(KFileData1);
       
   201 	switch(aType)
       
   202 		{
       
   203 		case ENewTemporaryFile:
       
   204 			bufPtr.Append(KFileData2);
       
   205 			break;
       
   206 		case ENewPermanentFile:
       
   207 			bufPtr.Append(KFileData3);
       
   208 			break;
       
   209 		default:
       
   210 			bufPtr.Append(KFileData4);
       
   211 			break;
       
   212 		}
       
   213 	bufPtr.Append(KFileData5);
       
   214 	bufPtr.Append(KFileData7);
       
   215 	bufPtr.Append(aTestStepName);
       
   216 	bufPtr.Append(KFileData6);
       
   217 	return buf;
       
   218 	}
       
   219 
       
   220 //----------------------------------------
       
   221 
       
   222 CCreateTransactionStep::CCreateTransactionStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
   223 	{
       
   224 	// Call base class method to set up the human readable name for logging
       
   225 	SetTestStepName(KCreateTransactionStep);
       
   226 	}
       
   227 
       
   228 void CCreateTransactionStep::ImplTestStepPreambleL()
       
   229 /**
       
   230  @return - void code
       
   231  Override of base class virtual
       
   232  */
       
   233 	{
       
   234 	INFO_PRINTF1(_L("CCreateTransactionStep Preamble"));
       
   235 	SetTestStepResult(EPass);
       
   236 	}
       
   237 
       
   238 void CCreateTransactionStep::ImplTestStepL()
       
   239 /**
       
   240  @return - void code
       
   241  Override of base class pure virtual
       
   242  */
       
   243 	{
       
   244 	INFO_PRINTF1(_L("CCreateTransactionStep in test step"));
       
   245 
       
   246 	TInt trSlot = GetTransactionSlotFromConfigL();
       
   247 	TInt trID = Server().CreateTransactionL(trSlot);
       
   248 	SetTestStepResult(EPass);
       
   249 	}
       
   250 
       
   251 void CCreateTransactionStep::ImplTestStepPostambleL()
       
   252 /**
       
   253  @return - void code
       
   254  Override of base class virtual
       
   255  */
       
   256 	{
       
   257 	INFO_PRINTF1(_L("CCreateTransactionStep Postamble"));
       
   258 	}
       
   259 
       
   260 //----------------------------------------
       
   261 
       
   262 COpenTransactionStep::COpenTransactionStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
   263 	{
       
   264 	// Call base class method to set up the human readable name for logging
       
   265 	SetTestStepName(KOpenTransactionStep);
       
   266 	}
       
   267 
       
   268 void COpenTransactionStep::ImplTestStepPreambleL()
       
   269 /**
       
   270  @return - void code
       
   271  Override of base class virtual
       
   272  */
       
   273 	{
       
   274 	INFO_PRINTF1(_L("COpenTransactionStep Preamble"));
       
   275 	SetTestStepResult(EPass);
       
   276 	
       
   277 	}
       
   278 
       
   279 void COpenTransactionStep::ImplTestStepL()
       
   280 /**
       
   281  @return - void code
       
   282  Override of base class pure virtual
       
   283  */
       
   284 	{
       
   285 	INFO_PRINTF1(_L("COpenTransactionStep in test step"));
       
   286 
       
   287 	
       
   288 	TInt trSlot = GetTransactionSlotFromConfigL(); //get required transaction slot from ini
       
   289 	TInt requiredSlotToTakeIdFrom(0);
       
   290 	TStsTransactionId trID(0);
       
   291 	TRAPD(err, requiredSlotToTakeIdFrom = GetTransactionSlotToReuseTransactionIdFromConfigL()); //get transaction id from ini to reuse its id
       
   292 	if(err == KErrNone)
       
   293 		{
       
   294 		trID = Server().GetTransactionIDL(requiredSlotToTakeIdFrom); //get ID from server from the requested slot
       
   295 		}
       
   296 	else
       
   297 		{
       
   298 		if(err == KErrNotFound)
       
   299 			{
       
   300 			trID =GetTransactionIdFromConfigL();
       
   301 			}
       
   302 		else
       
   303 			{
       
   304 			User::Leave(err);
       
   305 			}
       
   306 		}
       
   307 	//open transaction
       
   308 	Server().OpenTransactionL(trSlot, trID);
       
   309 
       
   310 	SetTestStepResult(EPass);
       
   311 	
       
   312 	}
       
   313 
       
   314 void COpenTransactionStep::ImplTestStepPostambleL()
       
   315 /**
       
   316  @return - void code
       
   317  Override of base class virtual
       
   318  */
       
   319 	{
       
   320 	INFO_PRINTF1(_L("COpenTransactionStep Postamble"));
       
   321 	
       
   322 	}
       
   323 
       
   324 
       
   325 
       
   326 //----------------------------------------
       
   327 		
       
   328 CCloseTransactionStep::CCloseTransactionStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
   329 	{
       
   330 	// Call base class method to set up the human readable name for logging
       
   331 	SetTestStepName(KCloseTransactionStep);
       
   332 	}
       
   333 
       
   334 void CCloseTransactionStep::ImplTestStepPreambleL()
       
   335 /**
       
   336  @return - void code
       
   337  Override of base class virtual
       
   338  */
       
   339 	{
       
   340 	INFO_PRINTF1(_L("CCloseTransactionStep Preamble"));
       
   341 	SetTestStepResult(EPass);
       
   342 	
       
   343 	}
       
   344 
       
   345 void CCloseTransactionStep::ImplTestStepL()
       
   346 /**
       
   347  @return - void code
       
   348  Override of base class pure virtual
       
   349  */
       
   350 	{
       
   351 	INFO_PRINTF1(_L("CCloseTransactionStep in test step"));
       
   352 	
       
   353 	//get transaction slot from ini
       
   354 	TInt trSlot = GetTransactionSlotFromConfigL();
       
   355 
       
   356 	//close transaction
       
   357 	Server().CloseTransactionL(trSlot);
       
   358 
       
   359 	SetTestStepResult(EPass);
       
   360 	
       
   361 	}
       
   362 
       
   363 void CCloseTransactionStep::ImplTestStepPostambleL()
       
   364 /**
       
   365  @return - void code
       
   366  Override of base class virtual
       
   367  */
       
   368 	{
       
   369 	INFO_PRINTF1(_L("CCloseTransactionStep Postamble"));
       
   370 	
       
   371 	}
       
   372 
       
   373 //----------------------------------------
       
   374 
       
   375 CRegisterNewFileStep::CRegisterNewFileStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
   376 	{
       
   377 	// Call base class method to set up the human readable name for logging
       
   378 	SetTestStepName(KRegisterNewFileStep);
       
   379 	}
       
   380 
       
   381 void CRegisterNewFileStep::ImplTestStepPreambleL()
       
   382 /**
       
   383  @return - void code
       
   384  Override of base class virtual
       
   385  */
       
   386 	{
       
   387 	INFO_PRINTF1(_L("CRegisterNewFileStep Preamble"));
       
   388 	SetTestStepResult(EPass);
       
   389 	
       
   390 	}
       
   391 
       
   392 void CRegisterNewFileStep::ImplTestStepL()
       
   393 /**
       
   394  @return - void code
       
   395  Override of base class pure virtual
       
   396  */
       
   397 	{
       
   398 	INFO_PRINTF1(_L("CRegisterNewFileStep in test step"));
       
   399 	
       
   400 	//get transaction slot from ini
       
   401 	TInt trSlot = GetTransactionSlotFromConfigL();
       
   402 
       
   403 	//get the target file path from ini
       
   404 	TPtrC filePathInIni = GetTargetFilePathFromConfigL();
       
   405 
       
   406 	Server().RegisterNewL(trSlot, filePathInIni);
       
   407 
       
   408 	SetTestStepResult(EPass);
       
   409 	
       
   410 	}
       
   411 
       
   412 void CRegisterNewFileStep::ImplTestStepPostambleL()
       
   413 /**
       
   414  @return - void code
       
   415  Override of base class virtual
       
   416  */
       
   417 	{
       
   418 	INFO_PRINTF1(_L("CRegisterNewFileStep Postamble"));
       
   419 	
       
   420 	}
       
   421 
       
   422 
       
   423 //----------------------------------------
       
   424 
       
   425 CCreateNewFileStep::CCreateNewFileStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
   426 	{
       
   427 	// Call base class method to set up the human readable name for logging
       
   428 	SetTestStepName(KCreateNewFileStep);
       
   429 	}
       
   430 
       
   431 void CCreateNewFileStep::ImplTestStepPreambleL()
       
   432 /**
       
   433  @return - void code
       
   434  Override of base class virtual
       
   435  */
       
   436 	{
       
   437 	INFO_PRINTF1(_L("CCreateNewFileStep Preamble"));
       
   438 	SetTestStepResult(EPass);
       
   439 	
       
   440 	}
       
   441 
       
   442 void CCreateNewFileStep::ImplTestStepL()
       
   443 /**
       
   444  @return - void code
       
   445  Override of base class pure virtual
       
   446  */
       
   447 	{
       
   448 	INFO_PRINTF1(_L("CCreateNewFileStep in test step"));
       
   449 	
       
   450 	TFileMode fileMode(static_cast<TFileMode>(EFileShareExclusive|EFileWrite));
       
   451 	
       
   452 	//get transaction slot from ini
       
   453 	TInt trSlot = GetTransactionSlotFromConfigL();
       
   454 
       
   455 	//get the target file path from ini
       
   456 	TPtrC filePathInIni = GetTargetFilePathFromConfigL();
       
   457 	
       
   458 	//the handle to the newly created file
       
   459 	RFile newFile;
       
   460 	CleanupClosePushL(newFile);
       
   461 	//register newly created file
       
   462 	Server().CreateNewL(trSlot, filePathInIni, newFile, fileMode);
       
   463 
       
   464 	HBufC *bufPtr=CreateDataForNewFileCreatedByStsServerLC(KCreateNewFileStep, ENewPermanentFile);
       
   465 	WriteToFileL(newFile, *bufPtr);
       
   466 	
       
   467 	CleanupStack::PopAndDestroy(2, &newFile);
       
   468 
       
   469 	SetTestStepResult(EPass);
       
   470 	
       
   471 	}
       
   472 
       
   473 void CCreateNewFileStep::ImplTestStepPostambleL()
       
   474 /**
       
   475  @return - void code
       
   476  Override of base class virtual
       
   477  */
       
   478 	{
       
   479 	INFO_PRINTF1(_L("CCreateNewFileStep Postamble"));
       
   480 	
       
   481 	}
       
   482 
       
   483 //----------------------------------------
       
   484 
       
   485 CRemoveStep::CRemoveStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
   486 	{
       
   487 	// Call base class method to set up the human readable name for logging
       
   488 	SetTestStepName(KRemoveStep);
       
   489 	}
       
   490 
       
   491 void CRemoveStep::ImplTestStepPreambleL()
       
   492 /**
       
   493  @return - void code
       
   494  Override of base class virtual
       
   495  */
       
   496 	{
       
   497 	INFO_PRINTF1(_L("CRemoveStep Preamble"));
       
   498 	SetTestStepResult(EPass);
       
   499 	
       
   500 	}
       
   501 
       
   502 void CRemoveStep::ImplTestStepL()
       
   503 /**
       
   504  @return - void code
       
   505  Override of base class pure virtual
       
   506  */
       
   507 	{
       
   508 	INFO_PRINTF1(_L("CRemoveStep in test step"));
       
   509 	
       
   510 	//get transaction slot from ini
       
   511 	TInt trSlot = GetTransactionSlotFromConfigL();
       
   512 
       
   513 	//get the target file path from ini
       
   514 	TPtrC filePathInIni = GetTargetFilePathFromConfigL();
       
   515 
       
   516 	Server().RemoveL(trSlot, filePathInIni);
       
   517 
       
   518 	SetTestStepResult(EPass);
       
   519 	
       
   520 	}
       
   521 
       
   522 void CRemoveStep::ImplTestStepPostambleL()
       
   523 /**
       
   524  @return - void code
       
   525  Override of base class virtual
       
   526  */
       
   527 	{
       
   528 	INFO_PRINTF1(_L("CRemoveStep Postamble"));
       
   529 	
       
   530 	}
       
   531 
       
   532 //----------------------------------------
       
   533 	
       
   534 CRegisterTemporaryStep::CRegisterTemporaryStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
   535 	{
       
   536 	// Call base class method to set up the human readable name for logging
       
   537 	SetTestStepName(KRegisterTemporaryStep);
       
   538 	}
       
   539 
       
   540 void CRegisterTemporaryStep::ImplTestStepPreambleL()
       
   541 /**
       
   542  @return - void code
       
   543  Override of base class virtual
       
   544  */
       
   545 	{
       
   546 	INFO_PRINTF1(_L("CRegisterTemporaryStep Preamble"));
       
   547 	SetTestStepResult(EPass);
       
   548 	
       
   549 	}
       
   550 
       
   551 void CRegisterTemporaryStep::ImplTestStepL()
       
   552 /**
       
   553  @return - void code
       
   554  Override of base class pure virtual
       
   555  */
       
   556 	{
       
   557 	INFO_PRINTF1(_L("CRegisterTemporaryStep in test step"));
       
   558 	
       
   559 	//get transaction slot from ini
       
   560 	TInt trSlot = GetTransactionSlotFromConfigL();
       
   561 
       
   562 	//get the target file path from ini
       
   563 	TPtrC filePathInIni = GetTargetFilePathFromConfigL();
       
   564 
       
   565 	Server().RegisterTemporaryL(trSlot, filePathInIni);
       
   566 
       
   567 	SetTestStepResult(EPass);
       
   568 	
       
   569 	}
       
   570 
       
   571 void CRegisterTemporaryStep::ImplTestStepPostambleL()
       
   572 /**
       
   573  @return - void code
       
   574  Override of base class virtual
       
   575  */
       
   576 	{
       
   577 	INFO_PRINTF1(_L("CRegisterTemporaryStep Postamble"));
       
   578 	
       
   579 	}
       
   580 
       
   581 //----------------------------------------
       
   582 	
       
   583 CCreateTemporaryStep::CCreateTemporaryStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
   584 	{
       
   585 	// Call base class method to set up the human readable name for logging
       
   586 	SetTestStepName(KCreateTemporaryStep);
       
   587 	}
       
   588 
       
   589 void CCreateTemporaryStep::ImplTestStepPreambleL()
       
   590 /**
       
   591  @return - void code
       
   592  Override of base class virtual
       
   593  */
       
   594 	{
       
   595 	INFO_PRINTF1(_L("CCreateTemporaryStep Preamble"));
       
   596 	SetTestStepResult(EPass);
       
   597 	
       
   598 	}
       
   599 
       
   600 void CCreateTemporaryStep::ImplTestStepL()
       
   601 /**
       
   602  @return - void code
       
   603  Override of base class pure virtual
       
   604  */
       
   605 	{
       
   606 	INFO_PRINTF1(_L("CCreateTemporaryStep in test step"));
       
   607 	
       
   608 	TFileMode fileMode(static_cast<TFileMode>(EFileShareExclusive|EFileWrite));
       
   609 	
       
   610 	//get transaction slot from ini
       
   611 	TInt trSlot = GetTransactionSlotFromConfigL();
       
   612 
       
   613 	//get the target file path from ini
       
   614 	TPtrC filePathInIni = GetTargetFilePathFromConfigL();
       
   615 	
       
   616 	//the handle to the newly created file
       
   617 	RFile newTempFile;
       
   618 	CleanupClosePushL(newTempFile);
       
   619 	//register newly created file
       
   620 	Server().CreateTemporaryL(trSlot, filePathInIni, newTempFile, fileMode);
       
   621 
       
   622 	HBufC* bufPtr=CreateDataForNewFileCreatedByStsServerLC(KCreateTemporaryStep, ENewTemporaryFile);
       
   623 	WriteToFileL(newTempFile, *bufPtr);
       
   624 
       
   625 	
       
   626 	CleanupStack::PopAndDestroy(2, &newTempFile);
       
   627 
       
   628 	SetTestStepResult(EPass);
       
   629 	
       
   630 	}
       
   631 
       
   632 void CCreateTemporaryStep::ImplTestStepPostambleL()
       
   633 /**
       
   634  @return - void code
       
   635  Override of base class virtual
       
   636  */
       
   637 	{
       
   638 	INFO_PRINTF1(_L("CCreateTemporaryStep Postamble"));
       
   639 	
       
   640 	}
       
   641 
       
   642 //----------------------------------------
       
   643 		
       
   644 COverwriteStep::COverwriteStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
   645 	{
       
   646 	// Call base class method to set up the human readable name for logging
       
   647 	SetTestStepName(KOverwriteStep);
       
   648 	}
       
   649 
       
   650 void COverwriteStep::ImplTestStepPreambleL()
       
   651 /**
       
   652  @return - void code
       
   653  Override of base class virtual
       
   654  */
       
   655 	{
       
   656 	INFO_PRINTF1(_L("COverwriteStep Preamble"));
       
   657 	SetTestStepResult(EPass);
       
   658 	
       
   659 	}
       
   660 
       
   661 void COverwriteStep::ImplTestStepL()
       
   662 /**
       
   663  @return - void code
       
   664  Override of base class pure virtual
       
   665  */
       
   666 	{
       
   667 	INFO_PRINTF1(_L("COverwriteStep in test step"));
       
   668 	
       
   669 	TFileMode fileMode(static_cast<TFileMode>(EFileShareExclusive|EFileWrite));
       
   670 	
       
   671 	//get transaction slot from ini
       
   672 	TInt trSlot = GetTransactionSlotFromConfigL();
       
   673 
       
   674 	//get the target file path from ini
       
   675 	TPtrC filePathInIni = GetTargetFilePathFromConfigL();
       
   676 	
       
   677 	//the handle to the newly created file
       
   678 	RFile newOverwriteFile;
       
   679 	CleanupClosePushL(newOverwriteFile);
       
   680 
       
   681 	//register newly created file
       
   682 	Server().OverwriteL(trSlot, filePathInIni, newOverwriteFile, fileMode);
       
   683 
       
   684 	HBufC *bufPtr=CreateDataForNewFileCreatedByStsServerLC(KOverwriteStep, ENewPermanentFile);
       
   685 	WriteToFileL(newOverwriteFile, *bufPtr);
       
   686 	
       
   687 	CleanupStack::PopAndDestroy(2, &newOverwriteFile);
       
   688 
       
   689 	SetTestStepResult(EPass);
       
   690 	
       
   691 	}
       
   692 
       
   693 void COverwriteStep::ImplTestStepPostambleL()
       
   694 /**
       
   695  @return - void code
       
   696  Override of base class virtual
       
   697  */
       
   698 	{
       
   699 	INFO_PRINTF1(_L("COverwriteStep Postamble"));
       
   700 	
       
   701 	}
       
   702 
       
   703 //----------------------------------------
       
   704 		
       
   705 CCommitStep::CCommitStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
   706 	{
       
   707 	// Call base class method to set up the human readable name for logging
       
   708 	SetTestStepName(KCommitStep);
       
   709 	}
       
   710 
       
   711 void CCommitStep::ImplTestStepPreambleL()
       
   712 /**
       
   713  @return - void code
       
   714  Override of base class virtual
       
   715  */
       
   716 	{
       
   717 	INFO_PRINTF1(_L("CCommitStep Preamble"));
       
   718 	SetTestStepResult(EPass);
       
   719 	
       
   720 	}
       
   721 
       
   722 void CCommitStep::ImplTestStepL()
       
   723 /**
       
   724  @return - void code
       
   725  Override of base class pure virtual
       
   726  */
       
   727 	{
       
   728 	INFO_PRINTF1(_L("CCommitStep in test step"));
       
   729 	
       
   730 	//get transaction slot from ini
       
   731 	TInt trSlot = GetTransactionSlotFromConfigL();
       
   732 
       
   733 	//commit transaction
       
   734 	Server().CommitL(trSlot);
       
   735 
       
   736 	SetTestStepResult(EPass);
       
   737 	
       
   738 	}
       
   739 
       
   740 void CCommitStep::ImplTestStepPostambleL()
       
   741 /**
       
   742  @return - void code
       
   743  Override of base class virtual
       
   744  */
       
   745 	{
       
   746 	INFO_PRINTF1(_L("CCommitStep Postamble"));
       
   747 	
       
   748 	}
       
   749 
       
   750 //----------------------------------------
       
   751 		
       
   752 CRollbackStep::CRollbackStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
   753 	{
       
   754 	// Call base class method to set up the human readable name for logging
       
   755 	SetTestStepName(KRollbackStep);
       
   756 	}
       
   757 
       
   758 void CRollbackStep::ImplTestStepPreambleL()
       
   759 /**
       
   760  @return - void code
       
   761  Override of base class virtual
       
   762  */
       
   763 	{
       
   764 	INFO_PRINTF1(_L("CRollbackStep Preamble"));
       
   765 	SetTestStepResult(EPass);
       
   766 	
       
   767 	}
       
   768 
       
   769 void CRollbackStep::ImplTestStepL()
       
   770 /**
       
   771  @return - void code
       
   772  Override of base class pure virtual
       
   773  */
       
   774 	{
       
   775 	INFO_PRINTF1(_L("CRollbackStep in test step"));
       
   776 	
       
   777 	//get transaction slot from ini
       
   778 	TInt trSlot = GetTransactionSlotFromConfigL();
       
   779 
       
   780 	//roolback transaction
       
   781 	Server().RollBackL(trSlot);
       
   782 	
       
   783 	SetTestStepResult(EPass);
       
   784 	
       
   785 	}
       
   786 
       
   787 void CRollbackStep::ImplTestStepPostambleL()
       
   788 /**
       
   789  @return - void code
       
   790  Override of base class virtual
       
   791  */
       
   792 	{
       
   793 	INFO_PRINTF1(_L("CRollbackStep Postamble"));
       
   794 	
       
   795 	}
       
   796 
       
   797 //----------------------------------------
       
   798 		
       
   799 CRollbackAllPendingStep::CRollbackAllPendingStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
   800 	{
       
   801 	// Call base class method to set up the human readable name for logging
       
   802 	SetTestStepName(KRollbackAllPendingStep);
       
   803 	}
       
   804 
       
   805 void CRollbackAllPendingStep::ImplTestStepPreambleL()
       
   806 /**
       
   807  @return - void code
       
   808  Override of base class virtual
       
   809  */
       
   810 	{
       
   811 	INFO_PRINTF1(_L("CRollbackAllPendingStep Preamble"));
       
   812 	SetTestStepResult(EPass);
       
   813 	
       
   814 	}
       
   815 
       
   816 void CRollbackAllPendingStep::ImplTestStepL()
       
   817 /**
       
   818  @return - void code
       
   819  Override of base class pure virtual
       
   820  */
       
   821 	{
       
   822 	INFO_PRINTF1(_L("CRollbackAllPendingStep in test step"));
       
   823 	
       
   824 	RStsRecoverySession session;
       
   825 	session.RollbackAllPendingL();
       
   826 	session.Close();
       
   827 	SetTestStepResult(EPass);
       
   828 	
       
   829 	}
       
   830 
       
   831 void CRollbackAllPendingStep::ImplTestStepPostambleL()
       
   832 /**
       
   833  @return - void code
       
   834  Override of base class virtual
       
   835  */
       
   836 	{
       
   837 	INFO_PRINTF1(_L("CRollbackAllPendingStep Postamble"));
       
   838 	
       
   839 	}
       
   840 
       
   841 //----------------------------------------
       
   842 			
       
   843 CCheckFilesStep::CCheckFilesStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
   844 	{
       
   845 	// Call base class method to set up the human readable name for logging
       
   846 	SetTestStepName(KCheckFilesStep);
       
   847 	}
       
   848 
       
   849 void CCheckFilesStep::ImplTestStepPreambleL()
       
   850 /**
       
   851  @return - void code
       
   852  Override of base class virtual
       
   853  */
       
   854 	{
       
   855 	INFO_PRINTF1(_L("CCheckFilesStep Preamble"));
       
   856 	SetTestStepResult(EPass);
       
   857 	
       
   858 	}
       
   859 
       
   860 void CCheckFilesStep::ImplTestStepL()
       
   861 /**
       
   862  @return - void code
       
   863  Override of base class pure virtual
       
   864  */
       
   865 	{
       
   866 	INFO_PRINTF1(_L("CCheckFilesStep in test step"));
       
   867 	SetTestStepResult(EPass);
       
   868 	
       
   869 	RArray<TPtrC> fileNumExist;
       
   870 	RArray<TPtrC> fileNumNonExist;
       
   871 	CleanupClosePushL(fileNumExist);
       
   872 	CleanupClosePushL(fileNumNonExist);
       
   873 	GetFileNamesForCheckL(fileNumExist, fileNumNonExist);
       
   874 	CheckIfFilesExistL(fileNumExist);
       
   875 	CheckIfFilesNotExistL(fileNumNonExist);
       
   876 	CleanupStack::PopAndDestroy(2, &fileNumExist);
       
   877 	}
       
   878 
       
   879 void CCheckFilesStep::ImplTestStepPostambleL()
       
   880 /**
       
   881  @return - void code
       
   882  Override of base class virtual
       
   883  */
       
   884 	{
       
   885 	INFO_PRINTF1(_L("CCheckFilesStep Postamble"));
       
   886 	
       
   887 	}
       
   888 
       
   889 
       
   890 void CCheckFilesStep::GetFileNamesForCheckL(RArray<TPtrC>& aFileNumExist,RArray<TPtrC>& aFileNumNonExist)
       
   891 	{
       
   892 	TInt entriesNumExist=0;
       
   893 	TInt entriesNumNonExist=0;
       
   894 	
       
   895 	GetIntFromConfig(ConfigSection(), KNumExist, entriesNumExist);
       
   896 	GetIntFromConfig(ConfigSection(), KNumNonExist, entriesNumNonExist);
       
   897 	
       
   898 	ExtractFileNameL(entriesNumExist, KExistBase, aFileNumExist);
       
   899 	ExtractFileNameL(entriesNumNonExist, KNonExistBase, aFileNumNonExist);
       
   900 	}
       
   901 		
       
   902 void CCheckFilesStep::ExtractFileNameL(TInt aEntries, const TDesC& aEntryBase, RArray<TPtrC>& aFileArray)
       
   903 	{
       
   904 	TPtrC fname;
       
   905 	const TInt KKeyBufSize =64;
       
   906 	
       
   907 	for(TInt i=0; i<aEntries; i++)
       
   908 		{
       
   909 		//construct name of the key
       
   910 		TBuf<KKeyBufSize> keyBuf(aEntryBase);
       
   911 		keyBuf.AppendNum(i);
       
   912 		
       
   913 		if(!GetStringFromConfig(ConfigSection(),keyBuf,fname))
       
   914 			{
       
   915 			ERR_PRINTF2(_L("%S is not found in config!"), &keyBuf);
       
   916 			User::Leave(KErrNotFound);
       
   917 			}
       
   918 		aFileArray.Insert(fname, i);
       
   919 		}
       
   920 	}
       
   921 
       
   922 void CCheckFilesStep::CheckIfFilesExistL(const RArray<TPtrC>& aFileArray)
       
   923 	{
       
   924 	TInt nErr =0;
       
   925 	TInt fileCount=aFileArray.Count();
       
   926 	for(TInt i =0; i< fileCount; i++)
       
   927 		{
       
   928 		if(!FileExistsL(aFileArray[i]))
       
   929 			{
       
   930 			ERR_PRINTF2(_L("File missing: %S"), &aFileArray[i]);
       
   931 			nErr++;
       
   932 			}
       
   933 		}
       
   934 	if(nErr)
       
   935 		{
       
   936 		SetTestStepResult(EFail);
       
   937 		}
       
   938 	}
       
   939 
       
   940 void CCheckFilesStep::CheckIfFilesNotExistL(const RArray<TPtrC>& aFileArray)
       
   941 	{
       
   942 	TInt nErr =0;
       
   943 	TInt fileCount=aFileArray.Count();
       
   944 	
       
   945 	for(TInt i =0; i< fileCount; i++)
       
   946 		{
       
   947 		if(FileExistsL(aFileArray[i]))
       
   948 			{
       
   949 			ERR_PRINTF2(_L("File exists (but shouldn't): %S"), &aFileArray[i]);
       
   950 			nErr++;
       
   951 			}
       
   952 		}
       
   953 	if(nErr)
       
   954 		{
       
   955 		SetTestStepResult(EFail);
       
   956 		}
       
   957 	}
       
   958 	
       
   959 
       
   960 //----------------------------------------
       
   961 			
       
   962 CheckFileModeChangeStep::CheckFileModeChangeStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
   963 	{
       
   964 	// Call base class method to set up the human readable name for logging
       
   965 	SetTestStepName(KCheckFileModeChangeStep);
       
   966 	}
       
   967 
       
   968 void CheckFileModeChangeStep::ImplTestStepPreambleL()
       
   969 /**
       
   970  @return - void code
       
   971  Override of base class virtual
       
   972  */
       
   973 	{
       
   974 	INFO_PRINTF1(_L("CheckFileModeChangeStep Preamble"));
       
   975 	SetTestStepResult(EPass);
       
   976 	
       
   977 	}
       
   978 
       
   979 void CheckFileModeChangeStep::ImplTestStepL()
       
   980 /**
       
   981  @return - void code
       
   982  Override of base class pure virtual
       
   983  */
       
   984 	{
       
   985 	INFO_PRINTF1(_L("CheckFileModeChangeStep in test step"));
       
   986 	SetTestStepResult(EPass);
       
   987 	
       
   988 	TFileMode fileMode(static_cast<TFileMode>(EFileShareExclusive|EFileWrite));
       
   989 	
       
   990 	//get transaction slot from ini
       
   991 	TInt trSlot = GetTransactionSlotFromConfigL();
       
   992 
       
   993 	//get the target file path from ini
       
   994 	TPtrC filePathInIni = GetTargetFilePathFromConfigL();
       
   995 	
       
   996 	//the handle to the newly created file
       
   997 	RFile newFile;
       
   998 	CleanupClosePushL(newFile);
       
   999 	//register newly created file
       
  1000 	Server().CreateNewL(trSlot, filePathInIni, newFile, fileMode);
       
  1001 
       
  1002 
       
  1003 	TFileMode fileModes[] = {
       
  1004 			EFileShareReadersOnly,
       
  1005 			EFileShareAny,
       
  1006 			EFileShareReadersOrWriters,
       
  1007 			EFileShareExclusive
       
  1008 			};
       
  1009 
       
  1010 	const TDesC* fileModeStrings[] = {
       
  1011 				&KEFileShareReadersOnly,
       
  1012 				&KEFileShareAny,
       
  1013 				&KEFileShareReadersOrWriters,
       
  1014 				&KEFileShareExclusive
       
  1015 				};
       
  1016 	
       
  1017 	TFileMode fileSubModes[] = {
       
  1018 			EFileStream,
       
  1019 			EFileStreamText,
       
  1020 			EFileRead,
       
  1021 			EFileWrite,
       
  1022 			EFileReadAsyncAll,
       
  1023 			EFileWriteBuffered,
       
  1024 			EFileWriteDirectIO,
       
  1025 			EFileReadBuffered,
       
  1026 			EFileReadDirectIO,
       
  1027 			EFileReadAheadOn,
       
  1028 			EFileReadAheadOff
       
  1029 			};
       
  1030 
       
  1031 	const TDesC* fileSubModeStrings[] = {
       
  1032 			&KEFileStream,
       
  1033 			&KEFileStreamText,
       
  1034 			&KEFileRead,
       
  1035 			&KEFileWrite,
       
  1036 			&KEFileReadAsyncAll,
       
  1037 			&KEFileWriteBuffered,
       
  1038 			&KEFileWriteDirectIO,
       
  1039 			&KEFileReadBuffered,
       
  1040 			&KEFileReadDirectIO,
       
  1041 			&KEFileReadAheadOn,
       
  1042 			&KEFileReadAheadOff
       
  1043 			};
       
  1044 
       
  1045 	
       
  1046 	INFO_PRINTF4(_L("CheckFileModeChangeStep::ImplTestStepL() returned file handle mode is: %S%S%S"), &KEFileShareExclusive, &KORSign, &KEFileWrite);
       
  1047 
       
  1048 	for(TInt mode=0; mode<sizeof(fileModes)/sizeof(TFileMode); ++mode)
       
  1049 		{
       
  1050 		for(TInt submode=0; submode<sizeof(fileSubModes)/sizeof(TFileMode); ++submode)
       
  1051 			{
       
  1052 			TInt err=newFile.ChangeMode(static_cast<TFileMode>(fileModes[mode]|fileSubModes[submode]));
       
  1053 			if(err==KErrNone)
       
  1054 				{
       
  1055 				INFO_PRINTF4(_L("<font color=green>CheckFileModeChangeStep::ImplTestStepL() setting file mode to %S%S%S was successful</font>"),fileModeStrings[mode], &KORSign, fileSubModeStrings[submode]);
       
  1056 				}
       
  1057 			else if(err==KErrArgument)
       
  1058 				{
       
  1059 				ERR_PRINTF4(_L("<font color=red>CheckFileModeChangeStep::ImplTestStepL() setting file mode to %S%S%S was unsuccessful. KErrArgument is returned!</font>"),fileModeStrings[mode], &KORSign, fileSubModeStrings[submode]);
       
  1060 				}
       
  1061 			else if(err==KErrAccessDenied)
       
  1062 				{
       
  1063 				ERR_PRINTF4(_L("<font color=red>CheckFileModeChangeStep::ImplTestStepL() setting file mode to %S%S%S was unsuccessful. KErrAccessDenied is returned!</font>"),fileModeStrings[mode], &KORSign, fileSubModeStrings[submode]);
       
  1064 				}
       
  1065 			else
       
  1066 				{
       
  1067 				ERR_PRINTF5(_L("<font color=red>CheckFileModeChangeStep::ImplTestStepL() setting file mode to %S%S%S was unsuccessful. %d is returned!</font>"),fileModeStrings[mode], &KORSign, fileSubModeStrings[submode], err);
       
  1068 				}
       
  1069 			}
       
  1070 		
       
  1071 		}
       
  1072 	
       
  1073 	CleanupStack::PopAndDestroy(&newFile);	
       
  1074 	}
       
  1075 
       
  1076 void CheckFileModeChangeStep::ImplTestStepPostambleL()
       
  1077 /**
       
  1078  @return - void code
       
  1079  Override of base class virtual
       
  1080  */
       
  1081 	{
       
  1082 	INFO_PRINTF1(_L("CheckFileModeChangeStep Postamble"));
       
  1083 	
       
  1084 	}
       
  1085 
       
  1086 //----------------------------------------
       
  1087 			
       
  1088 CFileOperationsStep::CFileOperationsStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
  1089 	{
       
  1090 	// Call base class method to set up the human readable name for logging
       
  1091 	SetTestStepName(KCheckFilesStep);
       
  1092 	}
       
  1093 
       
  1094 void CFileOperationsStep::ImplTestStepPreambleL()
       
  1095 /**
       
  1096  @return - void code
       
  1097  Override of base class virtual
       
  1098  */
       
  1099 	{
       
  1100 	INFO_PRINTF1(_L("CFileOperationsStep Preamble"));
       
  1101 	SetTestStepResult(EPass);
       
  1102 	
       
  1103 	}
       
  1104 
       
  1105 void CFileOperationsStep::ImplTestStepL()
       
  1106 /**
       
  1107  @return - void code
       
  1108  Override of base class pure virtual
       
  1109  */
       
  1110 	{
       
  1111 	INFO_PRINTF1(_L("CFileOperationsStep in test step"));
       
  1112 	ProcessFileOperationsL();
       
  1113 	SetTestStepResult(EPass);
       
  1114 	
       
  1115 	}
       
  1116 
       
  1117 void CFileOperationsStep::ImplTestStepPostambleL()
       
  1118 /**
       
  1119  @return - void code
       
  1120  Override of base class virtual
       
  1121  */
       
  1122 	{
       
  1123 	INFO_PRINTF1(_L("CFileOperationsStep Postamble"));
       
  1124 	
       
  1125 	}
       
  1126 		
       
  1127 void CFileOperationsStep::ProcessFileOperationsL()
       
  1128 	{
       
  1129 	TInt numOfOps=GetIntFromConfigL(KNumOfOperations);
       
  1130 	const TInt buffsize(30);
       
  1131 	
       
  1132 	for(TInt i=0; i<numOfOps; i++)
       
  1133 		{
       
  1134 		//construct name of the action (ie: action0, action1, ...)
       
  1135 		TBuf<buffsize> opBuf(KOpNameBase);
       
  1136 		opBuf.AppendNum(i);
       
  1137 		TBool ignoreErrors=EFalse;
       
  1138 		TPtrC operationLinePtr=GetStringFromConfigL(opBuf);
       
  1139 		TInt nextParamStart(0);
       
  1140 		TInt err=KErrNone;
       
  1141 		
       
  1142 		TPtrC command(GetNextCommandLineParameterL(operationLinePtr, nextParamStart));
       
  1143 		TInt tempNextParamStart=nextParamStart;
       
  1144 		TPtrC ignoreErrorsSwitch(GetNextCommandLineParameterL(operationLinePtr, nextParamStart));
       
  1145 		if(ignoreErrorsSwitch == KIgnoreErrorsSwitch)
       
  1146 			{
       
  1147 			//"-i" switch is present
       
  1148 			ignoreErrors=ETrue;
       
  1149 			}
       
  1150 		else
       
  1151 			{
       
  1152 			//no "-i" switch go back to original position
       
  1153 			nextParamStart=tempNextParamStart;
       
  1154 			}
       
  1155 		if(command == KMkDirAllOp) //mkdirall
       
  1156 			{
       
  1157 			TPtrC target(GetNextCommandLineParameterL(operationLinePtr, nextParamStart));
       
  1158 			TRAP(err, MkDirAllL(target));
       
  1159 			}
       
  1160 		else if(command == KRmDirOp) //rmdir
       
  1161 			{
       
  1162 			TPtrC target(GetNextCommandLineParameterL(operationLinePtr, nextParamStart));
       
  1163 			TRAP(err, RmDirL(target));
       
  1164 			}
       
  1165 		else if(command == KCopyOp) //copy
       
  1166 			{
       
  1167 			TPtrC source(GetNextCommandLineParameterL(operationLinePtr, nextParamStart));
       
  1168 			TPtrC dest(GetNextCommandLineParameterL(operationLinePtr, nextParamStart));
       
  1169 			TRAP(err, CopyFileL(source, dest));
       
  1170 			}
       
  1171 		else if(command == KDeleteOp) //delete
       
  1172 			{
       
  1173 			TPtrC target(GetNextCommandLineParameterL(operationLinePtr, nextParamStart));
       
  1174 			TRAP(err, DeleteL(target));
       
  1175 			}
       
  1176 		else if(command == KAttribOp) //attrib
       
  1177 			{
       
  1178 			enum TAttribOperation{
       
  1179 			Unset=0x00,
       
  1180 			SetReadOnly=0x01}; //later more operations can be handled
       
  1181 
       
  1182 			TPtrC attribSwitch(GetNextCommandLineParameterL(operationLinePtr, nextParamStart));
       
  1183 			TInt operation=SetReadOnly*(attribSwitch[0] == TChar('r') || attribSwitch[0] == TChar('R'));
       
  1184 			TInt flag=0;
       
  1185 			if(attribSwitch[1] == TChar('+'))
       
  1186 				flag=1;
       
  1187 			else if(attribSwitch[1] == TChar('-'))
       
  1188 				flag=-1;
       
  1189 			if(attribSwitch.Length() == 2 && operation && flag)
       
  1190 				{
       
  1191 				TPtrC target(GetNextCommandLineParameterL(operationLinePtr, nextParamStart));
       
  1192 				switch(operation) //later more operations can be handled
       
  1193 					{
       
  1194 					case SetReadOnly:
       
  1195 						TRAP(err, SetReadOnlyL(target, (flag>0? 1 : 0)));
       
  1196 						break;
       
  1197 					default:
       
  1198 						break;
       
  1199 					}
       
  1200 				}
       
  1201 			else
       
  1202 				{
       
  1203 				ERR_PRINTF2(_L("<font color=red>CFileOperationsStep::ProcessFileOperationsL() Unknown command or corrupt command line %S </font>"), &operationLinePtr);
       
  1204 				User::Leave(KErrArgument);
       
  1205 				}
       
  1206 			}
       
  1207 		else //unknown command or corrupt command line (ie: missing command)
       
  1208 			{
       
  1209 			ERR_PRINTF2(_L("<font color=red>CFileOperationsStep::ProcessFileOperationsL() Unknown command or corrupt command line %S </font>"), &operationLinePtr);
       
  1210 			User::Leave(KErrArgument);
       
  1211 			}
       
  1212 		
       
  1213 		if(!ignoreErrors)
       
  1214 			{
       
  1215 			User::LeaveIfError(err);
       
  1216 			}
       
  1217 		}
       
  1218 	}
       
  1219 
       
  1220 TPtrC CFileOperationsStep::GetNextCommandLineParameterL(const TDesC& aLine, TInt& aNextAvailablePos)
       
  1221 	{
       
  1222 	TInt lineLength=aLine.Length();
       
  1223 	TInt startpos=0, stoppos=0;
       
  1224 	TUint spaceChar=' ', tabChar='\t';
       
  1225 	
       
  1226 	if(lineLength==0 || aNextAvailablePos>=lineLength) //empty command line or next position is beyond the end of line
       
  1227 		{
       
  1228 		User::Leave(KErrArgument);
       
  1229 		}
       
  1230 
       
  1231 	for(startpos=aNextAvailablePos; startpos<lineLength; ++startpos)
       
  1232 		{
       
  1233 		if(aLine[startpos]!=spaceChar && aLine[startpos]!=tabChar) //skip initial spaces
       
  1234 			break;
       
  1235 		}
       
  1236 	
       
  1237 	if(startpos==lineLength) //line contains only spaces
       
  1238 		{
       
  1239 		User::Leave(KErrArgument);
       
  1240 		}
       
  1241 	
       
  1242 	for(stoppos=startpos; stoppos<lineLength; ++stoppos)
       
  1243 		{
       
  1244 		if(aLine[stoppos]==spaceChar || aLine[startpos]==tabChar) //skip all non space characters (ie: find the end of string)
       
  1245 			break;
       
  1246 		}
       
  1247 	aNextAvailablePos=stoppos;
       
  1248 	return TPtrC(aLine.Mid(startpos, stoppos-startpos));
       
  1249 	
       
  1250 	}
       
  1251 
       
  1252 //----------------------------------------
       
  1253 			
       
  1254 CFileModeTestStep::CFileModeTestStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
  1255 	{
       
  1256 	SetTestStepName(KFileModeTestStep);
       
  1257 	}
       
  1258 
       
  1259 void CFileModeTestStep::ImplTestStepPreambleL()
       
  1260 	{
       
  1261 	INFO_PRINTF1(_L("CFileModeTestStep Preamble"));
       
  1262 	SetTestStepResult(EPass);
       
  1263 	
       
  1264 	}
       
  1265 
       
  1266 void CFileModeTestStep::ImplTestStepL()
       
  1267 	{
       
  1268 	INFO_PRINTF1(_L("CFileModeTestStep in test step"));
       
  1269 	TestCase1L();
       
  1270 	TestCase2L();
       
  1271 	TestCase3L();
       
  1272 	}
       
  1273 
       
  1274 void CFileModeTestStep::TestCase1L()
       
  1275 	{
       
  1276 	INFO_PRINTF1(_L("CFileModeTestStep test case 1"));
       
  1277 	
       
  1278 /*
       
  1279  This tescase tests that the file -that's created by the server and whose handle is returned to the client- is writable by the client 
       
  1280  */	
       
  1281 	TFileMode fileModes[] = {
       
  1282 			EFileShareAny,
       
  1283 			EFileShareReadersOrWriters,
       
  1284 			EFileShareExclusive
       
  1285 			};
       
  1286 
       
  1287 	const TDesC* fileModeStrings[] = {
       
  1288 				&KEFileShareAny,
       
  1289 				&KEFileShareReadersOrWriters,
       
  1290 				&KEFileShareExclusive
       
  1291 				};
       
  1292 	
       
  1293 	TFileMode fileSubModes[] = {
       
  1294 			EFileStream,
       
  1295 			EFileStreamText,
       
  1296 			EFileWrite,
       
  1297 			EFileWriteBuffered,
       
  1298 			EFileWriteDirectIO,
       
  1299 			};
       
  1300 
       
  1301 	const TDesC* fileSubModeStrings[] = {
       
  1302 			&KEFileStream,
       
  1303 			&KEFileStreamText,
       
  1304 			&KEFileWrite,
       
  1305 			&KEFileWriteBuffered,
       
  1306 			&KEFileWriteDirectIO,
       
  1307 			};
       
  1308 
       
  1309 	//get transaction slot from ini
       
  1310 	TInt trSlot = GetTransactionSlotFromConfigL();
       
  1311 
       
  1312 	//get the target file path from ini
       
  1313 	TPtrC filePathInIni = GetTargetFilePathFromConfigL();
       
  1314 	TParsePtrC parse(filePathInIni);
       
  1315 	
       
  1316 	//the handle to the newly created file
       
  1317 	RFile newFile;
       
  1318 	//register newly created file
       
  1319 	HBufC *bufPtr1=CreateDataForNewFileCreatedByStsServerLC(KCreateNewFileStep, ENewPermanentFile);
       
  1320 	HBufC *bufPtr2=CreateDataForNewFileCreatedByStsServerLC(KCreateTemporaryStep, ENewTemporaryFile);
       
  1321 	HBufC *bufPtr3=CreateDataForNewFileCreatedByStsServerLC(KOverwriteStep, ENewPermanentFile);
       
  1322 	
       
  1323 	HBufC* targetFileName = HBufC::NewLC(KMaxFileName);
       
  1324 	TPtr fileNameBasePtr(targetFileName->Des());
       
  1325 	fileNameBasePtr.Append(parse.DriveAndPath());
       
  1326 	fileNameBasePtr.Append(parse.Name());
       
  1327 	TPtr fileNameFullPtr(fileNameBasePtr);
       
  1328 	
       
  1329 	TInt counter(0);
       
  1330 	for(TInt mode=0; mode<sizeof(fileModes)/sizeof(TFileMode); ++mode)
       
  1331 		{
       
  1332 		for(TInt submode=0; submode<sizeof(fileSubModes)/sizeof(TFileMode); ++submode, ++counter)
       
  1333 			{
       
  1334 			TInt err=KErrNone;
       
  1335 			CleanupClosePushL(newFile);
       
  1336 
       
  1337 			TFileMode fileMode(static_cast<TFileMode>(fileModes[mode]|fileSubModes[submode]));
       
  1338 			
       
  1339 			//test RStsSession::CreateNewL()
       
  1340 			fileNameFullPtr.Set(fileNameBasePtr);
       
  1341 			fileNameFullPtr.Append(_L("_createnew"));
       
  1342 			fileNameFullPtr.AppendNum(counter);
       
  1343 			fileNameFullPtr.Append(parse.Ext());
       
  1344 			TRAP(err,
       
  1345 					Server().CreateNewL(trSlot, fileNameFullPtr, newFile, fileMode);
       
  1346 					WriteToFileL(newFile, *bufPtr1);
       
  1347 					);
       
  1348 			newFile.Close();
       
  1349 			if(err!=KErrNone)
       
  1350 				{
       
  1351 				ERR_PRINTF4(_L("The file -created by RStsSession::CreateNewL()- cannot be written into when the creation mode is set to  %S %S %S"), &fileModeStrings[mode], &KORSign, &fileSubModeStrings[submode]);
       
  1352 				}
       
  1353 	
       
  1354 			//test RStsSession::CreateTemporaryL()
       
  1355 			fileNameFullPtr.Set(fileNameBasePtr);
       
  1356 			fileNameFullPtr.Append(_L("_createtemp"));
       
  1357 			fileNameFullPtr.AppendNum(counter);
       
  1358 			fileNameFullPtr.Append(parse.Ext());
       
  1359 			TRAP(err,
       
  1360 					Server().CreateTemporaryL(trSlot, fileNameFullPtr, newFile, fileMode);
       
  1361 					WriteToFileL(newFile, *bufPtr2);
       
  1362 					);
       
  1363 			newFile.Close();
       
  1364 			if(err!=KErrNone)
       
  1365 				{
       
  1366 				ERR_PRINTF4(_L("The file -created by RStsSession::CreateTemporaryL()- cannot be written into when the creation mode is set to  %S %S %S"), &fileModeStrings[mode], &KORSign, &fileSubModeStrings[submode]);
       
  1367 				}
       
  1368 			
       
  1369 			//test RStsSession::OverwriteL()
       
  1370 			fileNameFullPtr.Set(fileNameBasePtr);
       
  1371 			fileNameFullPtr.Append(_L("_overwrite"));
       
  1372 			fileNameFullPtr.AppendNum(counter);
       
  1373 			fileNameFullPtr.Append(parse.Ext());
       
  1374 			TRAP(err,
       
  1375 					Server().OverwriteL(trSlot, fileNameFullPtr, newFile, fileMode);
       
  1376 					WriteToFileL(newFile, *bufPtr3);
       
  1377 					);
       
  1378 			newFile.Close();
       
  1379 			if(err!=KErrNone)
       
  1380 				{
       
  1381 				ERR_PRINTF4(_L("The file -created by RStsSession::OverwriteL()- cannot be written into when the creation mode is set to  %S %S %S"), &fileModeStrings[mode], &KORSign, &fileSubModeStrings[submode]);
       
  1382 				}
       
  1383 
       
  1384 			CleanupStack::PopAndDestroy(); //newFile
       
  1385 			}//inner for
       
  1386 		}//outer for
       
  1387 	CleanupStack::PopAndDestroy(4, bufPtr1); //bufPtr
       
  1388 	}
       
  1389 
       
  1390 void CFileModeTestStep::TestCase2L()
       
  1391 	{
       
  1392 	INFO_PRINTF1(_L("CFileModeTestStep test case 2"));
       
  1393 /*
       
  1394  According to the TFileMode documentation a file cannot be opened for writing if using a share mode flag of EFileShareReadersOnly
       
  1395  */
       
  1396 	//get transaction slot from ini
       
  1397 	TInt trSlot = GetTransactionSlotFromConfigL();
       
  1398 
       
  1399 	//get the target file path from ini
       
  1400 	TPtrC filePathInIni = GetTargetFilePathFromConfigL();
       
  1401 	
       
  1402 	
       
  1403 	TFileMode fileMode(static_cast<TFileMode>(EFileShareReadersOnly|EFileWrite));
       
  1404 	RFile newFile;
       
  1405 	TInt err;
       
  1406 
       
  1407 	TRAP(err, Server().CreateNewL(trSlot, filePathInIni, newFile, fileMode));
       
  1408 	newFile.Close();
       
  1409 	if(err!=KErrArgument )
       
  1410 		{
       
  1411 		ERR_PRINTF1(_L("RStsSession::CreateNewL() returned KErrNone when an error condition was set (ie: newFileMode = EFileShareReadersOnly|EFileWrite) and KErrArgument was expected"));
       
  1412 		SetTestStepResult(EFail);
       
  1413 		}
       
  1414 	TRAP(err, Server().CreateTemporaryL(trSlot, filePathInIni, newFile, fileMode));
       
  1415 	newFile.Close();
       
  1416 	if(err!=KErrArgument )
       
  1417 		{
       
  1418 		ERR_PRINTF1(_L("RStsSession::CreateTemporaryL() returned KErrNone when an error condition was set (ie: newFileMode = EFileShareReadersOnly|EFileWrite) and KErrArgument was expected"));
       
  1419 		SetTestStepResult(EFail);
       
  1420 		}
       
  1421 	TRAP(err, Server().OverwriteL(trSlot, filePathInIni, newFile, fileMode));
       
  1422 	newFile.Close();
       
  1423 	if(err!=KErrArgument )
       
  1424 		{
       
  1425 		ERR_PRINTF1(_L("RStsSession::OverwriteL() returned KErrNone when an error condition was set (ie: newFileMode = EFileShareReadersOnly|EFileWrite) and KErrArgument was expected"));
       
  1426 		SetTestStepResult(EFail);
       
  1427 		}
       
  1428 	}
       
  1429 
       
  1430 void CFileModeTestStep::TestCase3L()
       
  1431 	{
       
  1432 	INFO_PRINTF1(_L("CFileModeTestStep test case 3"));
       
  1433 	
       
  1434 /*
       
  1435  This tescase tests that the file -that's created by the server and whose handle is returned to the client- is writable by others (obviously depending on the share mode) 
       
  1436  */	
       
  1437 	TFileMode fileModes[] = {
       
  1438 			EFileShareAny,
       
  1439 			EFileShareReadersOrWriters,
       
  1440 			EFileShareExclusive
       
  1441 			};
       
  1442 
       
  1443 	const TDesC* fileModeStrings[] = {
       
  1444 				&KEFileShareAny,
       
  1445 				&KEFileShareReadersOrWriters,
       
  1446 				&KEFileShareExclusive
       
  1447 				};
       
  1448 	
       
  1449 	TFileMode fileSubModes[] = {
       
  1450 			EFileStream,
       
  1451 			EFileStreamText,
       
  1452 			EFileWrite,
       
  1453 			EFileWriteBuffered,
       
  1454 			EFileWriteDirectIO,
       
  1455 			};
       
  1456 
       
  1457 	const TDesC* fileSubModeStrings[] = {
       
  1458 			&KEFileStream,
       
  1459 			&KEFileStreamText,
       
  1460 			&KEFileWrite,
       
  1461 			&KEFileWriteBuffered,
       
  1462 			&KEFileWriteDirectIO,
       
  1463 			};
       
  1464 
       
  1465 	//get transaction slot from ini
       
  1466 	TInt trSlot = GetTransactionSlotFromConfigL();
       
  1467 
       
  1468 	//get the target file path from ini
       
  1469 	TPtrC filePathInIni = GetTargetFilePathFromConfigL();
       
  1470 	TParsePtrC parse(filePathInIni);
       
  1471 	
       
  1472 	//register newly created file
       
  1473 	HBufC *bufPtr1=CreateDataForNewFileCreatedByStsServerLC(KCreateNewFileStep, ENewPermanentFile);
       
  1474 	HBufC *bufPtr2=CreateDataForNewFileCreatedByStsServerLC(KCreateTemporaryStep, ENewTemporaryFile);
       
  1475 	HBufC *bufPtr3=CreateDataForNewFileCreatedByStsServerLC(KOverwriteStep, ENewPermanentFile);
       
  1476 	
       
  1477 	HBufC* targetFileName = HBufC::NewLC(KMaxFileName);
       
  1478 	
       
  1479 	RFs fs;
       
  1480 	User::LeaveIfError(fs.Connect());
       
  1481 	CleanupClosePushL(fs);
       
  1482 	
       
  1483 	TPtr fileNameBasePtr(targetFileName->Des());
       
  1484 	fileNameBasePtr.Append(parse.DriveAndPath());
       
  1485 	fileNameBasePtr.Append(parse.Name());
       
  1486 	TPtr fileNameFullPtr(fileNameBasePtr);
       
  1487 	
       
  1488 	TInt counter(100);
       
  1489 	for(TInt mode=0; mode<sizeof(fileModes)/sizeof(TFileMode); ++mode)
       
  1490 		{
       
  1491 		for(TInt submode=0; submode<sizeof(fileSubModes)/sizeof(TFileMode); ++submode, ++counter)
       
  1492 			{
       
  1493 			//the handle to the newly created file
       
  1494 			RFile newFile;
       
  1495 			CleanupClosePushL(newFile);
       
  1496 			//handle repsresting some other process/application/etc.. who wants to have access to the file
       
  1497 			RFile otherFileClient;
       
  1498 			CleanupClosePushL(otherFileClient);
       
  1499 
       
  1500 			TFileMode fileMode(static_cast<TFileMode>(fileModes[mode]|fileSubModes[submode]));
       
  1501 			TInt otherFileClientError=KErrNone;
       
  1502 			
       
  1503 			//create new file interface
       
  1504 			fileNameFullPtr.Set(fileNameBasePtr);
       
  1505 			fileNameFullPtr.Append(_L("_createnew"));
       
  1506 			fileNameFullPtr.AppendNum(counter);
       
  1507 			fileNameFullPtr.Append(parse.Ext());
       
  1508 			Server().CreateNewL(trSlot, fileNameFullPtr, newFile, fileMode); //create new file
       
  1509 			otherFileClientError=otherFileClient.Open(fs, fileNameFullPtr, EFileShareAny|EFileWrite); //test if others can have acces to the file
       
  1510 			if(otherFileClientError==KErrNone)
       
  1511 				TRAP(otherFileClientError, WriteToFileL(otherFileClient, *bufPtr1));
       
  1512 			if(fileModes[mode]!=EFileShareExclusive && otherFileClientError!=KErrNone)
       
  1513 				{
       
  1514 				ERR_PRINTF3(_L("File %S created by RStsSession::CreateNewL() cannot be written by other clients using EFileShareAny|EFileWrite filemode. Error code: %d"), &fileNameFullPtr, otherFileClientError);
       
  1515 				SetTestStepResult(EFail);//original share mode is other than EFileShareExclusive so there should be no error reported when writing to the file by others
       
  1516 				}
       
  1517 			else if(fileModes[mode]==EFileShareExclusive && otherFileClientError==KErrNone)
       
  1518 				{
       
  1519 				ERR_PRINTF2(_L("File %S -created by RStsSession::CreateNewL() using EFileShareExclusive share mode- can be written by other clients using EFileShareAny|EFileWrite filemode."), &fileNameFullPtr);
       
  1520 				SetTestStepResult(EFail);//original share mode is EFileShareExclusive so others should not be allowed to have access to it
       
  1521 				}
       
  1522 			WriteToFileL(newFile, *bufPtr1);
       
  1523 			newFile.Close();
       
  1524 			otherFileClient.Close();
       
  1525 			
       
  1526 
       
  1527 			//create new temp file interface
       
  1528 			fileNameFullPtr.Set(fileNameBasePtr);
       
  1529 			fileNameFullPtr.Append(_L("_createtemp"));
       
  1530 			fileNameFullPtr.AppendNum(counter);
       
  1531 			fileNameFullPtr.Append(parse.Ext());
       
  1532 			Server().CreateTemporaryL(trSlot, fileNameFullPtr, newFile, fileMode);
       
  1533 			otherFileClientError=otherFileClient.Open(fs, fileNameFullPtr, EFileShareAny|EFileWrite); //test if others can have acces to the file
       
  1534 			if(otherFileClientError==KErrNone)
       
  1535 				TRAP(otherFileClientError, WriteToFileL(otherFileClient, *bufPtr1));
       
  1536 			if(fileModes[mode]!=EFileShareExclusive && otherFileClientError!=KErrNone)
       
  1537 				{
       
  1538 				ERR_PRINTF3(_L("File %S created by RStsSession::CreateTemporaryL() cannot be written by other clients using EFileShareAny|EFileWrite filemode. Error code: %d"), &fileNameFullPtr, otherFileClientError);
       
  1539 				SetTestStepResult(EFail);//original share mode is other than EFileShareExclusive so there should be no error reported when writing to the file by others
       
  1540 				}
       
  1541 			else if(fileModes[mode]==EFileShareExclusive && otherFileClientError==KErrNone)
       
  1542 				{
       
  1543 				ERR_PRINTF2(_L("File %S -created by RStsSession::CreateTemporaryL() using EFileShareExclusive share mode- can be written by other clients using EFileShareAny|EFileWrite filemode."), &fileNameFullPtr);
       
  1544 				SetTestStepResult(EFail);//original share mode is EFileShareExclusive so others should not be allowed to have access to it
       
  1545 				}
       
  1546 			WriteToFileL(newFile, *bufPtr2);
       
  1547 			newFile.Close();
       
  1548 			otherFileClient.Close();
       
  1549 			
       
  1550 			//overwrite file interface
       
  1551 			fileNameFullPtr.Set(fileNameBasePtr);
       
  1552 			fileNameFullPtr.Append(_L("_overwrite"));
       
  1553 			fileNameFullPtr.AppendNum(counter);
       
  1554 			fileNameFullPtr.Append(parse.Ext());
       
  1555 			Server().OverwriteL(trSlot, fileNameFullPtr, newFile, fileMode);
       
  1556 			otherFileClientError=otherFileClient.Open(fs, fileNameFullPtr, EFileShareAny|EFileWrite); //test if others can have acces to the file
       
  1557 			if(otherFileClientError==KErrNone)
       
  1558 				TRAP(otherFileClientError, WriteToFileL(otherFileClient, *bufPtr1));
       
  1559 			if(fileModes[mode]!=EFileShareExclusive && otherFileClientError!=KErrNone)
       
  1560 				{
       
  1561 				ERR_PRINTF3(_L("File %S created by RStsSession::OverwriteL() cannot be written by other clients using EFileShareAny|EFileWrite filemode. Error code: %d"), &fileNameFullPtr, otherFileClientError);
       
  1562 				SetTestStepResult(EFail);//original share mode is other than EFileShareExclusive so there should be no error reported when writing to the file by others
       
  1563 				}
       
  1564 			else if(fileModes[mode]==EFileShareExclusive && otherFileClientError==KErrNone)
       
  1565 				{
       
  1566 				ERR_PRINTF2(_L("File %S -created by RStsSession::OverwriteL() using EFileShareExclusive share mode- can be written by other clients using EFileShareAny|EFileWrite filemode."), &fileNameFullPtr);
       
  1567 				SetTestStepResult(EFail);//original share mode is EFileShareExclusive so others should not be allowed to have access to it
       
  1568 				}
       
  1569 			WriteToFileL(newFile, *bufPtr3);
       
  1570 			newFile.Close();
       
  1571 			otherFileClient.Close();
       
  1572 
       
  1573 			CleanupStack::PopAndDestroy(2, &newFile); //newFile, otherFileClient
       
  1574 			}//inner for
       
  1575 		}//outer for
       
  1576 	CleanupStack::PopAndDestroy(5, bufPtr1); //bufPtr1, bufPtr2, bufPtr3, targetFileName, fs
       
  1577 	}
       
  1578 
       
  1579 void CFileModeTestStep::ImplTestStepPostambleL()
       
  1580 	{
       
  1581 	INFO_PRINTF1(_L("CFileModeTestStep Postamble"));
       
  1582 	
       
  1583 	}
       
  1584 //----------------------------------------
       
  1585 
       
  1586 //----------------------------------------
       
  1587 
       
  1588 CCreateLongFileNameTestStep::CCreateLongFileNameTestStep(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
       
  1589 	{
       
  1590 	// Call base class method to set up the human readable name for logging
       
  1591 	SetTestStepName(KCreateLongFileNameTestStep);
       
  1592 	}
       
  1593 
       
  1594 void CCreateLongFileNameTestStep::ImplTestStepPreambleL()
       
  1595 /**
       
  1596  @return - void code
       
  1597  Override of base class virtual
       
  1598  */
       
  1599 	{
       
  1600 	INFO_PRINTF1(_L("CCreateLongFileNameTestStep Preamble"));
       
  1601 	SetTestStepResult(EPass);
       
  1602 	}
       
  1603 
       
  1604 void CCreateLongFileNameTestStep::ImplTestStepL()
       
  1605 /**
       
  1606  @return - void code
       
  1607  Override of base class pure virtual
       
  1608  */
       
  1609 	{
       
  1610 	INFO_PRINTF1(_L("CCreateLongFileNameTestStep in test step"));
       
  1611 
       
  1612 	//get transaction slot from ini
       
  1613 	TInt trSlot = GetTransactionSlotFromConfigL();
       
  1614 	
       
  1615 	//get the target file path from ini
       
  1616 	TPtrC filePathInIni = GetTargetFilePathFromConfigL();
       
  1617 	
       
  1618 	TFileMode fileMode(static_cast<TFileMode>(EFileShareExclusive|EFileWrite));
       
  1619 	
       
  1620 	//the handle to the newly created file
       
  1621 	// The file handle doesn't get actually created as it is too long. Hence
       
  1622 	// pushing onto the closecleanup stack is not necessary.
       
  1623 	RFile newFile;
       
  1624 
       
  1625 	//register newly created file
       
  1626 	TRAP_IGNORE(Server().CreateNewL(trSlot, filePathInIni, newFile, fileMode));
       
  1627 
       
  1628 	//roolback transaction
       
  1629 	Server().RollBackL(trSlot);
       
  1630 	
       
  1631 	TBuf<KBufSize> opBuf(GetStringFromConfigL(KBaseDir));
       
  1632 	// checking for the existence of the base directory. If the base directory
       
  1633 	// is existing then it implies that rollback was not successful. Hence return
       
  1634 	// failure. Otherwise return success.
       
  1635 	if (FileExistsL(opBuf))
       
  1636 		{
       
  1637 		SetTestStepResult(EFail);
       
  1638 		}
       
  1639 	else
       
  1640 		{
       
  1641 		SetTestStepResult(EPass);
       
  1642 		}
       
  1643 	}
       
  1644 
       
  1645 void CCreateLongFileNameTestStep::ImplTestStepPostambleL()
       
  1646 /**
       
  1647  @return - void code
       
  1648  Override of base class virtual
       
  1649  */
       
  1650 	{
       
  1651 	INFO_PRINTF1(_L("CCreateLongFileNameTestStep Postamble"));
       
  1652 	}
       
  1653 
       
  1654 //----------------------------------------