diff -r 000000000000 -r af10295192d8 networkingtestandutils/networkingintegrationtest/IntegrationTestUtils/TestUtils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkingtestandutils/networkingintegrationtest/IntegrationTestUtils/TestUtils.cpp Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,379 @@ +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// This contains CTestCase which is the base class for all the TestCase DLLs +// +// + +/** + @file TestUtils.cpp +*/ + +// EPOC includes +#include + +#include + +// Test system includes +#include "../inc/Log.h" +#include "../inc/TestUtils.h" + +#include + +EXPORT_C CTestUtils * CTestUtils::NewL( CLog * aLogSystem) +/** +Static constructor for CTestUtils. + +@param aLogSystem A pointer to the test framework logging system. +*/ +{ + CTestUtils * self = new(ELeave) CTestUtils; + CleanupStack::PushL(self); + self->Construct( aLogSystem); + CleanupStack::Pop(); + return self; +} + +void CTestUtils::Construct( CLog * aLogSystem) +/** +Second phase constructor for CTestUtils. + +@param aLogSystem A pointer to the test framework logging system. +*/ +{ + iLogSystem = aLogSystem; +} + +EXPORT_C void CTestUtils::RunUtils( const TDesC& aText ) +/** +External interface for run utils. + +@param aText Text specifying the utility required and any parameters. +@note This traps any leaves that may occur in the Test utilities. +*/ + { + // now execute util inside a trap + TRAPD( r, RunUtilsL( aText ) ) + + if (r!= KErrNone) + { + iLogSystem->Log(_L("Warning test utils :%S left!"), &aText ); + } + } + +void CTestUtils::RunUtilsL( const TDesC& aText ) +/** +Run a test utility. + +@param aText Text specifying the utility required and any parameters. +@note This method can leave. +*/ + { + // use Tlex to decode the cmd line + TLex lex(aText); + + // start at the begining + TPtrC token=lex.NextToken(); + + // step over the keyword + token.Set(lex.NextToken()); + + // check which util required, then get any required parmeters + if ( token.FindF( _L("ChangeDir")) != KErrNotFound ) + { + // get the parameter + token.Set(lex.NextToken()); + + ChangeDirL(token); + } + else if ( token.FindF( _L("CopyFile")) != KErrNotFound ) + { + // get the parameter + TPtrC file1=lex.NextToken(); + TPtrC file2=lex.NextToken(); + + CopyFileL(file1, file2); + } + else if ( token.FindF( _L("MkDir")) != KErrNotFound ) + { + // get the parameter + token.Set(lex.NextToken()); + + MakedirL(token); + } + else if ( token.FindF( _L("delete")) != KErrNotFound ) + { + // get the parameter + token.Set(lex.NextToken()); + + DeleteFileL(token); + } + else if ( token.FindF( _L("makereadwrite")) != KErrNotFound ) + { + // get the parameter + token.Set(lex.NextToken()); + + MakeReadWriteL(token); + } + else + { + iLogSystem->Log( _L("Failed to decode run_utils command %S"), &aText ); + } + } + + +void CTestUtils::ChangeDirL (const TDesC& aDirname) +/** +Change current working directory. +This method can leave. + +@param aDirname The name of the target directory. +@note This defaults to the C: drive. +*/ + { + iLogSystem->Log( _L("\'ChangeDir %S\' failed, functionality not supported in EKA2"), &aDirname); + _LIT(KChangeDirPanic, "ChangeDir"); + User::Panic(KChangeDirPanic, KErrNotSupported); + } + +void CTestUtils::MakedirL (const TDesC& aDirname) +/** +Make new directory. +This method can leave. + +@param aDirname The name of the new directory to be created. +@note This defaults to the C: drive. +*/ + { + // parse the filenames + _LIT(KDefault,"C:\\"); + TParse FullFileName; + TInt returnCode = FullFileName.Set( aDirname, &KDefault, NULL ); + if ( returnCode != KErrNone ) + { + TPtrC Errortxt = CLog::EpocErrorToText(returnCode); + iLogSystem->Log( _L("Failed decode full path name %S - %S"), + &FullFileName.FullName(), + &Errortxt ); + } + + // create a fileserver + RFs FileSystem; + + // connect to file server + returnCode=FileSystem.Connect(); + if ( returnCode != KErrNone ) + return; + + // now create the new directory + returnCode = FileSystem.MkDir( FullFileName.DriveAndPath() ); + + // check for errors + if (returnCode == KErrNone ) + { + // display full (including path) file name + iLogSystem->Log( _L("made directory %S"), &FullFileName.FullName() ); + } + else + { + TPtrC Errortxt = CLog::EpocErrorToText(returnCode); + + iLogSystem->Log( _L("error %S making dir %S"), + &Errortxt, + &FullFileName.FullName() ); + } + + } + +void CTestUtils::CopyFileL (const TDesC& anOld,const TDesC& aNew) +/** +Copy a file +This method can leave. + +@param anOld The source name of file to be copied. +@param aNew The target name of file to be copied. +@note This defaults to the C: drive. +*/ + { + iLogSystem->Log( _L("copy file from %S to %S"), &anOld, &aNew ); + + // create a fileserver + RFs FileSystem; + + // connect to file server + TInt returnCode=FileSystem.Connect(); + + // create a file manager + CFileMan * FileMan = CFileMan::NewL( FileSystem ); + if (returnCode != KErrNone ) + { + // error opening FileManager + iLogSystem->Log( _L("error opening file manager")); + } + + // parse the filenames + _LIT(KRelated,"C:\\"); + TParse Source; + returnCode = Source.Set( anOld, &KRelated, NULL ); + if ( returnCode != KErrNone ) + { + TPtrC Errortxt = CLog::EpocErrorToText(returnCode); + iLogSystem->Log( _L("Failed to parse %S - %S"), + &anOld, + &Errortxt ); + } + + // parse the filenames + TParse Target; + returnCode = Target.Set( aNew, &KRelated, NULL ); + if ( returnCode != KErrNone ) + { + TPtrC Errortxt = CLog::EpocErrorToText(returnCode); + iLogSystem->Log( _L("Failed to parse %S - %S"), + &aNew, + &Errortxt ); + } + + // do the copy + returnCode=FileMan->Copy(Source.FullName(), + Target.FullName(), + CFileMan::EOverWrite ); + + if ( returnCode != KErrNone ) + { + TPtrC CopyErrortxt = CLog::EpocErrorToText(returnCode); + + iLogSystem->Log( _L("Failed to copy %S to %S - %S"), + &Source.FullName(), + &Target.FullName(), + &CopyErrortxt ); + } + else + { + iLogSystem->Log( _L("Copied file from %S to %S"), + &Source.FullName(), + &Target.FullName() ); + + } + + // close the file system + FileSystem.Close(); + + delete FileMan; + } + +void CTestUtils::DeleteFileL (const TDesC& aFile) +/** +Delete a file +This method can leave. + +@param aFile Name of file to be deleted. +@note This defaults to the C: drive. +*/ + { + // parse the filenames + _LIT(KDefault,"C:\\"); + TParse FullFileName; + TInt returnCode = FullFileName.Set( aFile, &KDefault, NULL ); + if ( returnCode != KErrNone ) + { + TPtrC Errortxt = CLog::EpocErrorToText(returnCode); + iLogSystem->Log( _L("Failed decode full path name %S - %S"), + &FullFileName.FullName(), + &Errortxt ); + } + + + // create a fileserver + RFs FileSystem; + + // connect to file server + returnCode=FileSystem.Connect(); + if ( returnCode != KErrNone ) + { + iLogSystem->Log( _L("error connecting to FileSystem") ); + return; + } + + // now do the delete + returnCode = FileSystem.Delete(FullFileName.FullName()); + + // check for errors + if (returnCode == KErrNone ) + { + // display full (including path) file name + iLogSystem->Log( _L("deleted %S"), &FullFileName.FullName() ); + } + else + { + TPtrC Errortxt = CLog::EpocErrorToText(returnCode); + + iLogSystem->Log( _L("error %S deleting %S"), + &Errortxt, + &FullFileName.FullName() ); + } + + } + +void CTestUtils::MakeReadWriteL (const TDesC& aFile) +/** +Enable a file for read and write. +This method can leave. + +@param aFile Name of file. +@note This defaults to the C: drive. +*/ + { + // parse the filenames + _LIT(KDefault,"C:\\"); + TParse FullFileName; + TInt returnCode = FullFileName.Set( aFile, &KDefault, NULL ); + if ( returnCode != KErrNone ) + { + TPtrC Errortxt = CLog::EpocErrorToText(returnCode); + iLogSystem->Log( _L("Failed decode full path name %S - %S"), + &FullFileName.FullName(), + &Errortxt ); + } + + + // create a fileserver + RFs FileSystem; + + // connect to file server + returnCode=FileSystem.Connect(); + if ( returnCode != KErrNone ) + { + iLogSystem->Log( _L("error connecting to FileSystem") ); + return; + } + + // now do the delete + returnCode = FileSystem.SetAtt(FullFileName.FullName(),0, KEntryAttReadOnly ); + + // check for errors + if (returnCode == KErrNone ) + { + // display full (including path) file name + iLogSystem->Log( _L("Made %S RW"), &FullFileName.FullName() ); + } + else + { + TPtrC Errortxt = CLog::EpocErrorToText(returnCode); + + iLogSystem->Log( _L("error %S making %S RW"), + &Errortxt, + &FullFileName.FullName() ); + } + + }