Page Speed Optimization Libraries  1.5.27.2
net/instaweb/util/public/shared_mem_statistics_test_base.h
Go to the documentation of this file.
00001 // Copyright 2011 Google Inc.
00016 
00017 #ifndef NET_INSTAWEB_UTIL_PUBLIC_SHARED_MEM_STATISTICS_TEST_BASE_H_
00018 #define NET_INSTAWEB_UTIL_PUBLIC_SHARED_MEM_STATISTICS_TEST_BASE_H_
00019 
00020 #include <set>
00021 
00022 #include "net/instaweb/util/public/abstract_shared_mem.h"
00023 #include "net/instaweb/util/public/basictypes.h"
00024 #include "net/instaweb/util/public/gtest.h"
00025 #include "net/instaweb/util/public/mem_file_system.h"
00026 #include "net/instaweb/util/public/mock_message_handler.h"
00027 #include "net/instaweb/util/public/mock_timer.h"
00028 #include "net/instaweb/util/public/scoped_ptr.h"
00029 #include "net/instaweb/util/public/shared_mem_statistics.h"
00030 #include "net/instaweb/util/public/shared_mem_test_base.h"
00031 #include "net/instaweb/util/public/string.h"
00032 #include "net/instaweb/util/public/string_util.h"
00033 #include "net/instaweb/util/public/thread_system.h"
00034 
00035 namespace net_instaweb {
00036 class SharedMemStatisticsTestBase : public testing::Test {
00037  protected:
00038   typedef void (SharedMemStatisticsTestBase::*TestMethod)();
00039 
00040   static const int64 kLogIntervalMs;
00041   static const int64 kMaxLogfileSizeKb;
00042 
00043   explicit SharedMemStatisticsTestBase(SharedMemTestEnv* test_env);
00044   SharedMemStatisticsTestBase() : testing::Test() {}
00045 
00046   virtual void SetUp();
00047   virtual void TearDown();
00048   GoogleString CreateVariableDataResponse(
00049       bool has_unused_variable, bool first);
00050   GoogleString CreateFakeLogfile(GoogleString* var_data,
00051                                  std::set<GoogleString>* var_titles);
00052   bool CreateChild(TestMethod method);
00053 
00054   void TestCreate();
00055   void TestSet();
00056   void TestClear();
00057   void TestAdd();
00058   void TestSetReturningPrevious();
00059   void TestHistogram();
00060   void TestHistogramRender();
00061   void TestHistogramNoExtraClear();
00062   void TestHistogramExtremeBuckets();
00063   void TestTimedVariableEmulation();
00064   void TestConsoleStatisticsLogger();
00065   void TestLogfileTrimming();
00066 
00067   SharedMemConsoleStatisticsLogger* console_logger() const {
00068     return stats_->console_logger_.get();
00069   }
00070 
00071   MockMessageHandler handler_;
00072   scoped_ptr<MemFileSystem> file_system_;
00073   scoped_ptr<SharedMemStatistics> stats_; 
00074 
00075  private:
00076   void TestCreateChild();
00077   void TestSetChild();
00078   void TestClearChild();
00079   void TestHistogramNoExtraClearChild();
00080 
00082   void TestAddChild();
00083   bool AddVars(SharedMemStatistics* stats);
00084   bool AddHistograms(SharedMemStatistics* stats);
00087   bool Contains(const StringPiece& html, const StringPiece& pattern);
00088 
00089   SharedMemStatistics* ChildInit();
00090   void ParentInit();
00091 
00092   scoped_ptr<SharedMemTestEnv> test_env_;
00093   scoped_ptr<AbstractSharedMem> shmem_runtime_;
00094   scoped_ptr<MockTimer> timer_;
00095   scoped_ptr<ThreadSystem> thread_system_;
00096 
00097   DISALLOW_COPY_AND_ASSIGN(SharedMemStatisticsTestBase);
00098 };
00099 
00100 template<typename ConcreteTestEnv>
00101 class SharedMemStatisticsTestTemplate : public SharedMemStatisticsTestBase {
00102  public:
00103   SharedMemStatisticsTestTemplate()
00104       : SharedMemStatisticsTestBase(new ConcreteTestEnv) {
00105   }
00106 };
00107 
00108 TYPED_TEST_CASE_P(SharedMemStatisticsTestTemplate);
00109 
00110 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestCreate) {
00111   SharedMemStatisticsTestBase::TestCreate();
00112 }
00113 
00114 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestSet) {
00115   SharedMemStatisticsTestBase::TestSet();
00116 }
00117 
00118 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestClear) {
00119   SharedMemStatisticsTestBase::TestClear();
00120 }
00121 
00122 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestAdd) {
00123   SharedMemStatisticsTestBase::TestAdd();
00124 }
00125 
00126 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestSetReturningPrevious) {
00127   SharedMemStatisticsTestBase::TestAdd();
00128 }
00129 
00130 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestHistogram) {
00131   SharedMemStatisticsTestBase::TestHistogram();
00132 }
00133 
00134 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestHistogramRender) {
00135   SharedMemStatisticsTestBase::TestHistogramRender();
00136 }
00137 
00138 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestHistogramExtremeBuckets) {
00139   SharedMemStatisticsTestBase::TestHistogramExtremeBuckets();
00140 }
00141 
00142 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestHistogramNoExtraClear) {
00143   SharedMemStatisticsTestBase::TestHistogramNoExtraClear();
00144 }
00145 
00146 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestTimedVariableEmulation) {
00147   SharedMemStatisticsTestBase::TestTimedVariableEmulation();
00148 }
00149 
00150 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestConsoleStatisticsLogger) {
00151   SharedMemStatisticsTestBase::TestConsoleStatisticsLogger();
00152 }
00153 
00154 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestLogfileTrimming) {
00155   SharedMemStatisticsTestBase::TestLogfileTrimming();
00156 }
00157 
00158 REGISTER_TYPED_TEST_CASE_P(SharedMemStatisticsTestTemplate, TestCreate,
00159                            TestSet, TestClear, TestAdd,
00160                            TestSetReturningPrevious,
00161                            TestHistogram, TestHistogramRender,
00162                            TestHistogramNoExtraClear,
00163                            TestHistogramExtremeBuckets,
00164                            TestTimedVariableEmulation,
00165                            TestConsoleStatisticsLogger,
00166                            TestLogfileTrimming);
00167 
00168 }  
00169 
00170 #endif  ///< NET_INSTAWEB_UTIL_PUBLIC_SHARED_MEM_STATISTICS_TEST_BASE_H_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines