00001
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 "base/scoped_ptr.h"
00021 #include "net/instaweb/util/public/abstract_shared_mem.h"
00022 #include "net/instaweb/util/public/basictypes.h"
00023 #include "net/instaweb/util/public/gtest.h"
00024 #include "net/instaweb/util/public/mock_message_handler.h"
00025 #include "net/instaweb/util/public/shared_mem_statistics.h"
00026 #include "net/instaweb/util/public/shared_mem_test_base.h"
00027 #include "net/instaweb/util/public/string_util.h"
00028
00029 namespace net_instaweb {
00030 class SharedMemStatisticsTestBase : public testing::Test {
00031 protected:
00032 typedef void (SharedMemStatisticsTestBase::*TestMethod)();
00033
00034 explicit SharedMemStatisticsTestBase(SharedMemTestEnv* test_env);
00035
00036 virtual void SetUp();
00037 virtual void TearDown();
00038
00039 bool CreateChild(TestMethod method);
00040
00041 void TestCreate();
00042 void TestSet();
00043 void TestClear();
00044 void TestAdd();
00045 void TestHistogram();
00046 void TestHistogramRender();
00047 void TestTimedVariableEmulation();
00048
00049 private:
00050 void TestCreateChild();
00051 void TestSetChild();
00052 void TestClearChild();
00053
00055 void TestAddChild();
00056 bool AddVars(SharedMemStatistics* stats);
00057 bool AddHistograms(SharedMemStatistics* stats);
00060 bool Contains(const StringPiece& html, const StringPiece& pattern);
00061
00062 SharedMemStatistics* ChildInit();
00063 void ParentInit();
00064
00065 scoped_ptr<SharedMemTestEnv> test_env_;
00066 scoped_ptr<AbstractSharedMem> shmem_runtime_;
00067 scoped_ptr<SharedMemStatistics> stats_;
00068 MockMessageHandler handler_;
00069
00070 DISALLOW_COPY_AND_ASSIGN(SharedMemStatisticsTestBase);
00071 };
00072
00073 template<typename ConcreteTestEnv>
00074 class SharedMemStatisticsTestTemplate : public SharedMemStatisticsTestBase {
00075 public:
00076 SharedMemStatisticsTestTemplate()
00077 : SharedMemStatisticsTestBase(new ConcreteTestEnv) {
00078 }
00079 };
00080
00081 TYPED_TEST_CASE_P(SharedMemStatisticsTestTemplate);
00082
00083 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestCreate) {
00084 SharedMemStatisticsTestBase::TestCreate();
00085 }
00086
00087 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestSet) {
00088 SharedMemStatisticsTestBase::TestSet();
00089 }
00090
00091 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestClear) {
00092 SharedMemStatisticsTestBase::TestClear();
00093 }
00094
00095 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestAdd) {
00096 SharedMemStatisticsTestBase::TestAdd();
00097 }
00098
00099 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestHistogram) {
00100 SharedMemStatisticsTestBase::TestHistogram();
00101 }
00102
00103 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestHistogramRender) {
00104 SharedMemStatisticsTestBase::TestHistogramRender();
00105 }
00106
00107 TYPED_TEST_P(SharedMemStatisticsTestTemplate, TestTimedVariableEmulation) {
00108 SharedMemStatisticsTestBase::TestTimedVariableEmulation();
00109 }
00110
00111 REGISTER_TYPED_TEST_CASE_P(SharedMemStatisticsTestTemplate, TestCreate,
00112 TestSet, TestClear, TestAdd, TestHistogram,
00113 TestHistogramRender, TestTimedVariableEmulation);
00114
00115 }
00116
00117 #endif ///< NET_INSTAWEB_UTIL_PUBLIC_SHARED_MEM_STATISTICS_TEST_BASE_H_