/* Web Polygraph http://www.web-polygraph.org/ * (C) 2003-2006 The Measurement Factory * Licensed under the Apache License, Version 2.0 */ #ifndef POLYGRAPH__LOGANALYZERS_SIDEINFO_H #define POLYGRAPH__LOGANALYZERS_SIDEINFO_H #include "xstd/Time.h" #include "xstd/String.h" #include "xstd/BigSize.h" #include "xstd/Array.h" #include "loganalyzers/PhaseInfo.h" #include "loganalyzers/SomeInfo.h" class InfoScopes; class TestInfo; class ProcInfo; class PhaseInfo; class TmsSzStat; class StatPhaseRec; class ErrorRec; class ErrorStat; class XmlTable; class BlobDb; class Stex; // aggregate stats and other logged information about a test side // (e.g., client- or server-side); // manages info about all processes that belong to one side class SideInfo: public SomeInfo { public: static void CompileEmptyStats(BlobDb &db, const Scope &scope); static void ConfigureStex(); public: SideInfo(int aLogCat); ~SideInfo(); int logCat() const; const String &name() const; // "client" or "server" const String &otherName() const; // "server" or "client" const String &benchmarkVersion() const; const String &pglCfg() const; Time startTime() const; int repCount(const Scope &scope) const; int hitCount(const Scope &scope) const; int offeredHitCount(const Scope &scope) const; BigSize repVolume(const Scope &scope) const; BigSize hitVolume(const Scope &scope) const; BigSize offeredHitVolume(const Scope &scope) const; void test(TestInfo *t); TestInfo *test(); void add(ProcInfo *info); // absorbs ProcInfo &proc(int idx); int procCount() const; const PhaseInfo &phase(const Scope &scope) const; const PhaseInfo &phase(const String &name) const; const PhaseInfo &phase(int idx) const; int phaseCount() const; const Scope &scope() const { return theScope; } // all phases int scopes(InfoScopes &res) const; const Scope &execScope() const; const StatPhaseRec &execScopeStats() const; void checkConsistency(); void compileStats(BlobDb &db); protected: static void AddStex(Stex *stex, const Stex *parent); static void AddStex(Stex *stex); void addPhase(const PhaseInfo &phase); const PhaseInfo *findPhase(const String &name) const; PhaseInfo *findPhase(const String &name); void checkCommonBenchmarkVersion(); void checkCommonPglCfg(); void checkCommonStartTime(); void checkCommonPhases(); void compileStats(BlobDb &db, const PhaseInfo &phase, const Scope &scope); void cmplLoadBlob(BlobDb &db, const Scope &scope); void cmplLoadTable(BlobDb &db, ReportBlob &parent, const Scope &scope); void cmplLoadFigure(BlobDb &db, ReportBlob &blob, const Scope &scope); void cmplRptmFigure(BlobDb &db, const Scope &scope); void cmplRptmVsLoadFigure(BlobDb &db, const PhaseInfo &phase, const Scope &scope); void cmplHitRatioTable(BlobDb &db, const Scope &scope); void cmplHrTraces(BlobDb &db, ReportBlob &blob, const Scope &scope); void cmplBhrTrace(BlobDb &db, ReportBlob &blob, const Scope &scope); void cmplDhrTrace(BlobDb &db, ReportBlob &blob, const Scope &scope); void cmplXactLevelTable(BlobDb &db, const PhaseInfo &phase, const Scope &scope); void cmplStreamTable(BlobDb &db, const PhaseInfo &phase, const Scope &scope); void cmplXactLevelFigure(BlobDb &db, ReportBlob &blob, const Scope &scope); void cmplConnLevelTable(BlobDb &db, const PhaseInfo &phase, const Scope &scope); void cmplConnLevelFigure(BlobDb &db, ReportBlob &blob, const Scope &scope); void cmplConnPipelineBlob(BlobDb &db, const Scope &scope); void cmplConnPipelineTable(BlobDb &db, ReportBlob &parent, const Scope &scope); void cmplConnPipelineTrace(BlobDb &db, ReportBlob &blob, const Scope &scope); void cmplConnPipelineHist(BlobDb &db, ReportBlob &blob, const Scope &scope); void cmplPopulLevelTable(BlobDb &db, const PhaseInfo &phase, const Scope &scope); void cmplPopulLevelFigure(BlobDb &db, ReportBlob &blob, const Scope &scope); void cmplObjectTable(BlobDb &db, const PhaseInfo &s, const Scope &scope); void cmplErrorTable(BlobDb &db, const PhaseInfo &phase, const Scope &scope); void cmplObjectBlobs(BlobDb &db, const PhaseInfo &phase, const Scope &scope); void cmplSideSum(BlobDb &db); void cmplLevelTableRec(BlobDb &db, const String &pfx, const String &state, const LevelStat &stats, const Scope &scope, XmlTable &table); void cmplObjectTableRec(BlobDb &db, XmlTable &table, const Stex &stex, const PhaseInfo &phase, const Scope &scope); void cmplStreamTableRec(BlobDb &db, XmlTable &table, const Stex &stex, const PhaseInfo &phase, const Scope &scope); void cmplErrorTableRec(BlobDb &db, XmlTable &table, const ErrorStat &errors, const ErrorRec &error, const Scope &scope); const ReportBlob &cmplObjectBlob(BlobDb &db, const Stex &stex, const PhaseInfo &phase, const Scope &scope); protected: static Stex *TheAllReps; static Array TheStex; protected: Scope theScope; mutable Scope theExecScope; int theLogCat; String theBenchmarkVersion; String thePglCfg; Time theStartTime; TestInfo *theTest; Array theProcs; Array thePhases; PhaseInfo theExecScopePhase; PhaseInfo theAllPhasesPhase; }; #endif