Additional test key.w
[m6w6/libmemcached] / libtest / server.h
index 9c8f048bd393049f4739c9e83093b915d95aa704..b1ca30aa713f04e2d26eacd3fb955910dfeec541 100644 (file)
@@ -39,6 +39,7 @@ private:
   typedef std::vector< std::pair<std::string, std::string> > Options;
 
 private:
+  uint64_t _magic;
   bool _is_socket;
   std::string _socket;
   std::string _sasl;
@@ -46,7 +47,6 @@ private:
   std::string _log_file;
   std::string _base_command; // executable command which include libtool, valgrind, gdb, etc
   std::string _running; // Current string being used for system()
-  pid_t _pid;
 
 protected:
   in_port_t _port;
@@ -54,13 +54,13 @@ protected:
   std::string _extra_args;
 
 public:
-  Server(const std::string& hostname, const in_port_t port_arg, const bool is_socket_arg= false);
+  Server(const std::string& hostname, const in_port_t port_arg,
+         const std::string& executable, const bool _is_libtool,
+         const bool is_socket_arg= false);
 
   virtual ~Server();
 
   virtual const char *name()= 0;
-  virtual const char *executable()= 0;
-  virtual const char *daemon_file_option()= 0;
   virtual bool is_libtool()= 0;
 
   virtual bool has_socket_file_option() const
@@ -78,7 +78,7 @@ public:
     }
   }
 
-  bool has_log_file_option() const
+  virtual bool has_log_file_option() const
   {
     return false;
   }
@@ -97,7 +97,7 @@ public:
   {
     if (arg.empty() == false)
     {
-      std::string buffer("--socket=");
+      std::string buffer("--pid-file=");
       buffer+= arg;
       app.add_option(buffer);
     }
@@ -162,9 +162,7 @@ public:
 
   virtual bool ping()= 0;
 
-  virtual pid_t get_pid(bool error_is_ok= false)= 0;
-
-  virtual bool build(int argc, const char *argv[])= 0;
+  virtual bool build(size_t argc, const char *argv[])= 0;
 
   void add_option(const std::string&);
   void add_option(const std::string&, const std::string&);
@@ -187,26 +185,17 @@ public:
   // Reset a server if another process has killed the server
   void reset()
   {
-    _pid= -1;
     _pid_file.clear();
     _log_file.clear();
   }
 
   bool args(Application&);
 
-  pid_t pid();
+  pid_t pid() const;
 
-  pid_t pid() const
-  {
-    return _pid;
-  }
+  bool has_pid() const;
 
-  bool has_pid() const
-  {
-    return (_pid > 1);
-  }
-
-  bool wait_for_pidfile() const;
+  virtual bool wait_for_pidfile() const;
 
   bool check_pid(pid_t pid_arg) const
   {
@@ -223,15 +212,20 @@ public:
     return _running;
   }
 
+  bool check();
+
   std::string log_and_pid();
 
-  bool kill(pid_t pid_arg);
+  bool kill();
   bool start();
   bool command(libtest::Application& app);
 
+  bool validate();
+
 protected:
   bool set_pid_file();
   Options _options;
+  Application _app;
 
 private:
   bool is_helgrind() const;