[PATCH xorg-gtest 02/16] xserver: add WaitForConnections()

2012-07-03 Thread Peter Hutterer
Moved from Environment to XServer class

Signed-off-by: Peter Hutterer peter.hutte...@who-t.net
---
 include/xorg/gtest/xorg-gtest-xserver.h |5 +
 src/environment.cpp |   34 +-
 src/xserver.cpp |   35 +++
 3 files changed, 41 insertions(+), 33 deletions(-)

diff --git a/include/xorg/gtest/xorg-gtest-xserver.h 
b/include/xorg/gtest/xorg-gtest-xserver.h
index 78f72ce..c62970d 100644
--- a/include/xorg/gtest/xorg-gtest-xserver.h
+++ b/include/xorg/gtest/xorg-gtest-xserver.h
@@ -47,6 +47,11 @@ class XServer : public xorg::testing::Process {
 XServer();
 
 /**
+ * Waits until this server is ready to take connections.
+ */
+void WaitForConnections(void);
+
+/**
  * @param [in] display_number The display number the server runs on
  */
 void SetDisplayNumber(unsigned int display_number);
diff --git a/src/environment.cpp b/src/environment.cpp
index 43e1e70..5e7a156 100644
--- a/src/environment.cpp
+++ b/src/environment.cpp
@@ -147,42 +147,10 @@ void xorg::testing::Environment::SetUp() {
 -logfile, d_-path_to_log_file.c_str(),
 -config, d_-path_to_conf.c_str(),
 NULL);
-
   d_-server.SetDisplayNumber(d_-display);
+  d_-server.WaitForConnections();
 
   Process::SetEnv(DISPLAY, display_string, true);
-
-  for (int i = 0; i  10; ++i) {
-test_display = XOpenDisplay(NULL);
-
-if (test_display) {
-  XCloseDisplay(test_display);
-  return;
-}
-
-int status;
-int pid = waitpid(d_-server.Pid(), status, WNOHANG);
-if (pid == d_-server.Pid()) {
-  std::string message;
-  message += X server failed to start on display ;
-  message += display_string;
-  message += . Ensure that the \dummy\ video driver is installed.\n
- If the X.org server is older than 1.12, 
- tests will need to be run as root.\nCheck ;
-  message += d_-path_to_log_file;
-  message +=  for any errors;
-  throw std::runtime_error(message);
-} else if (pid == 0) {
-  sleep(1); /* Give the dummy X server some time to start */
-} else if (pid == -1) {
-  throw std::runtime_error(Could not get status of dummy X server 
-   process);
-} else {
-  throw std::runtime_error(Invalid child PID returned by 
Process::Wait());
-}
-  }
-
-  throw std::runtime_error(Unable to open connection to dummy X server);
 }
 
 void xorg::testing::Environment::TearDown() {
diff --git a/src/xserver.cpp b/src/xserver.cpp
index 28130d7..ba847f1 100644
--- a/src/xserver.cpp
+++ b/src/xserver.cpp
@@ -41,6 +41,7 @@
 #include stdexcept
 #include vector
 
+#include X11/Xlib.h
 #include X11/extensions/XInput2.h
 
 struct xorg::testing::XServer::Private {
@@ -190,3 +191,37 @@ bool xorg::testing::XServer::WaitForDevice(::Display 
*display, const std::string
 
 return false;
 }
+
+void xorg::testing::XServer::WaitForConnections(void) {
+  for (int i = 0; i  10; ++i) {
+Display *test_display = XOpenDisplay(GetDisplayString());
+
+if (test_display) {
+  XCloseDisplay(test_display);
+  return;
+}
+
+int status;
+int pid = waitpid(Pid(), status, WNOHANG);
+if (pid == Pid()) {
+  std::string message;
+  message += X server failed to start on display ;
+  message +=  GetDisplayString();
+  message += . Ensure that the \dummy\ video driver is installed.\n
+ If the X.org server is older than 1.12, 
+ tests will need to be run as root.\nCheck ;
+  //message += d_-path_to_log_file;
+  message +=  for any errors;
+  throw std::runtime_error(message);
+} else if (pid == 0) {
+  sleep(1); /* Give the dummy X server some time to start */
+} else if (pid == -1) {
+  throw std::runtime_error(Could not get status of dummy X server 
+   process);
+} else {
+  throw std::runtime_error(Invalid child PID returned by 
Process::Wait());
+}
+  }
+
+  throw std::runtime_error(Unable to open connection to dummy X server);
+}
-- 
1.7.10.4

___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel


Re: [PATCH xorg-gtest 02/16] xserver: add WaitForConnections()

2012-07-03 Thread Chase Douglas

On 07/02/2012 11:44 PM, Peter Hutterer wrote:

Moved from Environment to XServer class

Signed-off-by: Peter Hutterer peter.hutte...@who-t.net
---
  include/xorg/gtest/xorg-gtest-xserver.h |5 +
  src/environment.cpp |   34 +-
  src/xserver.cpp |   35 +++
  3 files changed, 41 insertions(+), 33 deletions(-)

diff --git a/include/xorg/gtest/xorg-gtest-xserver.h 
b/include/xorg/gtest/xorg-gtest-xserver.h
index 78f72ce..c62970d 100644
--- a/include/xorg/gtest/xorg-gtest-xserver.h
+++ b/include/xorg/gtest/xorg-gtest-xserver.h
@@ -47,6 +47,11 @@ class XServer : public xorg::testing::Process {
  XServer();

  /**
+ * Waits until this server is ready to take connections.
+ */
+void WaitForConnections(void);
+
+/**
   * @param [in] display_number The display number the server runs on
   */
  void SetDisplayNumber(unsigned int display_number);
diff --git a/src/environment.cpp b/src/environment.cpp
index 43e1e70..5e7a156 100644
--- a/src/environment.cpp
+++ b/src/environment.cpp
@@ -147,42 +147,10 @@ void xorg::testing::Environment::SetUp() {
  -logfile, d_-path_to_log_file.c_str(),
  -config, d_-path_to_conf.c_str(),
  NULL);
-
d_-server.SetDisplayNumber(d_-display);
+  d_-server.WaitForConnections();

Process::SetEnv(DISPLAY, display_string, true);
-
-  for (int i = 0; i  10; ++i) {
-test_display = XOpenDisplay(NULL);
-
-if (test_display) {
-  XCloseDisplay(test_display);
-  return;
-}
-
-int status;
-int pid = waitpid(d_-server.Pid(), status, WNOHANG);
-if (pid == d_-server.Pid()) {
-  std::string message;
-  message += X server failed to start on display ;
-  message += display_string;
-  message += . Ensure that the \dummy\ video driver is installed.\n
- If the X.org server is older than 1.12, 
- tests will need to be run as root.\nCheck ;
-  message += d_-path_to_log_file;
-  message +=  for any errors;
-  throw std::runtime_error(message);
-} else if (pid == 0) {
-  sleep(1); /* Give the dummy X server some time to start */
-} else if (pid == -1) {
-  throw std::runtime_error(Could not get status of dummy X server 
-   process);
-} else {
-  throw std::runtime_error(Invalid child PID returned by 
Process::Wait());
-}
-  }
-
-  throw std::runtime_error(Unable to open connection to dummy X server);
  }

  void xorg::testing::Environment::TearDown() {
diff --git a/src/xserver.cpp b/src/xserver.cpp
index 28130d7..ba847f1 100644
--- a/src/xserver.cpp
+++ b/src/xserver.cpp
@@ -41,6 +41,7 @@
  #include stdexcept
  #include vector

+#include X11/Xlib.h
  #include X11/extensions/XInput2.h

  struct xorg::testing::XServer::Private {
@@ -190,3 +191,37 @@ bool xorg::testing::XServer::WaitForDevice(::Display 
*display, const std::string

  return false;
  }
+
+void xorg::testing::XServer::WaitForConnections(void) {
+  for (int i = 0; i  10; ++i) {
+Display *test_display = XOpenDisplay(GetDisplayString());
+
+if (test_display) {
+  XCloseDisplay(test_display);
+  return;
+}
+
+int status;
+int pid = waitpid(Pid(), status, WNOHANG);
+if (pid == Pid()) {
+  std::string message;
+  message += X server failed to start on display ;
+  message +=  GetDisplayString();
+  message += . Ensure that the \dummy\ video driver is installed.\n
+ If the X.org server is older than 1.12, 
+ tests will need to be run as root.\nCheck ;
+  //message += d_-path_to_log_file;


How do you plan to fix this ^^?

If you get to it later on in the patch set, feel free to disregard :).


+  message +=  for any errors;
+  throw std::runtime_error(message);
+} else if (pid == 0) {
+  sleep(1); /* Give the dummy X server some time to start */
+} else if (pid == -1) {
+  throw std::runtime_error(Could not get status of dummy X server 
+   process);
+} else {
+  throw std::runtime_error(Invalid child PID returned by 
Process::Wait());
+}
+  }
+
+  throw std::runtime_error(Unable to open connection to dummy X server);
+}



___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel