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