Exemplo n.º 1
0
def start_mock_server():
    """We start a server on boot for use by tests"""
    global server
    port = utils.free_port()
    root = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
    path = os.path.join(root, "tests", "utils", "mock_server.py")
    command = [sys.executable, "-u", path]
    env = os.environ
    env["PORT"] = str(port)
    env["PYTHONPATH"] = root
    logfile = open("tests/logs/live_mock_server.log", "w")
    server = subprocess.Popen(
        command,
        stdout=logfile,
        env=env,
        stderr=subprocess.STDOUT,
        bufsize=1,
        close_fds=True,
    )
    server._port = port
    server.base_url = "http://localhost:%i" % server._port

    def get_ctx():
        return requests.get(server.base_url + "/ctx").json()

    def set_ctx(payload):
        return requests.put(server.base_url + "/ctx", json=payload).json()

    def reset_ctx():
        return requests.delete(server.base_url + "/ctx").json()

    server.get_ctx = get_ctx
    server.set_ctx = set_ctx
    server.reset_ctx = reset_ctx

    started = False
    for i in range(5):
        try:
            res = requests.get("%s/ctx" % server.base_url, timeout=1)
            if res.status_code == 200:
                started = True
                break
            print("Attempting to connect but got: %s" % res)
        except requests.exceptions.RequestException:
            print("Timed out waiting for server to start...")
            if server.poll() is None:
                time.sleep(1)
            else:
                raise ValueError("Server failed to start.")
    if started:
        print(
            "Mock server listing on %s see tests/logs/live_mock_server.log"
            % server._port
        )
    else:
        server.terminate()
        print("Server failed to launch, see tests/logs/live_mock_server.log")
        raise ValueError("Failed to start server!  Exit code %s" % server.returncode)
    return server
Exemplo n.º 2
0
    def test_status_proxy_ports(self):
        port = free_port()

        with devtools_proxy(args=['--port', port]):
            status = requests.get(
                f'http://127.0.0.1:{port}/status.json').json()

        assert status['proxy_ports'] == [port]
Exemplo n.º 3
0
    def setup_method(self):
        self.devtools_proxy_port = free_port()

        capabilities = DesiredCapabilities.CHROME.copy()
        capabilities['chromeOptions'] = {
            'binary': CHROME_WRAPPER_PATH,
            'args': [
                f'--devtools-proxy-binary={DEVTOOLS_PROXY_PATH}',
                f'--devtools-proxy-chrome-debugging-port={free_port()}',
                f'--devtools-proxy-args=--port {self.devtools_proxy_port}',
            ],
        }

        self.driver = selenium.webdriver.Chrome(desired_capabilities=capabilities)
Exemplo n.º 4
0
def start_mock_server(worker_id):
    """We start a flask server process for each pytest-xdist worker_id"""
    port = utils.free_port()
    root = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
    path = os.path.join(root, "tests", "utils", "mock_server.py")
    command = [sys.executable, "-u", path]
    env = os.environ
    env["PORT"] = str(port)
    env["PYTHONPATH"] = root
    logfname = os.path.join(root, "tests", "logs",
                            "live_mock_server-{}.log".format(worker_id))
    logfile = open(logfname, "w")
    server = subprocess.Popen(
        command,
        stdout=logfile,
        env=env,
        stderr=subprocess.STDOUT,
        bufsize=1,
        close_fds=True,
    )
    server._port = port
    server.base_url = f"http://localhost:{server._port}"

    def get_ctx():
        return requests.get(server.base_url + "/ctx").json()

    def set_ctx(payload):
        return requests.put(server.base_url + "/ctx", json=payload).json()

    def reset_ctx():
        return requests.delete(server.base_url + "/ctx").json()

    server.get_ctx = get_ctx
    server.set_ctx = set_ctx
    server.reset_ctx = reset_ctx

    started = False
    for i in range(10):
        try:
            res = requests.get("%s/ctx" % server.base_url, timeout=5)
            if res.status_code == 200:
                started = True
                break
            print(f"Attempting to connect but got: {res}")
        except requests.exceptions.RequestException:
            print("Timed out waiting for server to start...", server.base_url,
                  time.time())
            if server.poll() is None:
                time.sleep(1)
            else:
                raise ValueError("Server failed to start.")
    if started:
        print("Mock server listing on {} see {}".format(
            server._port, logfname))
    else:
        server.terminate()
        print("Server failed to launch, see {}".format(logfname))
        try:
            print("=" * 40)
            with open(logfname) as f:
                for logline in f.readlines():
                    print(logline.strip())
            print("=" * 40)
        except Exception as e:
            print("EXCEPTION:", e)
        raise ValueError("Failed to start server!  Exit code %s" %
                         server.returncode)
    return server