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