Skip to content

Commit e203f85

Browse files
authored
Merge pull request ceph#57997 from guojidan/migration-child
test/librbd: add unit test for flatten migration Reviewed-by: Ilya Dryomov <[email protected]>
2 parents d9c4ecd + a5c9a88 commit e203f85

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
@@ -332,6 +332,16 @@ struct TestMigration : public TestFixture {
332332
ASSERT_EQ(0, m_ictx->operations->resize(size, true, no_op));
333333
}
334334

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

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

1092+
ASSERT_EQ(0, m_opts.set(RBD_IMAGE_OPTION_FLATTEN, 1));
10601093
migration_prepare(m_ioctx, m_image_name);
10611094

10621095
write(0, 1, 'Y');
10631096

1097+
test_children(true, initial_image_name);
10641098
migration_execute(m_ioctx, m_image_name);
10651099
migration_commit(m_ioctx, m_image_name);
1100+
test_children(false, initial_image_name);
10661101
}
10671102

10681103
TEST_F(TestMigration, TriggerAssertSnapcSeq)

0 commit comments

Comments
 (0)