Page Speed Optimization Libraries
1.3.25.1
|
00001 // Copyright 2011 Google Inc. 00016 00017 #ifndef NET_INSTAWEB_UTIL_SHARED_MEM_CACHE_DATA_TEST_BASE_H_ 00018 #define NET_INSTAWEB_UTIL_SHARED_MEM_CACHE_DATA_TEST_BASE_H_ 00019 00020 #include <vector> 00021 00022 #include "net/instaweb/util/shared_mem_cache_data.h" 00023 #include "net/instaweb/util/public/abstract_shared_mem.h" 00024 #include "net/instaweb/util/public/basictypes.h" 00025 #include "net/instaweb/util/public/gtest.h" 00026 #include "net/instaweb/util/public/mock_message_handler.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 00031 namespace net_instaweb { 00032 00033 class SharedMemCacheDataTestBase : public testing::Test { 00034 protected: 00035 typedef void (SharedMemCacheDataTestBase::*TestMethod)(); 00036 enum { kBlockSize = 512 }; 00037 00038 00039 explicit SharedMemCacheDataTestBase(SharedMemTestEnv* test_env); 00040 00041 void TestFreeList(); 00042 void TestLRU(); 00043 void TestBlockLists(); 00044 00045 private: 00046 bool CreateChild(TestMethod method); 00047 00048 void SanityCheckBlockVector(const SharedMemCacheData::BlockVector& blocks, 00049 int min_valid, int max_valid); 00050 00051 void ExtractAndSanityCheckLRU( 00052 SharedMemCacheData::Sector<kBlockSize>* sector, 00053 std::vector<SharedMemCacheData::EntryNum>* out_lru); 00054 00055 void TestFreeListChild(); 00056 00057 bool ParentInit(AbstractSharedMemSegment** out_seg, 00058 SharedMemCacheData::Sector<kBlockSize>** out_sector); 00059 00060 bool ChildInit(AbstractSharedMemSegment** out_seg, 00061 SharedMemCacheData::Sector<kBlockSize>** out_sector); 00062 00063 void ParentCleanup(); 00064 00065 scoped_ptr<SharedMemTestEnv> test_env_; 00066 scoped_ptr<AbstractSharedMem> shmem_runtime_; 00067 MockMessageHandler handler_; 00068 00069 DISALLOW_COPY_AND_ASSIGN(SharedMemCacheDataTestBase); 00070 }; 00071 00072 template<typename ConcreteTestEnv> 00073 class SharedMemCacheDataTestTemplate : public SharedMemCacheDataTestBase { 00074 public: 00075 SharedMemCacheDataTestTemplate() 00076 : SharedMemCacheDataTestBase(new ConcreteTestEnv) { 00077 } 00078 }; 00079 00080 TYPED_TEST_CASE_P(SharedMemCacheDataTestTemplate); 00081 00082 TYPED_TEST_P(SharedMemCacheDataTestTemplate, TestFreeList) { 00083 SharedMemCacheDataTestBase::TestFreeList(); 00084 } 00085 00086 TYPED_TEST_P(SharedMemCacheDataTestTemplate, TestLRU) { 00087 SharedMemCacheDataTestBase::TestLRU(); 00088 } 00089 00090 TYPED_TEST_P(SharedMemCacheDataTestTemplate, TestBlockLists) { 00091 SharedMemCacheDataTestBase::TestBlockLists(); 00092 } 00093 00094 REGISTER_TYPED_TEST_CASE_P(SharedMemCacheDataTestTemplate, TestFreeList, 00095 TestLRU, TestBlockLists); 00096 00097 } 00098 00099 #endif ///< NET_INSTAWEB_UTIL_SHARED_MEM_CACHE_DATA_TEST_BASE_H_