--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerprotocols/httptransportfw/Test/T_HttpIntegration/TEngine.h Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,366 @@
+// Copyright (c) 2002-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:
+// $Header$
+//
+//
+
+#include <e32base.h>
+#include <e32cons.h>
+#include <f32file.h>
+
+//-----------------------------------------------------------------------------
+
+#ifndef __TENGINE_H__
+#define __TENGINE_H__
+
+//-----------------------------------------------------------------------------
+
+#include "GT0149.h"
+#include "ECommandIDs.h"
+#include "CPile.h"
+#include "CCmdFamily.h"
+#include "CCmdFile.h"
+#include "CLogFile.h"
+#include "CIFControl.h"
+#include "CConsoleReader.h"
+#include "CCatalogue.h"
+#include "CObjCatalogue.h"
+#include "CCmdBase.h"
+
+//-----------------------------------------------------------------------------
+// Forward declare Templated Classes
+
+template<class T> class CPile;
+
+#if !defined(TEMPLATED_CATALOGUE)
+
+class CCatalogue;
+
+#else
+
+template<class T> class CCatalogue;
+
+#endif
+
+//-----------------------------------------------------------------------------
+
+class TTestMachineOverflow : public TDes16Overflow
+{
+public:
+ virtual void Overflow( TDes16& aDes );
+};
+
+//-----------------------------------------------------------------------------
+
+class CTEngine : public CActive
+{
+public: // Constructors and destructors
+
+ // Constructors with and without console.
+ static CTEngine* NewL ( CConsoleBase* aConsole = NULL );
+ static CTEngine* NewLC( CConsoleBase* aConsole = NULL );
+
+ // Destructor.
+ ~CTEngine();
+
+private: // Constructors and destructors
+
+ // Private constructor.
+ void ConstructL();
+
+ // Default constructor is not there.
+ CTEngine(CConsoleBase *aConsole);
+
+public: // New functions
+
+ // Set command family (the known commands).
+ void SetCmdFamily(CCmdFamily *);
+
+ // Console is enabled?
+ TBool ConsoleEnabled();
+
+ // Disable console i/o.
+ void DisableConsole();
+
+ // Enable console i/o.
+ void EnableConsole();
+
+ // Get console, NULL if is not available.
+ CConsoleBase *Console() const;
+
+ // Unformatted Write to console (if enabled).
+ void Write (const TDesC &);
+ void Writeln(const TDesC &);
+ void Writeln(); // new-line
+
+ // Formatted Printf to console (if enabled).
+ void Printf (TRefByValue<const TDesC> aFmt, ...);
+ void Printf (TRefByValue<const TDesC> aFmt, VA_LIST& aList);
+ void Printfln(TRefByValue<const TDesC> aFmt, ...);
+ void Printfln(TRefByValue<const TDesC> aFmt, VA_LIST& aList);
+
+ // Wait for a key press
+ void Pause(const TDesC& aPrompt);
+
+ // Hold for an interval
+ void Hold(TTimeIntervalMicroSeconds32 aInterval);
+
+ // Set and Get the command file path. SetCmdPath returns
+ // KErrArgument for illegal aPath param.
+ TInt SetCmdPath(const TDesC &);
+ TPtrC CmdPath() const;
+
+ TPtrC FileName() const;
+
+ // Call command file and Get the present command file.
+ TInt CallCmdFile(const TDesC &);
+ TInt CallCmdFile(const TDesC &, const TDesC &);
+ CCmdFile *CmdFile();
+
+ // Close the present command file or close them all.
+ TInt CloseCmdFile();
+ void CloseCmdFiles();
+
+ // Set and Get the log file path. SetLogPath returns
+ // KErrArgument for illegal aPath param.
+ TInt SetLogPath(const TDesC &);
+ TPtrC LogPath() const;
+
+ // Open a log file and Get the present log file.
+ TInt OpenLogFile(const TDesC &);
+ CLogFile *LogFile();
+
+ // Close the present log file or close them all.
+ TInt CloseLogFile();
+ void CloseLogFiles();
+
+ // Unformatted Write to the log (if there's one).
+ void LogWrite (const TDesC &);
+ void LogWriteln(const TDesC &);
+ void LogWriteln();
+
+ // Formatted Printf to the log (if there's one).
+ void LogPrintf (TRefByValue<const TDesC> aFmt, ... );
+ void LogPrintf (TRefByValue<const TDesC> aFmt, VA_LIST &);
+ void LogPrintfln(TRefByValue<const TDesC> aFmt, ... );
+ void LogPrintfln(TRefByValue<const TDesC> aFmt, VA_LIST &);
+
+ // Standard message output. A message you write goes to the log
+ // if there is one open. A message is printed to the display as
+ // well, except when running a command file with echo mode off.
+ void MsgWrite (const TDesC& aText);
+ void MsgWriteln (const TDesC& aText);
+ void MsgWriteln ();
+ void MsgPrintf (TRefByValue<const TDesC> aFmt, ...);
+ void MsgPrintf (TRefByValue<const TDesC> aFmt, VA_LIST& aList);
+ void MsgPrintfln(TRefByValue<const TDesC> aFmt, ...);
+ void MsgPrintfln(TRefByValue<const TDesC> aFmt, VA_LIST& aList);
+
+ // Set and Get the command Prompt.
+ TInt SetPrompt(const TDesC &aPrompt);
+ TPtrC Prompt() const;
+
+ // Run commands from the console.
+ void Run();
+
+ // Run with just the file name (no args)
+ TInt Run(const TDesC &);
+
+ // Run with the file name and args
+ TInt Run(const TDesC &, const TDesC &);
+
+ // Stop the test engine.
+ void Terminate(); // Terminate command files and log files.
+ void StopEngine(); // Terminate and stop i.e. exit test run
+ TBool Stopped(); // Stop has been raised?
+
+ // Set and Get Echo mode On/Off switch.
+ void SetEchoMode(const TBool & = ETrue);
+ TBool EchoMode();
+
+ // Get the defines.
+ #if !defined(TEMPLATED_CATALOGUE)
+ CCatalogue *Defines();
+
+ CObjCatalogue *Domains() const {return iDomain;}
+
+ #else
+ CPile<CLabeledText> *Defines();
+ #endif
+
+ // Complete the asynch request
+ void CompleteRequest();
+
+ TInt SetFileName(const TDesC &aName, RFile &aReqFile) ;
+
+ void GetUserInput(const TDesC &, TDes &);
+ void DumpData(const TDesC8 &, const TBool & = ETrue);
+
+ TBool Log(void) { return iLogActivity; }
+
+ void SetResultDefine(TInt aValue);
+ void SetResultDefine (const TDesC& aDefineTxt, TInt aValue);
+ void SetErrorDefine(TInt aValue);
+ void SetErrorDefine (const TDesC& aDefineTxt, TInt aValue);
+ void DeleteResultDefine (const TDesC& aDefineTxt);
+ void DeleteErrorDefine (const TDesC& aDefineTxt);
+
+ void SetShowCmdLine(const TBool &aValue) { iShowCmdLine = aValue; }
+ TBool GetShowCmdLine(void) { return iShowCmdLine; }
+
+ TPtrC GetDefine(const TDesC &) const;
+
+ //----------------------------------------------------------------
+ // helper methods for IfMode
+
+ CIFControl::TIFMode GetIfMode();
+ void SetIfMode(const CIFControl::TIFMode &);
+ CIFControl::TIFProcessing GetIfState();
+ void SetIfState(const CIFControl::TIFProcessing &);
+ void IfL(const CIFControl::TIFMode &, const TBool &, const CIFControl::TIFProcessing &);
+ void EndIf();
+ void UpdateIFState(const CIFControl::TIFMode &);
+
+//-----------------------------------------------------------------------------
+
+private:
+
+ // Read command line (iCmdline).
+ TInt ReadCmdline(TBool aConsole = ETrue);
+ TInt ReadCmdFile(); // from command file
+ TInt ReadConsole(); // from console
+
+ // Make the command (iCommand) to obey. Copies the command
+ // line (iCmdline) to iCommand buffer and expands the tags
+ // to their defined values.
+ TInt MakeCommand();
+
+ // Obey the command (iCommand).
+ TInt ObeyCommandL();
+
+ // Do command tags: expands tags to values.
+ TBool DoTags();
+
+ // IF Management support
+ TBool DetermineStepover(CCmdBase *);
+
+private: // Methods from CActive
+
+ virtual void RunL();
+ virtual void DoCancel();
+
+private: // Enums
+
+ enum TEngineFilePanics
+ {
+ EBufferPanic,
+ EBufferNotAllocated,
+ EInvalidFileSizeError
+ };
+
+ enum TEngineState
+ {
+ EIdle = 0,
+ EStopping,
+ EGetNextCmd,
+ EParseCurrentCmd,
+ ERunCurrentCmd
+ };
+
+private: // Data
+
+ // For filename parsing.
+ TParse iParse;
+
+ // for Displaying the command line or CmdLine (non translated version)
+ TBool iShowCmdLine;
+
+ // Run control.
+ TBool iStopped; // test run stopped
+ TBool iEchoMode; // echo mode On/Off
+
+ // need to have a stack of IF structs so that we can process
+ // nested if cases.
+ CPile<CIFControl> *iIFPile; // cmd file pile
+
+ // Overflow handler.
+ TTestMachineOverflow iOverflow;
+
+ // State machine state
+ TEngineState iState;
+
+ // Active object that gets line input
+ CConsoleReader* iConsoleReader;
+
+ // Timer object
+ RTimer iTimer;
+
+ // Timestamp for commands (and logging)
+ TTime iTimeStamp;
+
+ // Command family.
+ CCmdFamily* iCmdFamily; // the commands
+
+ // Command buffers:
+ TBuf<256> iCmdline; // command line
+ TBuf<1024> iCommand; // full command
+
+ // Command prompt.
+ TBuf<16> iPrompt; // prompt
+
+ // Console information.
+ CConsoleBase *iConsole; // console
+ TBool iConsoleEnabled; // enabled?
+ TBuf<1024> iPrintBuf; // formatted...
+
+ // The command files.
+ CCmdFile *iCmdFile; // cmd file now!
+ CPile<CCmdFile> *iCmdPile; // cmd file pile
+ TFileName iCmdPath; // cmd file path
+
+ // The log files.
+ TFileName iLogPath; // log file path
+ CLogFile *iLogFile; // log file now
+ CPile<CLogFile> *iLogPile; // log file pile
+
+ // Catalog of the tag and call argument defines.
+ // Get the defines.
+ #if !defined(TEMPLATED_CATALOGUE)
+ CCatalogue *iDefines;
+
+ #else
+ CPile<CLabeledText> *iDefines;
+ #endif
+
+ // need to have access to a generic cat or pile
+ // of (TAny *) which can be cast into pointers
+ // for our domain specific lists (e.g. RHTTPSession)
+ // Object Collection for use as/when by domain tools
+ CObjCatalogue *iDomain;
+
+ // File Management
+ // In some cases access to local files is useful.
+ // as a result, make the services globally accessible from the TestEngine
+ RFs iFileServer;
+ TFileName iFileName;
+
+ TBool iLogActivity;
+};
+
+
+#endif // __TENGINE_H__
+
+//-----------------------------------------------------------------------------
+// End of File
+//-----------------------------------------------------------------------------