From: Wei Wang Date: Tue, 26 Jul 2022 14:22:54 +0000 (+0000) Subject: librados: unit tests to compare stat and stat2 X-Git-Tag: v18.0.0~86^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4cee17ddaa9df5d31b92e164b8cfaf470f772609;p=ceph.git librados: unit tests to compare stat and stat2 Signed-off-by: Wei Wang --- diff --git a/src/test/librados/c_read_operations.cc b/src/test/librados/c_read_operations.cc index c3d4c5b30143..bdcca640304c 100644 --- a/src/test/librados/c_read_operations.cc +++ b/src/test/librados/c_read_operations.cc @@ -585,13 +585,20 @@ TEST_F(CReadOpsTest, Stat) { EXPECT_EQ(1u, size); rados_release_read_op(op); - write_object(); + time_t ts = 1457129052; + rados_write_op_t wop = rados_create_write_op(); + rados_write_op_write(wop, data, len, 0); + EXPECT_EQ(0, rados_write_op_operate(wop, ioctx, obj, &ts, 0)); + rados_release_write_op(wop); + time_t ts2; op = rados_create_read_op(); - rados_read_op_stat(op, &size, NULL, &rval); + rados_read_op_stat(op, &size, &ts2, &rval); EXPECT_EQ(0, rados_read_op_operate(op, ioctx, obj, 0)); EXPECT_EQ(0, rval); EXPECT_EQ(len, size); + EXPECT_EQ(ts2, ts); + rados_release_read_op(op); op = rados_create_read_op(); @@ -617,13 +624,23 @@ TEST_F(CReadOpsTest, Stat2) { EXPECT_EQ(1u, size); rados_release_read_op(op); - write_object(); + struct timespec ts; + ts.tv_sec = 1457129052; + ts.tv_nsec = 123456789; + rados_write_op_t wop = rados_create_write_op(); + rados_write_op_write(wop, data, len, 0); + EXPECT_EQ(0, rados_write_op_operate2(wop, ioctx, obj, &ts, 0)); + rados_release_write_op(wop); + struct timespec ts2; op = rados_create_read_op(); - rados_read_op_stat2(op, &size, NULL, &rval); + rados_read_op_stat2(op, &size, &ts2, &rval); EXPECT_EQ(0, rados_read_op_operate(op, ioctx, obj, 0)); EXPECT_EQ(0, rval); EXPECT_EQ(len, size); + EXPECT_EQ(ts2.tv_sec, ts.tv_sec); + EXPECT_EQ(ts2.tv_nsec, ts.tv_nsec); + rados_release_read_op(op); op = rados_create_read_op(); diff --git a/src/test/librados/stat.cc b/src/test/librados/stat.cc index fd6677427387..cb035cbf61c3 100644 --- a/src/test/librados/stat.cc +++ b/src/test/librados/stat.cc @@ -22,6 +22,32 @@ TEST_F(LibRadosStat, Stat) { ASSERT_EQ(-ENOENT, rados_stat(ioctx, "nonexistent", &size, &mtime)); } +TEST_F(LibRadosStat, Stat2) { + char buf[128]; + memset(buf, 0xcc, sizeof(buf)); + rados_write_op_t op = rados_create_write_op(); + rados_write_op_write(op, buf, sizeof(buf), 0); + struct timespec ts; + ts.tv_sec = 1457129052; + ts.tv_nsec = 123456789; + ASSERT_EQ(0, rados_write_op_operate2(op, ioctx, "foo", &ts, 0)); + rados_release_write_op(op); + + uint64_t size; + time_t mtime; + ASSERT_EQ(0, rados_stat(ioctx, "foo", &size, &mtime)); + ASSERT_EQ(sizeof(buf), size); + ASSERT_EQ(mtime, ts.tv_sec); + + struct timespec ts2; + ASSERT_EQ(0, rados_stat2(ioctx, "foo", &size, &ts2)); + ASSERT_EQ(sizeof(buf), size); + ASSERT_EQ(ts2.tv_sec, ts.tv_sec); + ASSERT_EQ(ts2.tv_nsec, ts.tv_nsec); + + ASSERT_EQ(-ENOENT, rados_stat2(ioctx, "nonexistent", &size, &ts2)); +} + TEST_F(LibRadosStat, StatNS) { char buf[128]; memset(buf, 0xcc, sizeof(buf));