From: Matan Date: Tue, 23 May 2023 08:23:05 +0000 (+0200) Subject: Merge pull request #51629 from Matan-B/wip-50491-reef X-Git-Tag: v18.1.0~57 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=07a5881d1c7e351db6724285c4d374866ae30ef4;p=ceph-ci.git Merge pull request #51629 from Matan-B/wip-50491-reef reef: test/librados/snapshots*: Enable Crimson supported tests Reviewed-by: Laura Flores Reviewed-by: Samuel Just --- 07a5881d1c7e351db6724285c4d374866ae30ef4 diff --cc src/test/librados/snapshots_cxx.cc index 83e3bd36172,de4e30d7603..d2f14bb7491 --- a/src/test/librados/snapshots_cxx.cc +++ b/src/test/librados/snapshots_cxx.cc @@@ -465,55 -459,7 +459,54 @@@ TEST_F(LibRadosSnapshotsSelfManagedPP, comp4->release(); } +TEST_F(LibRadosSnapshotsSelfManagedPP, WriteRollback) { + // https://tracker.ceph.com/issues/59114 + GTEST_SKIP(); + uint64_t snapid = 5; + + // buf1 + char buf[bufsize]; + memset(buf, 0xcc, sizeof(buf)); + bufferlist bl; + bl.append(buf, sizeof(buf)); + + // buf2 + char buf2[sizeof(buf)]; + memset(buf2, 0xdd, sizeof(buf2)); + bufferlist bl2; + bl2.append(buf2, sizeof(buf2)); + + // First write + ObjectWriteOperation op_write1; + op_write1.write(0, bl); + // Operate + librados::AioCompletion *comp_write = cluster.aio_create_completion(); + ASSERT_EQ(0, ioctx.aio_operate("foo", comp_write, &op_write1, 0)); + ASSERT_EQ(0, comp_write->wait_for_complete()); + ASSERT_EQ(0, comp_write->get_return_value()); + comp_write->release(); + + // Take Snapshot + ASSERT_EQ(0, ioctx.selfmanaged_snap_create(&snapid)); + + // Rollback + Second write in the same op + ObjectWriteOperation op_write2_snap_rollback; + op_write2_snap_rollback.write(0, bl2); + op_write2_snap_rollback.selfmanaged_snap_rollback(snapid); + // Operate + librados::AioCompletion *comp_write2 = cluster.aio_create_completion(); + ASSERT_EQ(0, ioctx.aio_operate("foo", comp_write2, &op_write2_snap_rollback, 0)); + ASSERT_EQ(0, comp_write2->wait_for_complete()); + ASSERT_EQ(0, comp_write2->get_return_value()); + comp_write2->release(); + + // Resolved should be first write + bufferlist bl3; + EXPECT_EQ((int)sizeof(buf), ioctx.read("foo", bl3, sizeof(buf), 0)); + EXPECT_EQ(0, memcmp(buf, bl3.c_str(), sizeof(buf))); +} + TEST_F(LibRadosSnapshotsSelfManagedPP, ReusePurgedSnap) { - SKIP_IF_CRIMSON(); std::vector my_snaps; my_snaps.push_back(-2); ASSERT_EQ(0, ioctx.selfmanaged_snap_create(&my_snaps.back()));