/* Web Polygraph http://www.web-polygraph.org/ * (C) 2003-2006 The Measurement Factory * Licensed under the Apache License, Version 2.0 */ #ifndef POLYGRAPH__LOGANALYZERS_TESTINFO_H #define POLYGRAPH__LOGANALYZERS_TESTINFO_H #include "xstd/Array.h" #include "xstd/Time.h" #include "xstd/String.h" #include "xstd/BigSize.h" #include "loganalyzers/SomeInfo.h" class InfoScopes; class SideInfo; class BlobDb; // aggregate stats and other logged information about a test // manages info about all sides of the test class TestInfo: public SomeInfo { public: TestInfo(const String &aLabel); ~TestInfo(); // get/set scope for executive summary const Scope &execScope() const; void execScope(const Scope &aScope); const Scope &guessExecScope(); const String &label() const; const String &pglCfg() const; Time startTime() const; bool twoSided() const { return cltSideExists() && srvSideExists(); } const SideInfo *cltSideExists() const; const SideInfo *srvSideExists() const; const SideInfo &aSide() const; const SideInfo &cltSide() const; const SideInfo &srvSide() const; SideInfo &cltSide(); SideInfo &srvSide(); const SideInfo &side(int logCat) const; SideInfo &side(int logCat); int scopes(InfoScopes &res) const; int repCount(const Scope &scope) const; int hitCount(const Scope &scope) const; BigSize repVolume(const Scope &scope) const; BigSize hitVolume(const Scope &scope) const; void checkConsistency(); void compileStats(BlobDb &db); protected: void checkCommonPglCfg(); void checkCommonBenchmarkVersion(); void checkCommonStartTime(); void cmplExecSumVars(BlobDb &db); void cmplExecSum(BlobDb &db); void cmplWorkload(BlobDb &db); void cmplSynonyms(BlobDb &db, const Scope &scope); void cmplHitRatioVars(BlobDb &db, const Scope &scope); void cmplHitRatio(BlobDb &db, const Scope &scope); void cmplHitRatioTable(BlobDb &db, XmlTag &parent, const Scope &scope) ; void cmplBaseStats(BlobDb &db, const Scope &scope); void cmplTraffic(BlobDb &db, const Scope &scope); void cmplRptm(BlobDb &db, const Scope &scope); void cmplSavings(BlobDb &db, const Scope &scope); void cmplLevels(BlobDb &db, const Scope &scope); void cmplErrors(BlobDb &db, const Scope &scope); void cmplNotes(BlobDb &db); protected: String theLabel; String theBenchmarkVersion; String thePglCfg; Time theStartTime; Array theSides; Array theScopes; String theOneSideWarn; Scope theExecScope; }; #endif