From 9408f16c06124853d19807afefc141684a1f2a8b Mon Sep 17 00:00:00 2001 From: David Disseldorp Date: Mon, 15 Apr 2019 20:08:30 +0200 Subject: [PATCH] test: extend LibCephFS.Xattrs test Additionally check that: - a zero buflen returns the needed length - a non-zero buflen less than needed fails - the list-length is non-zero following setxattr Signed-off-by: David Disseldorp --- src/test/libcephfs/test.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/test/libcephfs/test.cc b/src/test/libcephfs/test.cc index 78b95af801cb4..343aab9b2887e 100644 --- a/src/test/libcephfs/test.cc +++ b/src/test/libcephfs/test.cc @@ -518,8 +518,18 @@ TEST(LibCephFS, Xattrs) { ASSERT_EQ(ceph_setxattr(cmount, test_xattr_file, xattrk, (void *) xattrv, len, XATTR_CREATE), 0); } + // zero size should return required buffer length + int len_needed = ceph_listxattr(cmount, test_xattr_file, NULL, 0); + ASSERT_GT(len_needed, 0); + + // buffer size smaller than needed should fail char xattrlist[128*26]; - int len = ceph_listxattr(cmount, test_xattr_file, xattrlist, sizeof(xattrlist)); + ASSERT_GT(sizeof(xattrlist), (size_t)len_needed); + int len = ceph_listxattr(cmount, test_xattr_file, xattrlist, len_needed - 1); + ASSERT_EQ(-ERANGE, len); + + len = ceph_listxattr(cmount, test_xattr_file, xattrlist, sizeof(xattrlist)); + ASSERT_EQ(len, len_needed); char *p = xattrlist; char *n; i = 'a'; -- 2.39.5