Page Speed Optimization Libraries
1.5.27.2
|
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_