From 430bfafcf3696c918cc61f2ada25e5eb05e68ce1 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Thu, 14 Jan 2016 12:01:51 +0800 Subject: [PATCH] ceph_test_libcephfs: check file open mode Signed-off-by: Yan, Zheng --- src/test/libcephfs/test.cc | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) 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; -- 2.47.3