]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librados: unit tests to compare stat and stat2
authorWei Wang <lightmelodies@outlook.com>
Tue, 26 Jul 2022 14:22:54 +0000 (14:22 +0000)
committerWei Wang <lightmelodies@outlook.com>
Tue, 26 Jul 2022 14:22:54 +0000 (14:22 +0000)
Signed-off-by: Wei Wang <lightmelodies@outlook.com>
src/test/librados/c_read_operations.cc
src/test/librados/stat.cc

index c3d4c5b30143f72c510e7d13c4ed7456795a6245..bdcca640304cd635b8584638b27e0f9cd1a7810e 100644 (file)
@@ -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();
index fd667742738734c0cd6462bd91a900ade01fec19..cb035cbf61c3f920d7bb5ebe68181ce765a11ef8 100644 (file)
@@ -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));