[PATCH xorg-gtest 06/16] xserver: move Terminate and Kill handling here
Chase Douglas
chase.douglas at canonical.com
Tue Jul 3 10:33:50 PDT 2012
On 07/02/2012 11:44 PM, Peter Hutterer wrote:
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
> include/xorg/gtest/xorg-gtest-xserver.h | 13 ++++++++++++
> src/environment.cpp | 31 +++-------------------------
> src/xserver.cpp | 34 +++++++++++++++++++++++++++++++
> 3 files changed, 50 insertions(+), 28 deletions(-)
>
> diff --git a/include/xorg/gtest/xorg-gtest-xserver.h b/include/xorg/gtest/xorg-gtest-xserver.h
> index 52a2fd0..821b01f 100644
> --- a/include/xorg/gtest/xorg-gtest-xserver.h
> +++ b/include/xorg/gtest/xorg-gtest-xserver.h
> @@ -53,6 +53,19 @@ class XServer : public xorg::testing::Process {
> void Start(std::string &program);
>
> /**
> + * Terminates this server process. Will signal the server to terminate
> + * multiple times before giving up.
> + *
> + * @return false if the server did not terminate, true otherwise
> + */
> + bool Terminate(void);
> +
> + /**
> + * Kills the server. With a vengeance.
> + */
> + bool Kill(void);
We don't need to recreate these functions. We've already inherited them
from xorg::testing::Process. Those implementations should work
automatically if we set up the XServer class properly.
> +
> + /**
> * Waits until this server is ready to take connections.
> */
> void WaitForConnections(void);
> diff --git a/src/environment.cpp b/src/environment.cpp
> index 69972a4..b041236 100644
> --- a/src/environment.cpp
> +++ b/src/environment.cpp
> @@ -116,35 +116,10 @@ void xorg::testing::Environment::SetUp() {
> }
>
> void xorg::testing::Environment::TearDown() {
> - if (d_->server.Terminate()) {
> - for (int i = 0; i < 10; i++) {
> - int status;
> - int pid = waitpid(d_->server.Pid(), &status, WNOHANG);
> -
> - if (pid == d_->server.Pid())
> - return;
> -
> - sleep(1); /* Give the dummy X server more time to shut down */
> - }
> - }
> -
> - Kill();
> + if (!d_->server.Terminate())
> + Kill();
> }
>
> void xorg::testing::Environment::Kill() {
> - if (!d_->server.Kill())
> - std::cerr << "Warning: Failed to kill dummy Xorg server: "
> - << std::strerror(errno) << "\n";
> -
> - for (int i = 0; i < 10; i++) {
> - int status;
> - int pid = waitpid(d_->server.Pid(), &status, WNOHANG);
> -
> - if (pid == d_->server.Pid())
> - return;
> -
> - sleep(1); /* Give the dummy X server more time to shut down */
> - }
> -
> - std::cerr << "Warning: Dummy X server did not shut down\n";
> + d_->server.Kill();
> }
> diff --git a/src/xserver.cpp b/src/xserver.cpp
> index 1a46dbb..bd1e2f9 100644
> --- a/src/xserver.cpp
> +++ b/src/xserver.cpp
> @@ -298,3 +298,37 @@ void xorg::testing::XServer::Start(std::string &program) {
> "-config", d_->path_to_conf.c_str(),
> NULL);
> }
> +
> +bool xorg::testing::XServer::Terminate(void) {
> + if (Process::Terminate()) {
> + for (int i = 0; i < 10; i++) {
> + int status;
> + int pid = waitpid(Pid(), &status, WNOHANG);
> +
> + if (pid == Pid())
> + return true;
> +
> + sleep(1); /* Give the dummy X server more time to shut down */
> + }
> + }
> + return false;
> +}
> +
> +bool xorg::testing::XServer::Kill(void) {
> + if (!Process::Kill())
> + std::cerr << "Warning: Failed to kill dummy Xorg server: "
> + << std::strerror(errno) << "\n";
> +
> + for (int i = 0; i < 10; i++) {
> + int status;
> + int pid = waitpid(Pid(), &status, WNOHANG);
> +
> + if (pid == Pid())
> + return true;
> +
> + sleep(1); /* Give the dummy X server more time to shut down */
> + }
> +
> + std::cerr << "Warning: Dummy X server did not shut down\n";
> + return false;
> +}
>
More information about the xorg-devel
mailing list