From 1d6a3e44eccae919358f5a24b69d8ed217214fa0 Mon Sep 17 00:00:00 2001 From: huanwen ren Date: Tue, 18 Oct 2016 16:24:16 +0800 Subject: [PATCH] test/libcephfs: add ceph_fsetattr() test Signed-off-by: huanwen ren --- src/test/libcephfs/test.cc | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/test/libcephfs/test.cc b/src/test/libcephfs/test.cc index ab277b59d8cce..48ce5d0539ed3 100644 --- a/src/test/libcephfs/test.cc +++ b/src/test/libcephfs/test.cc @@ -1158,6 +1158,7 @@ TEST(LibCephFS, UseUnmounted) { EXPECT_EQ(-ENOTCONN, ceph_lremovexattr(cmount, "/path", "name")); EXPECT_EQ(-ENOTCONN, ceph_setxattr(cmount, "/path", "name", NULL, 0, 0)); EXPECT_EQ(-ENOTCONN, ceph_lsetxattr(cmount, "/path", "name", NULL, 0, 0)); + EXPECT_EQ(-ENOTCONN, ceph_fsetattr(cmount, 0, &st, 0)); EXPECT_EQ(-ENOTCONN, ceph_chmod(cmount, "/path", 0)); EXPECT_EQ(-ENOTCONN, ceph_fchmod(cmount, 0, 0)); EXPECT_EQ(-ENOTCONN, ceph_chown(cmount, "/path", 0, 0)); @@ -1670,3 +1671,30 @@ TEST(LibCephFS, DirChangeAttr) { ceph_shutdown(cmount); } + +TEST(LibCephFS, SetSize) { + struct ceph_mount_info *cmount; + ASSERT_EQ(ceph_create(&cmount, NULL), 0); + ASSERT_EQ(ceph_conf_read_file(cmount, NULL), 0); + ASSERT_EQ(0, ceph_conf_parse_env(cmount, NULL)); + ASSERT_EQ(ceph_mount(cmount, "/"), 0); + + char filename[32]; + sprintf(filename, "/setsize%x", getpid()); + + ceph_unlink(cmount, filename); + int fd = ceph_open(cmount, filename, O_RDWR|O_CREAT|O_EXCL, 0666); + ASSERT_LT(0, fd); + + struct stat st; + uint64_t size = 8388608; + st.st_size = (off_t)size; + ASSERT_EQ(ceph_fsetattr(cmount, fd, &st, CEPH_SETATTR_SIZE), 0); + + struct stat stbuf; + ASSERT_EQ(ceph_fstat(cmount, fd, &stbuf), 0); + ASSERT_EQ(stbuf.st_size, (off_t)size); + + ceph_close(cmount, fd); + ceph_shutdown(cmount); +} -- 2.47.3