]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
testrados: test more stuff
authorSage Weil <sage@newdream.net>
Thu, 8 Apr 2010 22:52:40 +0000 (15:52 -0700)
committerSage Weil <sage@newdream.net>
Thu, 8 Apr 2010 22:52:40 +0000 (15:52 -0700)
src/testrados.c

index 6bc58c8f7e46eb1b572342872b56ca1c3b48ef81..f967c3b1c48fea2c98f34f2bb40cc1a5c87c4f68 100644 (file)
 
 int main(int argc, const char **argv) 
 {
+  int i, r;
+
   if (rados_initialize(argc, argv) < 0) {
     printf("error initializing\n");
     exit(1);
   }
 
+  rados_pool_t pool;
+  r = rados_open_pool("data", &pool);
+  printf("rados_open_pool = %d, pool = %p\n", r, pool);
+
+  /* list objects */
+  rados_list_ctx_t pctx;
+  rados_pool_init_ctx(&pctx);
+  const char *poolname;
+  while (rados_pool_list_next(pool, &poolname, &pctx) == 0)
+    printf("rados_pool_list_next got object '%s'\n", poolname);
+  rados_pool_close_ctx(&pctx);
+
+  /* create a pool */
+  r = rados_create_pool("foo");
+  printf("rados_create_pool = %d\n", r);
+
+  /* delete a pool */
+  rados_pool_t newpool;
+  rados_open_pool("foo", &newpool);
+  r = rados_delete_pool(newpool);
+  printf("rados_delete_pool = %d\n", r);  
+
+  /* snapshots */
+  r = rados_snap_create(pool, "snap1");
+  printf("rados_snap_create snap1 = %d\n", r);
+  rados_snap_t snaps[10];
+  r = rados_snap_list(pool, snaps, 10);
+  for (i=0; i<r; i++) {
+    char name[100];
+    rados_snap_get_name(pool, snaps[i], name, sizeof(name));
+    printf("rados_snap_list got snap %lld %s\n", snaps[i], name);
+  }
+  rados_snap_t snapid;
+  r = rados_snap_lookup(pool, "snap1", &snapid);
+  printf("rados_snap_lookup snap1 got %lld, result %d\n", snapid, r);
+  r = rados_snap_remove(pool, "snap1");
+  printf("rados_snap_remove snap1 = %d\n", r);
+
+  /* sync io */
   time_t tm;
   char buf[128], buf2[128];
-
   time(&tm);
   snprintf(buf, 128, "%s", ctime(&tm));
-
-  const char *oid = "foo";
-
-  rados_pool_t pool;
-  int r = rados_open_pool("data", &pool);
-  printf("open pool result = %d, pool = %p\n", r, pool);
-
-  rados_write(pool, oid, 0, buf, strlen(buf) + 1);
+  const char *oid = "foo_object";
+  r = rados_write(pool, oid, 0, buf, strlen(buf) + 1);
+  printf("rados_write = %d\n", r);
+  r = rados_read(pool, oid, 0, buf2, sizeof(buf2));
+  printf("rados_read = %d\n", r);
+  if (memcmp(buf, buf2, r))
+    printf("*** content mismatch ***\n");
+
+  /* attrs */
+  r = rados_setxattr(pool, oid, "attr1", "bar", 3);
+  printf("rados_setxattr attr1=bar = %d\n", r);
+  char val[10];
+  r = rados_getxattr(pool, oid, "attr1", val, sizeof(val));
+  printf("rados_getxattr attr1 = %d\n", r);
+  if (memcmp(val, "bar", 3))
+    printf("*** attr value mismatch ***\n");
+
+  __u64 size;
+  time_t mtime;
+  r = rados_stat(pool, oid, &size, &mtime);
+  printf("rados_stat size = %lld mtime = %d = %d\n", size, (int)mtime, r);
+
+  /* tmap */
+
+  /* exec */
   rados_exec(pool, oid, "crypto", "md5", buf, strlen(buf) + 1, buf, 128);
   printf("exec result=%s\n", buf);
-  int size = rados_read(pool, oid, 0, buf2, 128);
+  r = rados_read(pool, oid, 0, buf2, 128);
   printf("read result=%s\n", buf2);
-  printf("size=%d\n", size);
+  printf("size=%d\n", r);
 
-
-  // test aio
+  /* aio */
   rados_completion_t a, b;
   rados_aio_write(pool, "a", 0, buf, 100, &a);
   rados_aio_write(pool, "../b/bb_bb_bb\\foo\\bar", 0, buf, 100, &b);
@@ -69,7 +125,6 @@ int main(int argc, const char **argv)
   
   rados_close_pool(pool);
 
-
   rados_deinitialize();
 
   return 0;