From: Yan, Zheng Date: Thu, 14 Jan 2016 04:01:51 +0000 (+0800) Subject: ceph_test_libcephfs: check file open mode X-Git-Tag: v10.0.3~12^2~1^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=430bfafcf3696c918cc61f2ada25e5eb05e68ce1;p=ceph.git ceph_test_libcephfs: check file open mode Signed-off-by: Yan, Zheng --- diff --git a/src/test/libcephfs/test.cc b/src/test/libcephfs/test.cc index 6b088df5c427..c11e04c2153f 100644 --- a/src/test/libcephfs/test.cc +++ b/src/test/libcephfs/test.cc @@ -66,6 +66,40 @@ TEST(LibCephFS, OpenEmptyComponent) { ceph_shutdown(cmount); } +TEST(LibCephFS, OpenReadWrite) { + struct ceph_mount_info *cmount; + ASSERT_EQ(0, ceph_create(&cmount, NULL)); + ASSERT_EQ(0, ceph_conf_read_file(cmount, NULL)); + ASSERT_EQ(0, ceph_conf_parse_env(cmount, NULL)); + ASSERT_EQ(0, ceph_mount(cmount, "/")); + + char c_path[1024]; + sprintf(c_path, "test_open_rdwr_%d", getpid()); + int fd = ceph_open(cmount, c_path, O_WRONLY|O_CREAT, 0666); + ASSERT_LT(0, fd); + + const char *out_buf = "hello world"; + size_t size = strlen(out_buf); + char in_buf[100]; + ASSERT_EQ(ceph_write(cmount, fd, out_buf, size, 0), size); + ASSERT_EQ(ceph_read(cmount, fd, in_buf, sizeof(in_buf), 0), -EBADF); + ASSERT_EQ(0, ceph_close(cmount, fd)); + + fd = ceph_open(cmount, c_path, O_RDONLY, 0); + ASSERT_LT(0, fd); + ASSERT_EQ(ceph_write(cmount, fd, out_buf, size, 0), -EBADF); + ASSERT_EQ(ceph_read(cmount, fd, in_buf, sizeof(in_buf), 0), size); + ASSERT_EQ(0, ceph_close(cmount, fd)); + + fd = ceph_open(cmount, c_path, O_RDWR, 0); + ASSERT_LT(0, fd); + ASSERT_EQ(ceph_write(cmount, fd, out_buf, size, 0), size); + ASSERT_EQ(ceph_read(cmount, fd, in_buf, sizeof(in_buf), 0), size); + ASSERT_EQ(0, ceph_close(cmount, fd)); + + ceph_shutdown(cmount); +} + TEST(LibCephFS, MountNonExist) { struct ceph_mount_info *cmount;