[PATCH xorg-gtest 1/2] process: Terminate/Kill can use a common helper function

Chase Douglas chase.douglas at canonical.com
Wed Jul 11 18:26:39 PDT 2012


On 07/11/2012 05:24 PM, Peter Hutterer wrote:
> The only difference is the signal and the message, and we can probably live
> without the message differentiation (since it throws an exception anyways).
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
> We could also just reduce this into one Kill(signal) function and just ask the
> caller to provide SIGTERM/SIGKILL as argument.
>
>   include/xorg/gtest/xorg-gtest-process.h |    1 +
>   src/process.cpp                         |   27 ++++++++++-----------------
>   2 files changed, 11 insertions(+), 17 deletions(-)
>
> diff --git a/include/xorg/gtest/xorg-gtest-process.h b/include/xorg/gtest/xorg-gtest-process.h
> index 0b721ce..e8c8d14 100644
> --- a/include/xorg/gtest/xorg-gtest-process.h
> +++ b/include/xorg/gtest/xorg-gtest-process.h
> @@ -174,6 +174,7 @@ class Process {
>     /* Disable copy constructor, assignment operator */
>     Process(const Process&);
>     Process& operator=(const Process&);
> +  bool KillSelf(int signal);
>   };
>
>   } // testing
> diff --git a/src/process.cpp b/src/process.cpp
> index 7b60afc..be3bbda 100644
> --- a/src/process.cpp
> +++ b/src/process.cpp
> @@ -93,30 +93,15 @@ void xorg::testing::Process::Start(const std::string& program, ...) {
>     va_end(list); /* Shouldn't get here */
>   }
>
> -bool xorg::testing::Process::Terminate() {
> -  if (d_->pid == -1) {
> -    return false;
> -  } else if (d_->pid == 0) {
> -    /* Child */
> -    throw std::runtime_error("Child process tried to terminate itself");
> -  } else { /* Parent */
> -    if (kill(d_->pid, SIGTERM) < 0) {
> -      d_->pid = -1;
> -      return false;
> -    }
> -    d_->pid = -1;
> -  }
> -  return true;
> -}
>
> -bool xorg::testing::Process::Kill() {
> +bool xorg::testing::Process::KillSelf(int signal) {
>     if (d_->pid == -1) {
>       return false;
>     } else if (d_->pid == 0) {
>       /* Child */
>       throw std::runtime_error("Child process tried to kill itself");
>     } else { /* Parent */
> -    if (kill(d_->pid, SIGKILL) < 0) {
> +    if (kill(d_->pid, signal) < 0) {
>         d_->pid = -1;
>         return false;
>       }
> @@ -125,6 +110,14 @@ bool xorg::testing::Process::Kill() {
>     return true;
>   }
>
> +bool xorg::testing::Process::Terminate(void) {
> +  return KillSelf(SIGTERM);
> +}
> +
> +bool xorg::testing::Process::Kill(void) {
> +  return KillSelf(SIGKILL);
> +}
> +
>   void xorg::testing::Process::SetEnv(const std::string& name,
>                                       const std::string& value, bool overwrite) {
>     if (setenv(name.c_str(), value.c_str(), overwrite) != 0)
>

Looks good :).

Reviewed-by: Chase Douglas <chase.douglas at canonical.com>


More information about the xorg-devel mailing list