]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test/rbd-mirror: allow test to be run repeatedly
authorJason Dillaman <dillaman@redhat.com>
Fri, 14 Feb 2020 21:07:14 +0000 (16:07 -0500)
committerJason Dillaman <dillaman@redhat.com>
Fri, 21 Feb 2020 15:01:01 +0000 (10:01 -0500)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/test/rbd_mirror/test_mock_NamespaceReplayer.cc

index 153bd58b2a41a08dcdcd0b914b86d1b5d26f30a5..da6436cc18de74c29d2fe29d85c333679bf17f34 100644 (file)
@@ -172,6 +172,8 @@ InstanceWatcher<librbd::MockTestImageCtx>* InstanceWatcher<librbd::MockTestImage
 
 template <>
 struct MirrorStatusUpdater<librbd::MockTestImageCtx> {
+  std::string local_mirror_uuid;
+
   static std::map<std::string, MirrorStatusUpdater*> s_instance;
 
   static MirrorStatusUpdater *create(librados::IoCtx &io_ctx,
@@ -181,9 +183,13 @@ struct MirrorStatusUpdater<librbd::MockTestImageCtx> {
     return s_instance[local_mirror_uuid];
   }
 
-  MirrorStatusUpdater(const std::string_view& local_mirror_uuid) {
+  MirrorStatusUpdater(const std::string_view& local_mirror_uuid)
+    : local_mirror_uuid(local_mirror_uuid) {
     s_instance[std::string{local_mirror_uuid}] = this;
   }
+  ~MirrorStatusUpdater() {
+    s_instance.erase(local_mirror_uuid);
+  }
 
   MOCK_METHOD1(init, void(Context *));
   MOCK_METHOD1(shut_down, void(Context *));
@@ -194,6 +200,8 @@ std::map<std::string, MirrorStatusUpdater<librbd::MockTestImageCtx> *>
 
 template<>
 struct PoolWatcher<librbd::MockTestImageCtx> {
+  int64_t pool_id = -1;
+
   static std::map<int64_t, PoolWatcher *> s_instances;
 
   static PoolWatcher *create(Threads<librbd::MockTestImageCtx> *threads,
@@ -212,10 +220,13 @@ struct PoolWatcher<librbd::MockTestImageCtx> {
   MOCK_METHOD1(init, void(Context*));
   MOCK_METHOD1(shut_down, void(Context*));
 
-  PoolWatcher(int64_t pool_id) {
+  PoolWatcher(int64_t pool_id) : pool_id(pool_id) {
     ceph_assert(!s_instances.count(pool_id));
     s_instances[pool_id] = this;
   }
+  ~PoolWatcher() {
+    s_instances.erase(pool_id);
+  }
 };
 
 std::map<int64_t, PoolWatcher<librbd::MockTestImageCtx> *> PoolWatcher<librbd::MockTestImageCtx>::s_instances;
@@ -524,7 +535,7 @@ TEST_F(TestMockNamespaceReplayer, Init) {
   ASSERT_EQ(0, on_shut_down.wait());
 }
 
-TEST_F(TestMockNamespaceReplayer, AcuqireLeader) {
+TEST_F(TestMockNamespaceReplayer, AcquireLeader) {
   InSequence seq;
 
   // init