From: Jason Dillaman Date: Fri, 14 Feb 2020 21:07:14 +0000 (-0500) Subject: test/rbd-mirror: allow test to be run repeatedly X-Git-Tag: v15.1.1~298^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0577d7fed276cb6e91df20b4da7fb83cf1757f92;p=ceph.git test/rbd-mirror: allow test to be run repeatedly Signed-off-by: Jason Dillaman --- diff --git a/src/test/rbd_mirror/test_mock_NamespaceReplayer.cc b/src/test/rbd_mirror/test_mock_NamespaceReplayer.cc index 153bd58b2a41..da6436cc18de 100644 --- a/src/test/rbd_mirror/test_mock_NamespaceReplayer.cc +++ b/src/test/rbd_mirror/test_mock_NamespaceReplayer.cc @@ -172,6 +172,8 @@ InstanceWatcher* InstanceWatcher struct MirrorStatusUpdater { + std::string local_mirror_uuid; + static std::map s_instance; static MirrorStatusUpdater *create(librados::IoCtx &io_ctx, @@ -181,9 +183,13 @@ struct MirrorStatusUpdater { 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 *> template<> struct PoolWatcher { + int64_t pool_id = -1; + static std::map s_instances; static PoolWatcher *create(Threads *threads, @@ -212,10 +220,13 @@ struct PoolWatcher { 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 *> PoolWatcher::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