]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
testrados: more getxattr / setxattr tests
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Thu, 19 May 2011 18:37:35 +0000 (11:37 -0700)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Thu, 19 May 2011 18:48:21 +0000 (11:48 -0700)
Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
src/testrados.c

index 38994b7782a7301c6da1e47b9e122b800622f2c6..b689f0ffaa10364e9294fbc6dda6470bc3f56ae7 100644 (file)
 #include <stdlib.h>
 #include <time.h>
 
+static void do_rados_setxattr(rados_ioctx_t io_ctx, const char *oid,
+                       const char *key, const char *val)
+{
+       int ret = rados_setxattr(io_ctx, oid, key, val, strlen(val));
+       if (ret < 0) {
+               printf("rados_setxattr failed with error %d\n", ret);
+               exit(1);
+       }
+       printf("rados_setxattr %s=%s\n", key, val);
+}
+
+static void do_rados_getxattr(rados_ioctx_t io_ctx, const char *oid,
+                       const char *key, const char *expected)
+{
+       size_t blen = strlen(expected) + 1;
+       char buf[blen];
+       memset(buf, 0, sizeof(buf));
+       int r = rados_getxattr(io_ctx, oid, key, buf, blen);
+       if (r < 0) {
+               printf("rados_getxattr(%s) failed with error %d\n", key, r);
+               exit(1);
+       }
+       if (strcmp(buf, expected) != 0) {
+               printf("rados_getxattr(%s) got wrong result! "
+                      "expected: '%s'. got '%s'\n", key, expected, buf);
+               exit(1);
+       }
+       printf("rados_getxattr %s=%s\n", key, buf);
+}
+
 int main(int argc, const char **argv) 
 {
   char tmp[32];
@@ -136,13 +166,12 @@ int main(int argc, const char **argv)
     printf("*** content mismatch ***\n");
 
   /* attrs */
-  r = rados_setxattr(io_ctx, oid, "attr1", "bar", 3);
-  printf("rados_setxattr attr1=bar = %d\n", r);
-  char val[10];
-  r = rados_getxattr(io_ctx, oid, "attr1", val, sizeof(val));
-  printf("rados_getxattr attr1 = %d\n", r);
-  if (memcmp(val, "bar", 3))
-    printf("*** attr value mismatch ***\n");
+  do_rados_setxattr(io_ctx, oid, "b", "2");
+  do_rados_setxattr(io_ctx, oid, "a", "1");
+  do_rados_setxattr(io_ctx, oid, "c", "3");
+  do_rados_getxattr(io_ctx, oid, "a", "1");
+  do_rados_getxattr(io_ctx, oid, "b", "2");
+  do_rados_getxattr(io_ctx, oid, "c", "3");
 
   uint64_t size;
   time_t mtime;