Page Speed Optimization Libraries
1.5.27.2
|
00001 // Copyright 2011 Google Inc. 00016 00017 #ifndef NET_INSTAWEB_UTIL_SHARED_MEM_CACHE_TEST_BASE_H_ 00018 #define NET_INSTAWEB_UTIL_SHARED_MEM_CACHE_TEST_BASE_H_ 00019 00020 #include "net/instaweb/util/cache_test_base.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/md5_hasher.h" 00025 #include "net/instaweb/util/public/mock_message_handler.h" 00026 #include "net/instaweb/util/public/mock_timer.h" 00027 #include "net/instaweb/util/public/scoped_ptr.h" 00028 #include "net/instaweb/util/public/shared_mem_cache.h" 00029 #include "net/instaweb/util/public/shared_mem_test_base.h" 00030 #include "net/instaweb/util/public/string.h" 00031 00032 namespace net_instaweb { 00033 00034 class CacheInterface; 00035 00036 class SharedMemCacheTestBase : public CacheTestBase { 00037 protected: 00038 typedef void (SharedMemCacheTestBase::*TestMethod)(); 00039 static const int kBlockSize = 512; 00040 00041 explicit SharedMemCacheTestBase(SharedMemTestEnv* test_env); 00042 00043 virtual void TearDown(); 00044 00045 virtual CacheInterface* Cache() { return cache_.get(); } 00046 virtual void SanityCheck(); 00047 00048 void TestBasic(); 00049 void TestReinsert(); 00050 void TestReplacement(); 00051 void TestReaderWriter(); 00052 void TestConflict(); 00053 void TestEvict(); 00054 00055 private: 00056 bool CreateChild(TestMethod method); 00057 00058 SharedMemCache<kBlockSize>* MakeCache(); 00059 void CheckDelete(const char* key); 00060 void TestReaderWriterChild(); 00061 00062 scoped_ptr<SharedMemTestEnv> test_env_; 00063 scoped_ptr<AbstractSharedMem> shmem_runtime_; 00064 scoped_ptr<SharedMemCache<kBlockSize> > cache_; 00065 MD5Hasher hasher_; 00066 MockMessageHandler handler_; 00067 MockTimer timer_; 00068 00069 GoogleString large_; 00070 GoogleString gigantic_; 00071 00072 bool sanity_checks_enabled_; 00073 00074 DISALLOW_COPY_AND_ASSIGN(SharedMemCacheTestBase); 00075 }; 00076 00077 template<typename ConcreteTestEnv> 00078 class SharedMemCacheTestTemplate : public SharedMemCacheTestBase { 00079 public: 00080 SharedMemCacheTestTemplate() 00081 : SharedMemCacheTestBase(new ConcreteTestEnv) { 00082 } 00083 }; 00084 00085 TYPED_TEST_CASE_P(SharedMemCacheTestTemplate); 00086 00087 TYPED_TEST_P(SharedMemCacheTestTemplate, TestBasic) { 00088 SharedMemCacheTestBase::TestBasic(); 00089 } 00090 00091 TYPED_TEST_P(SharedMemCacheTestTemplate, TestReinsert) { 00092 SharedMemCacheTestBase::TestReinsert(); 00093 } 00094 00095 TYPED_TEST_P(SharedMemCacheTestTemplate, TestReplacement) { 00096 SharedMemCacheTestBase::TestReplacement(); 00097 } 00098 00099 TYPED_TEST_P(SharedMemCacheTestTemplate, TestReaderWriter) { 00100 SharedMemCacheTestBase::TestReaderWriter(); 00101 } 00102 00103 TYPED_TEST_P(SharedMemCacheTestTemplate, TestConflict) { 00104 SharedMemCacheTestBase::TestConflict(); 00105 } 00106 00107 TYPED_TEST_P(SharedMemCacheTestTemplate, TestEvict) { 00108 SharedMemCacheTestBase::TestEvict(); 00109 } 00110 00111 REGISTER_TYPED_TEST_CASE_P(SharedMemCacheTestTemplate, TestBasic, TestReinsert, 00112 TestReplacement, TestReaderWriter, TestConflict, 00113 TestEvict); 00114 00115 } 00116 00117 #endif ///< NET_INSTAWEB_UTIL_SHARED_MEM_CACHE_TEST_BASE_H_