Page Speed Optimization Libraries  1.5.27.2
net/instaweb/util/shared_mem_cache_test_base.h
Go to the documentation of this file.
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_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines