]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
systest_runnable: adjust argument to suite Preforker 4518/head
authorHaomai Wang <haomaiwang@gmail.com>
Fri, 1 May 2015 05:17:31 +0000 (13:17 +0800)
committerHaomai Wang <haomaiwang@gmail.com>
Fri, 1 May 2015 12:27:41 +0000 (20:27 +0800)
Signed-off-by: Haomai Wang <haomaiwang@gmail.com>
src/common/Preforker.h
src/test/system/systest_runnable.cc

index 5970700df1f2ec11a7ac694681321df878dd40d2..4b182389afc4c5373d2f8099bf34c929e78e728b 100644 (file)
@@ -45,8 +45,8 @@ public:
   int prefork(std::string &err) {
     assert(!forked);
     int r = socketpair(AF_UNIX, SOCK_STREAM, 0, fd);
+    std::ostringstream oss;
     if (r < 0) {
-      std::ostringstream oss;
       oss << "[" << getpid() << "]: unable to create socketpair: " << cpp_strerror(errno);
       err = oss.str();
       return r;
@@ -81,7 +81,7 @@ public:
     return childpid != 0;
   }
 
-  int parent_wait(std::string &err) {
+  int parent_wait(std::string &err_msg) {
     assert(forked);
 
     int r = -1;
@@ -111,7 +111,7 @@ public:
          oss << "[" << getpid() << "]" << " returned exit_status " << cpp_strerror(err);
       }
     }
-    err = oss.str();
+    err_msg = oss.str();
     return err;
   }
 
index 32fb36b59872116ff9150af256135e56a8b186f5..c7ed6aa72a2dc8d27adb94ada35a4d4abf8cfcfc 100644 (file)
@@ -80,27 +80,29 @@ start()
   if (m_started) {
     return -EDOM;
   }
+  int ret;
   bool use_threads = SysTestSettings::inst().use_threads();
   if (use_threads) {
-    int ret = pthread_create(&m_pthread, NULL, systest_runnable_pthread_helper,
+    ret = pthread_create(&m_pthread, NULL, systest_runnable_pthread_helper,
                             static_cast<void*>(this));
     if (ret)
       return ret;
     m_started = true;
-    return 0;
-  }
-  else {
-    prefork.prefork();
+  } else {
+    std::string err_msg;
+    ret = preforker.prefork(err_msg);
+    if (ret < 0)
+      preforker.exit(ret);
 
-    if (prefork.is_child()) {
+    if (preforker.is_child()) {
       m_started = true;
       void *retptr = systest_runnable_pthread_helper(static_cast<void*>(this));
-      prefork.exit((int)(uintptr_t)retptr);
+      preforker.exit((int)(uintptr_t)retptr);
     } else {
       m_started = true;
-      return 0;
     }
   }
+  return 0;
 }
 
 std::string SysTestRunnable::
@@ -127,14 +129,9 @@ join()
     }
     return "";
   } else {
-    ret = preforker.parent_wait();
-    if (ret < 0) {
-      ostringstream oss;
-      oss << get_id_str() << " waitpid error: " << cpp_strerror(err);
-      return oss.str();
-    } else {
-      return "";
-    }
+    std::string err_msg;
+    ret = preforker.parent_wait(err_msg);
+    return err_msg;
   }
 }