(self)
| 182 | self._port = port |
| 183 | |
| 184 | def _invoke(self): |
| 185 | self._setup_listener() |
| 186 | args = [ |
| 187 | "java", "-client", "-jar", self._runpath, |
| 188 | "--port", "0", "--with-beer-sample", |
| 189 | "--harakiri-monitor", "127.0.0.1:" + str(self._port), |
| 190 | "--nodes", str(self._nodes) |
| 191 | ] |
| 192 | |
| 193 | if self._vbuckets is not None: |
| 194 | args += ["--vbuckets", str(self._vbuckets)] |
| 195 | |
| 196 | if self._replicas is not None: |
| 197 | args += ["--replicas", str(self._replicas)] |
| 198 | |
| 199 | bspec = ",".join([str(x) for x in self._buckets]) |
| 200 | args += ["--buckets", bspec] |
| 201 | |
| 202 | self._po = Popen(args) |
| 203 | |
| 204 | # Sometimes we get an invalid JAR file. Unfortunately there is no |
| 205 | # way to determine or "wait for completion". The next best thing |
| 206 | # is to set a maximum of 15 seconds for the process to start (and |
| 207 | # connect to the listening socket); |
| 208 | |
| 209 | rlist, _, _ = select.select([self._listen], [], [], 15) |
| 210 | if not rlist: |
| 211 | raise MockServerException( |
| 212 | 'Mock server was not ready in time') |
| 213 | |
| 214 | self._harakiri_sock, _ = self._listen.accept() |
| 215 | self._ctlfp = self._harakiri_sock.makefile() |
| 216 | |
| 217 | sbuf = "" |
| 218 | while True: |
| 219 | c = self._ctlfp.read(1) |
| 220 | if c == '\0': |
| 221 | break |
| 222 | sbuf += c |
| 223 | self._rest_port = int(sbuf) |
| 224 | |
| 225 | def _attempt_shutdown(self): |
| 226 | try: |
no test coverage detected