X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=testing%2Flib%2FServer.hpp;h=fb1b8af184c04e443b60eae06404eb264dbde8a7;hb=d347d509b7c0150a75ba77307a61411a2a114599;hp=bb4bfa7f9bfea4410fbfaf275d2cdca2b96891ae;hpb=d1c9b695e9b3fbfcc94230a242b0290b43f27006;p=m6w6%2Flibmemcached diff --git a/testing/lib/Server.hpp b/testing/lib/Server.hpp index bb4bfa7f..fb1b8af1 100644 --- a/testing/lib/Server.hpp +++ b/testing/lib/Server.hpp @@ -29,21 +29,30 @@ public: binary = exchange(s.binary, "false"); args = exchange(s.args, {}); pid = exchange(s.pid, 0); + pipe = exchange(s.pipe, -1); status = exchange(s.status, 0); signalled = exchange(s.signalled, {}); socket_or_port = exchange(s.socket_or_port, {}); + output = exchange(s.output, {}); return *this; }; pid_t getPid() const; - + int getPipe() const; const string &getBinary() const; - const argv_t &getArgs() const; - const socket_or_port_t &getSocketOrPort() const; - optional start(); + struct ChildProc { + pid_t pid; + int pipe; + ChildProc(pid_t pid_, int pipe_) + : pid{pid_} + , pipe{pipe_} + { + } + }; + optional start(); bool stop(); bool signal(int signo = SIGTERM); @@ -52,14 +61,18 @@ public: bool wait(int flags = 0); bool tryWait(); + string &drain(); + private: string binary; argv_t args; pid_t pid = 0; + int pipe = -1; int status = 0; unordered_map signalled; socket_or_port_t socket_or_port = 11211; + string output; [[nodiscard]] vector createArgv(); @@ -70,7 +83,7 @@ inline ostream &operator << (ostream &out, const socket_or_port_t sop) { if (holds_alternative(sop)) { out << get(sop); } else { - out << get(sop); + out << ":" << get(sop); } return out; }