diff -r 000000000000 -r 96612d01cf9f tsrc/VCXTestCommon/inc/VCXTestStatsKeeper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tsrc/VCXTestCommon/inc/VCXTestStatsKeeper.h Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,236 @@ +/* +* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* +*/ + + +#ifndef VCXTESTSTATSKEEPER_H +#define VCXTESTSTATSKEEPER_H + +// INCLUDES +#include + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// CLASS DECLARATION + +/** +* Class to hold a single statistics item. +*/ +class CVCXTestStatsItem : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CVCXTestStatsItem* NewL(); + + /** + * Destructor. + */ + virtual ~CVCXTestStatsItem(); + + private: + + /** + * C++ default constructor. + */ + CVCXTestStatsItem(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + public: // Data + + TBool iIsActive; + + TInt32 iId; + HBufC* iDescId; + HBufC* iDesc; + TInt iError; + TTime iStartTime; + TTime iEndTime; + + RPointerArray iTraces; + RPointerArray iProgresses; + }; + +/** +* Class to hold summary for statistics. +*/ +class CVCXTestStatsItemSummary : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CVCXTestStatsItemSummary* NewL(); + + /** + * Destructor. + */ + virtual ~CVCXTestStatsItemSummary(); + + private: + + /** + * C++ default constructor. + */ + CVCXTestStatsItemSummary(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + public: // Data + TInt32 iId; + HBufC* iDescId; + HBufC* iDesc; + + TUint iCount; + TUint iFailCount; + + // These are all microseconds. + TInt64 iMinTime; + TInt64 iMaxTime; + TReal iAvgTime; + + TInt64 iTotalTime; + TInt64 iFailTime; + }; + +/** +* Class to keep track of statistics. +*/ +class CVCXTestStatsKeeper : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + IMPORT_C static CVCXTestStatsKeeper* NewL(); + + /** + * Destructor. + */ + virtual ~CVCXTestStatsKeeper (); + + public: // New functions + + /** + * Sets the name and filename for statistics. Report is written when class is desctructed. + */ + IMPORT_C void StartStatsKeepingL( const TDesC& aName, const TDesC& aFileName ); + + /** + * Adds an action to the statistics lists. + */ + IMPORT_C void ActionStartL( TInt32 aId, const TDesC& aDesc ); + + /** + * Adds an action to the statistics lists. + * if param aDescMerge is true then action descsription will contain the descid. + */ + IMPORT_C void ActionStartL( const TDesC& aDescId, const TDesC& aDesc, TBool aDescMerge = EFalse ); + + /** + * Ends an action. + * Leaves with KErrAbort if more than 33% of actions have failed. Test should abort itself in that case. + */ + IMPORT_C void ActionEndL( TInt32 aId, TInt aError ); + + /** + * Ends an action. + * Leaves with KErrAbort if more than 33% of actions have failed. Test should abort itself in that case. + */ + IMPORT_C void ActionEndL( const TDesC& aDescId, TInt aError ); + + /** + * Sets progress information for an action. These are saved in the report. + */ + IMPORT_C void ActionProgressL( TInt32 aId, const TDesC& aProgressDesc ); + + /** + * Sets progress information for an action. These are saved in the report. + */ + IMPORT_C void ActionProgressL( const TDesC& aDescId, const TDesC& aProgressDesc ); + + /** + * Generic trace for different actions. Last 20 of these are saved in the report only if action fails. + */ + IMPORT_C void ActionTraceL( const TDesC& aDesc ); + + private: + + /** + * C++ default constructor. + */ + CVCXTestStatsKeeper(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + private: // New functions. + + CVCXTestStatsItem* GetActiveAction( TInt32 aId ); + + CVCXTestStatsItem* GetActiveAction( const TDesC& aDesc ); + + CVCXTestStatsItem* GetLastActiveAction( TBool aOnlyDescId ); + + TInt FormatDate( const TTime& aDate, TDes& aStr ); + + void GenerateReportL( const TDesC& aFileName, TBool aFullReport ); + + TUint DataSizeL(); + + void CheckFailsL(); + + void GetActionSummariesL( RPointerArray& aSummaries, TBool aFailActiveActions ); + + private: // Data + + TBool iStarted; + + HBufC* iReportName; + + HBufC* iReportFileName; + + RPointerArray iActions; + + RPointerArray iTraces; + + TBool iAbortedBecauseTooManyFails; + }; + +#endif // VCXTESTSTATSKEEPER_H + +// End of File