Skip to content

Commit a5c9a88

Browse files
guojidanidryomov
andcommitted
test/librbd: add unit test for flatten migration
Fixes: https://tracker.ceph.com/issues/65743 Co-authored-by: Ilya Dryomov <[email protected]> Signed-off-by: junxiang Mu <[email protected]> Signed-off-by: Ilya Dryomov <[email protected]>
1 parent 0d61375 commit a5c9a88

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

src/test/librbd/test_Migration.cc

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,16 @@ struct TestMigration : public TestFixture {
330330
ASSERT_EQ(0, m_ictx->operations->resize(size, true, no_op));
331331
}
332332

333+
void test_children(bool have, std::string initial_image_name) {
334+
std::vector<librbd::linked_image_spec_t> images;
335+
librbd::ImageCtx *initial_ictx = nullptr;
336+
open_image(m_ioctx, initial_image_name, &initial_ictx);
337+
EXPECT_EQ(0, librbd::api::Image<>::snap_set(
338+
initial_ictx, cls::rbd::UserSnapshotNamespace(), "snap"));
339+
ASSERT_EQ(0, librbd::api::Image<>::list_children(initial_ictx, &images));
340+
ASSERT_EQ(have, !images.empty());
341+
}
342+
333343
void test_no_snaps() {
334344
uint64_t len = (1 << m_ictx->order) * 2 + 1;
335345
write(0 * len, len, '1');
@@ -1051,16 +1061,41 @@ TEST_F(TestMigration, CloneUpdateAfterPrepare)
10511061
{
10521062
REQUIRE_FEATURE(RBD_FEATURE_LAYERING);
10531063

1064+
auto initial_image_name = m_image_name;
1065+
1066+
write(0, 10, 'X');
1067+
snap_create("snap");
1068+
clone("snap");
1069+
1070+
migration_prepare(m_ioctx, m_image_name);
1071+
1072+
write(0, 1, 'Y');
1073+
1074+
test_children(true, initial_image_name);
1075+
migration_execute(m_ioctx, m_image_name);
1076+
migration_commit(m_ioctx, m_image_name);
1077+
test_children(true, initial_image_name);
1078+
}
1079+
1080+
TEST_F(TestMigration, CloneFlatten)
1081+
{
1082+
REQUIRE_FEATURE(RBD_FEATURE_LAYERING);
1083+
1084+
auto initial_image_name = m_image_name;
1085+
10541086
write(0, 10, 'X');
10551087
snap_create("snap");
10561088
clone("snap");
10571089

1090+
ASSERT_EQ(0, m_opts.set(RBD_IMAGE_OPTION_FLATTEN, 1));
10581091
migration_prepare(m_ioctx, m_image_name);
10591092

10601093
write(0, 1, 'Y');
10611094

1095+
test_children(true, initial_image_name);
10621096
migration_execute(m_ioctx, m_image_name);
10631097
migration_commit(m_ioctx, m_image_name);
1098+
test_children(false, initial_image_name);
10641099
}
10651100

10661101
TEST_F(TestMigration, TriggerAssertSnapcSeq)

0 commit comments

Comments
 (0)