Page Speed Optimization Libraries
1.3.25.1
|
00001 // Copyright 2011 Google Inc. 00016 00017 #ifndef NET_INSTAWEB_UTIL_PUBLIC_SHARED_MEM_LOCK_MANAGER_TEST_BASE_H_ 00018 #define NET_INSTAWEB_UTIL_PUBLIC_SHARED_MEM_LOCK_MANAGER_TEST_BASE_H_ 00019 00020 #include "net/instaweb/util/public/abstract_shared_mem.h" 00021 #include "net/instaweb/util/public/basictypes.h" 00022 #include "net/instaweb/util/public/gtest.h" 00023 #include "net/instaweb/util/public/md5_hasher.h" 00024 #include "net/instaweb/util/public/mock_message_handler.h" 00025 #include "net/instaweb/util/public/mock_scheduler.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_lock_manager.h" 00029 #include "net/instaweb/util/public/shared_mem_test_base.h" 00030 #include "net/instaweb/util/public/thread_system.h" 00031 00032 namespace net_instaweb { 00033 00034 class SharedMemLockManagerTestBase : public testing::Test { 00035 protected: 00036 typedef void (SharedMemLockManagerTestBase::*TestMethod)(); 00037 00038 explicit SharedMemLockManagerTestBase(SharedMemTestEnv* test_env); 00039 virtual void SetUp(); 00040 virtual void TearDown(); 00041 00042 void TestBasic(); 00043 void TestDestructorUnlock(); 00044 void TestSteal(); 00045 00046 private: 00047 bool CreateChild(TestMethod method); 00048 00049 SharedMemLockManager* CreateLockManager(); 00050 SharedMemLockManager* AttachDefault(); 00051 00052 void TestBasicChild(); 00053 void TestStealChild(); 00054 00055 scoped_ptr<SharedMemTestEnv> test_env_; 00056 scoped_ptr<AbstractSharedMem> shmem_runtime_; 00057 MockMessageHandler handler_; 00058 MockTimer timer_; 00059 00060 00061 00062 scoped_ptr<ThreadSystem> thread_system_; 00063 MockScheduler scheduler_; 00064 MD5Hasher hasher_; 00065 scoped_ptr<SharedMemLockManager> root_lock_manager_; 00066 00067 DISALLOW_COPY_AND_ASSIGN(SharedMemLockManagerTestBase); 00068 }; 00069 00070 template<typename ConcreteTestEnv> 00071 class SharedMemLockManagerTestTemplate : public SharedMemLockManagerTestBase { 00072 public: 00073 SharedMemLockManagerTestTemplate() 00074 : SharedMemLockManagerTestBase(new ConcreteTestEnv) { 00075 } 00076 }; 00077 00078 TYPED_TEST_CASE_P(SharedMemLockManagerTestTemplate); 00079 00080 TYPED_TEST_P(SharedMemLockManagerTestTemplate, TestBasic) { 00081 SharedMemLockManagerTestBase::TestBasic(); 00082 } 00083 00084 TYPED_TEST_P(SharedMemLockManagerTestTemplate, TestDestructorUnlock) { 00085 SharedMemLockManagerTestBase::TestDestructorUnlock(); 00086 } 00087 00088 TYPED_TEST_P(SharedMemLockManagerTestTemplate, TestSteal) { 00089 SharedMemLockManagerTestBase::TestSteal(); 00090 } 00091 00092 REGISTER_TYPED_TEST_CASE_P(SharedMemLockManagerTestTemplate, TestBasic, 00093 TestDestructorUnlock, TestSteal); 00094 00095 } 00096 00097 #endif ///< NET_INSTAWEB_UTIL_PUBLIC_SHARED_MEM_LOCK_MANAGER_TEST_BASE_H_