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();
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();
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));