docs: def cleanup(self):
          """Clean up, making sure the process is stopped before we pack up and go home."""
          if self.process is None:  # Process wasn't running yet, so nothing to worry about
              return
          if self.process.poll() is None:
              log.info("Sending TERM to %d", self.process.pid)
              self.process.terminate()
              # Give process a second to terminate, if it didn't, kill it.
              start = time.clock()
              while time.clock() - start < 1.0:
                  time.sleep(0.05)
                  if self.process.poll() is not None:
                      break
              else:
                  log.info("Sending KILL to %d", self.process.pid)
                  self.process.kill()
          assert self.process.poll() is not None