]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test/system/st_rados_watch: expect ENOENT for watch on non-existent object
authorSamuel Just <sam.just@inktank.com>
Tue, 11 Mar 2014 18:25:47 +0000 (11:25 -0700)
committerSamuel Just <sam.just@inktank.com>
Wed, 12 Mar 2014 23:26:00 +0000 (16:26 -0700)
Signed-off-by: Samuel Just <sam.just@inktank.com>
src/test/system/rados_watch_notify.cc
src/test/system/st_rados_watch.cc
src/test/system/st_rados_watch.h

index e549d38650527607f25b193dd0a7f899e010449f..6517f33ebe8264643ff07b4a1c3bdbd43f63836a 100644 (file)
@@ -70,7 +70,7 @@ int main(int argc, const char **argv)
   {
     StRadosCreatePool r1(argc, argv, NULL, setup_sem, NULL, pool, 1, ".obj");
     StRadosWatch r2(argc, argv, setup_sem, watch_sem, notify_sem,
-                   1, pool, "0.obj");
+                   1, 0, pool, "0.obj");
     StRadosNotify r3(argc, argv, setup_sem, watch_sem, notify_sem,
                     0, pool, "0.obj");
     vector<SysTestRunnable*> vec;
@@ -94,7 +94,7 @@ int main(int argc, const char **argv)
   {
     StRadosCreatePool r1(argc, argv, NULL, setup_sem, NULL, pool, 0, ".obj");
     StRadosWatch r2(argc, argv, setup_sem, watch_sem, notify_sem,
-                   0, pool, "0.obj");
+                   0, -ENOENT, pool, "0.obj");
     StRadosNotify r3(argc, argv, setup_sem, watch_sem, notify_sem,
                     -ENOENT, pool, "0.obj");
     vector<SysTestRunnable*> vec;
@@ -127,7 +127,7 @@ int main(int argc, const char **argv)
   {
     StRadosCreatePool r1(argc, argv, NULL, setup_sem, NULL, pool, 1, ".obj");
     StRadosWatch r2(argc, argv, setup_sem, watch_sem, finished_notifies_sem,
-                   1, pool, "0.obj");
+                   1, 0, pool, "0.obj");
     StRadosNotify r3(argc, argv, setup_sem, watch_sem, notify_sem,
                     0, pool, "0.obj");
     StRadosDeletePool r4(argc, argv, notify_sem, deleted_sem, pool);
@@ -165,7 +165,7 @@ int main(int argc, const char **argv)
   {
     StRadosCreatePool r1(argc, argv, NULL, setup_sem, NULL, pool, 1, ".obj");
     StRadosWatch r2(argc, argv, setup_sem, watch_sem, finished_notifies_sem,
-                   1, pool, "0.obj");
+                   1, 0, pool, "0.obj");
     StRadosNotify r3(argc, argv, setup_sem, watch_sem, notify_sem,
                     0, pool, "0.obj");
     StRadosDeleteObjs r4(argc, argv, notify_sem, deleted_sem, 1, pool, ".obj");
index 696b0867e8893d8807524b98d3a19bb0e8d43e95..38b7b5eee85a61ebff2fea43750f1382ec9f3a79 100644 (file)
@@ -28,6 +28,7 @@ StRadosWatch::StRadosWatch(int argc, const char **argv,
                           CrossProcessSem *watch_sem,
                           CrossProcessSem *notify_sem,
                           int num_notifies,
+                          int watch_retcode,
                           const std::string &pool_name,
                           const std::string &obj_name)
   : SysTestRunnable(argc, argv),
@@ -35,6 +36,7 @@ StRadosWatch::StRadosWatch(int argc, const char **argv,
     m_watch_sem(watch_sem),
     m_notify_sem(notify_sem),
     m_num_notifies(num_notifies),
+    m_watch_retcode(watch_retcode),
     m_pool_name(pool_name),
     m_obj_name(obj_name)
 {
@@ -65,9 +67,13 @@ run()
   RETURN1_IF_NONZERO(rados_connect(cl));
   RETURN1_IF_NONZERO(rados_ioctx_create(cl, m_pool_name.c_str(), &io_ctx));
   printf("%s: watching object %s\n", get_id_str(), m_obj_name.c_str());
-  RETURN1_IF_NONZERO(rados_watch(io_ctx, m_obj_name.c_str(), 0, &handle,
-                                reinterpret_cast<rados_watchcb_t>(notify_cb),
-                                reinterpret_cast<void*>(&num_notifies)));
+
+  RETURN1_IF_NOT_VAL(
+    rados_watch(io_ctx, m_obj_name.c_str(), 0, &handle,
+               reinterpret_cast<rados_watchcb_t>(notify_cb),
+               reinterpret_cast<void*>(&num_notifies)),
+    m_watch_retcode
+    );
   if (m_watch_sem) {
     m_watch_sem->post();
   }
index e5ae1304b183424d58cd9ec556782b427062b6f5..e3e78c0cc0e176fa14919bd07a423ada28fdf187 100644 (file)
@@ -38,6 +38,7 @@ public:
               CrossProcessSem *watch_sem,
               CrossProcessSem *notify_sem,
               int num_notifies,
+              int watch_retcode,
               const std::string &pool_name,
               const std::string &obj_name);
   ~StRadosWatch();
@@ -47,6 +48,7 @@ private:
   CrossProcessSem *m_watch_sem;
   CrossProcessSem *m_notify_sem;
   int m_num_notifies;
+  int m_watch_retcode;
   std::string m_pool_name;
   std::string m_obj_name;
 };