stif/stif_plat/inc/StifLogger.h
branchRCL_3
changeset 59 8ad140f3dd41
parent 0 a03f92240627
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stif/stif_plat/inc/StifLogger.h	Wed Oct 13 16:17:58 2010 +0300
@@ -0,0 +1,409 @@
+/*
+* Copyright (c) 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 file contains the header file of the 
+* CStifLogger.
+*
+*/
+
+#ifndef STIFLOGGER_H
+#define STIFLOGGER_H
+
+//  INCLUDES
+#include <e32base.h>
+
+// If using older STIF TF than STIF200414 there is no this definition.
+// If is need to combile e.g. testmodule with older STIF TF there may use
+// in the testmodule this flag to indicating which enum definition is used.
+// Example:
+//          #ifdef __NEW_LOGGER_ENUMS_DEFS__
+//              logger->Log( CStifLogger::ERed, _L( "Logged text" ) );
+//          #else
+//              logger->Log( ERed, _L( "Logged text" ) );
+//          #endif
+#define __NEW_LOGGER_ENUMS_DEFS__
+
+// Maximum length of the data. Must be over 26 because HTML page initializing.
+// Can be only max 254 length because rdebug prints max 256 length text and
+// that includes line break(+2 character)
+const TInt KMaxLogData = 254;
+
+// This is for making partitions of the rdebug( minus 3 is for ' ->')
+const TInt KMaxRDebug = KMaxLogData - 3;
+
+// Maximum count of file type plus dot e.g. ".txt"
+const TInt KMaxFileType = 10;
+
+// Maximum length of the date and time logging
+// Includes date, time, spaces(5) and end of line(2):
+// e.g. "'06.Nov.2003 15:12:18.123    '...logged data...'  '"
+const TInt KMaxTimeStamp = 30;
+
+// MACROS
+// None
+
+// DATA TYPES
+
+// For 16 bit data size definition.
+typedef TBuf<KMaxLogData> TLogInfo;
+
+// For 8 bit data size definition.
+typedef TBuf8<KMaxLogData> TLogInfo8;
+
+// For file type size definition.
+typedef TBuf<KMaxFileType> TFileType;
+
+// For time stamp size definition.
+typedef TBuf8<KMaxTimeStamp> TStifLoggerTimeStamp;
+
+// For time stamp size definition.
+typedef TBuf<KMaxTimeStamp> TStifLoggerTimeStamp8;
+
+// FUNCTION PROTOTYPES
+// None
+
+// FORWARD DECLARATIONS
+class COutput;
+
+// Structs are defined at the end of this file.
+struct TOverwritedSettings;
+struct TLoggerSettings;
+
+// CLASS DECLARATION
+
+// DESCRIPTION
+// CStifLogger is a STIF Test Framework StifLogger class.
+// Class contains a file logging operations.
+
+class CStifLogger 
+        :public CBase
+    {
+    public:     // Enumerations
+
+        // Different StifLogger presentations types.
+        enum TLoggerType
+            {
+            ETxt,       // txt file logging
+            EData,      // data file logging(e.g. web page downloading )
+            EHtml       // html file logging
+            };
+
+        // Different StifLogger output modules.
+        enum TOutput
+            {
+            EFile,      // File logging
+            ERDebug     // RDebug logging
+            };
+
+        // Different style forms for text.
+        enum TStyle
+            {
+            ENoStyle    = 0x00000,  // No style parameter
+            EBold       = 0x00001,  // Bold
+            ECursive    = 0x00002,  // Cursive
+            EUnderline  = 0x00004,  // Underline
+            EBlue       = 0x00008,  // Blue
+            EGreen      = 0x00010,  // Green
+            ERed        = 0x00020,  // Red
+            EImportant  = 0x00040,  // Important (Line will starts a 'IMPORTANT' text)
+            EWarning    = 0x00080,  // Warning (Line will starts a 'WARNING' text)
+            EError      = 0x00100   // Error (Line will starts a 'ERROR' text)
+            };
+
+    private:    // Enumerations
+
+    public:     // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        IMPORT_C static CStifLogger* NewL( const TDesC& aTestPath,
+                                            const TDesC& aTestFile,
+                                            // Default logger type is .txt
+                                            TLoggerType aLoggerType = ETxt,
+                                            // By default output is file
+                                            TOutput aOutput = EFile,
+                                            // By default overwrite is used
+                                            TBool aOverWrite = ETrue,
+                                            // By default time stamp is used
+                                            TBool aWithTimeStamp = ETrue,
+                                            // By default line break is used
+                                            TBool aWithLineBreak = ETrue,
+                                            // By default even ranking is not
+                                            // used
+                                            TBool aWithEventRanking = EFalse,
+                                            // By default thread id is added
+                                            // after the log file
+                                            TBool aThreadIdToLogFile = ETrue,
+                                            // By default log directory will
+                                            // not create
+                                            TBool aCreateLogDir = EFalse,
+                                            // Static logger implementation is
+                                            // not yet permanent, may change 
+                                            TInt aStaticBufferSize = 0,
+                                            // By default files are not written
+                                            // in unicode format
+                                            TBool aUnicode = EFalse );
+        /**
+        * Destructor.
+        */
+        virtual ~CStifLogger();
+
+    public:     // New functions
+
+        /**
+        * C++ default constructor.
+        */
+        CStifLogger();
+
+        /**
+        * Log a 16 bit information to some storage e.g. text file.
+        */
+        IMPORT_C TInt Log( const TDesC& aLogInfo );
+
+        /**
+        * Log a 8 bit information to some storage e.g. text file.
+        */
+        IMPORT_C TInt Log( const TDesC8& aLogInfo );
+
+        /**
+        * Log a 16 bit information to some storage e.g. text file. There is
+        * also parameter to styling text information e.g. text color.
+        */
+        IMPORT_C TInt Log( TInt aStyle, const TDesC& aLogInfo );
+
+        /**
+        * Log a 8 bit information to some storage e.g. text file. There is
+        * also parameter to styling text information e.g. text color.
+        */
+        IMPORT_C TInt Log( TInt aStyle, const TDesC8& aLogInfo );
+
+        /**
+        * Log a 16 bit information to some storage e.g. text file. In this log
+        * method may set several parameters.
+        */
+        IMPORT_C TInt Log( TRefByValue<const TDesC> aLogInfo,... );
+
+        /**
+        * Log a 8 bit information to some storage e.g. text file. In this log
+        * method may set several parameters.
+        */
+        IMPORT_C TInt Log( TRefByValue<const TDesC8> aLogInfo,... );
+
+        /**
+        * Log a 16 bit information to some storage e.g. text file. There is
+        * also parameter to styling text information e.g. text color.
+        */
+        IMPORT_C TInt Log( TInt aStyle,
+            TRefByValue<const TDesC> aLogInfo,... );
+
+        /**
+        * Log a 8 bit information to some storage e.g. text file. There is
+        * also parameter to styling text information e.g. text color.
+        */
+        IMPORT_C TInt Log( TInt aStyle,
+            TRefByValue<const TDesC8> aLogInfo,... );
+
+        /**
+        * Log a 16 bit delimiter. Default char is '#' and default
+        * repeat count is 60.
+        * This will be used if parameters are not given when calling
+        * this method.
+        */
+        IMPORT_C TInt WriteDelimiter( const TDesC& aDelimiter = _L( "#"),
+                                        TInt aCount = 60 );
+
+        /**
+        * Log a 8 bit delimiter. 8 bit delimiter includes no default values.
+        * Delimiter may be '#' or 'XO' etc.
+        */
+        IMPORT_C TInt WriteDelimiter( const TDesC8& aDelimiter, TInt aCount );
+
+        /**
+        * Used when is need to save file or data to storage e.g. web page.
+        * 16 bit.
+        */
+        IMPORT_C TInt SaveData( TDesC& aData );
+
+        /**
+        * Used when is need to save file or data to storage e.g. web page.
+        * 8 bit.
+        */
+        IMPORT_C TInt SaveData( TDesC8& aData );
+        
+        /**
+        * Get creation result.
+        */
+        IMPORT_C TInt CreationResult();
+
+        /**
+        * Get output type. Valid only if CreationResult returns KErrNone.
+        */
+        IMPORT_C TOutput OutputType();
+
+        /**
+        * Pure virtual. Send style information and data to the output module.
+        * 16 bit.
+        */
+        virtual TInt Send( TInt /*aStyle*/, const TDesC& /*aData*/ ) = 0;
+
+        /**
+        * Pure virtual. Send style information and data to the output module.
+        * 8 bit.
+        */
+        virtual TInt Send( TInt /*aStyle*/, const TDesC8& /*aData*/ ) = 0;
+
+        /**
+        * Log 16 bit _LIT information to some storage e.g. text file.
+        */
+        template<TInt S> TInt Log( const TLitC<S>& aLogInfo )
+            { 
+            return Send( ENoStyle, (TDesC&)aLogInfo );
+            };
+
+        /**
+        * Log 8 bit _LIT information to some storage e.g. text file.
+        */
+        template<TInt S> TInt Log( const TLitC8<S>& aLogInfo )
+            { 
+            return Send( ENoStyle, (TDesC8&)aLogInfo );
+            };
+
+        /**
+        * Log 16 bit _LIT information to some storage e.g. text file. There is
+        * also parameter to styling text information e.g. text color.
+        */
+        template<TInt S> TInt Log( TInt aStyle, const TLitC<S>& aLogInfo )
+            { 
+            return Send( aStyle, (TDesC&)aLogInfo );
+            };
+
+        /**
+        * Log 8 bit _LIT information to some storage e.g. text file.  There is
+        * also parameter to styling text information e.g. text color.
+        */
+        template<TInt S> TInt Log( TInt aStyle, const TLitC8<S>& aLogInfo )
+            { 
+            return Send( aStyle, (TDesC8&)aLogInfo );
+            };
+
+    public:     // Functions from base classes
+
+    protected:  // New functions
+
+        /**
+        * Two-phased constructor. TestEngine's and TestServer's are friend.
+        * For TestEngine's and TestServer's StifLogger creation.
+        */
+        IMPORT_C static CStifLogger* NewL( const TDesC& aTestPath,
+                                            const TDesC& aTestFile,
+                                            TLoggerSettings& aLoggerSettings );
+
+    protected:  // Functions from base classes
+
+        /**
+        * Local CStifLogger's method for StifLogger settings overwriting.
+        */
+        static void OverwriteLoggerSettings( TLoggerSettings& aLoggerSettings,
+                                                TName& aTestPath,
+                                                TName& aTestFile,
+                                                TLoggerType& aLoggerType,
+                                                TOutput& aOutput,
+                                                TBool& aOverWrite,
+                                                TBool& aWithTimeStamp,
+                                                TBool& aWithLineBreak,
+                                                TBool& aWithEventRanking,
+                                                TBool& aThreadIdToLogFile,
+                                                TBool& aCreateLogDir,
+                                                TBool& aUnicode );
+
+    private:
+
+    public:     // Data
+
+    protected:  // Data
+        /**
+        * Output object.
+        */
+        COutput*    iOutput;
+        
+    private:    // Data
+
+    public:     // Friend classes
+        
+    protected:  // Friend classes
+
+    private:    // Friend classes
+
+        // TestEngine classes
+        friend class CTestEngineServer;
+        friend class CTestReport;
+        friend class CTestCaseController;
+        friend class CTestEngine;
+
+        // TestServer classes
+        friend class CTestModuleContainer;
+        friend class CTestServer;
+        friend class CTestThreadContainer;
+        friend class CTestThreadContainerRunner;
+
+        // UIEngine classes
+        friend class CUIEngine;
+
+        // SettingServer classes
+        friend class CSettingServer;
+
+    };
+
+// Struct to indicate StifLogger's settings overwriting
+struct TOverwritedSettings
+    {
+    TBool               iCreateLogDir;
+    TBool               iPath;
+    TBool               iHwPath;
+    TBool               iFormat;
+    TBool               iHwFormat;
+    TBool               iOutput;
+    TBool               iHwOutput;
+    TBool               iOverwrite;
+    TBool               iTimeStamp;
+    TBool               iLineBreak;
+    TBool               iEventRanking;
+    TBool               iThreadId;
+    TBool               iUnicode;
+    TBool               iAddTestCaseTitle;
+    };
+
+// Struct to StifLogger overwrite settings
+struct TLoggerSettings
+    {
+    TBool                       iCreateLogDirectories;
+    TName                       iEmulatorPath;
+    CStifLogger::TLoggerType    iEmulatorFormat;
+    CStifLogger::TOutput        iEmulatorOutput;
+    TName                       iHardwarePath;
+    CStifLogger::TLoggerType    iHardwareFormat;
+    CStifLogger::TOutput        iHardwareOutput;
+    TBool                       iOverwrite;
+    TBool                       iTimeStamp;
+    TBool                       iLineBreak;
+    TBool                       iEventRanking;
+    TBool                       iThreadId;
+    TBool                       iUnicode;
+    TBool                       iAddTestCaseTitle;
+    TOverwritedSettings         iIsDefined;
+    };
+
+#endif      // STIFLOGGER_H
+
+// End of File