From 8a8e94df368f8cb3a339beba3cb7f328cf9cb853 Mon Sep 17 00:00:00 2001 From: Yaroslav Dynnikov <yaroslav.dynnikov@gmail.com> Date: Thu, 15 Jun 2023 09:15:20 +0300 Subject: [PATCH] fix: test_http_server on mac Picodata treats absent hostname (`:8080`) as `localhost` by default, which resolves to IPv6 on Mac. The test explicitly specified inconsistent addresses, and that caused "connection refused" error. --- test/int/test_http_server.py | 49 ++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/test/int/test_http_server.py b/test/int/test_http_server.py index 02aa325b5e..b02c408460 100644 --- a/test/int/test_http_server.py +++ b/test/int/test_http_server.py @@ -1,35 +1,34 @@ -from conftest import Cluster +from conftest import Cluster, Instance from urllib.request import urlopen +import pytest -def test_server_works(cluster: Cluster): +@pytest.fixture +def instance(cluster: Cluster): instance = cluster.add_instance(wait_online=False) - script = f"{cluster.data_dir}/add_routes.lua" - with open(script, "w") as f: - f.write( - """ - function handler(req) - return { - status = 200, - headers = { ['content-type'] = 'text/html; charset=utf8' }, - body = 'world' - } - end - pico.httpd:route({path = '/hello', method = 'GET'}, handler) - """ - ) - instance.env["PICODATA_SCRIPT"] = script - instance.env["PICODATA_HTTP_LISTEN"] = ":8080" + instance.env["PICODATA_HTTP_LISTEN"] = f"{cluster.base_host}:{cluster.base_port+80}" instance.start() instance.wait_online() - with urlopen("http://127.0.0.1:8080/hello") as response: + return instance + + +def test_http_routes(instance: Instance): + instance.eval( + """ + pico.httpd:route({path = '/hello', method = 'GET'}, function(req) + return { + status = 200, + body = 'world' + } + end) + """ + ) + http_listen = instance.env["PICODATA_HTTP_LISTEN"] + with urlopen(f"http://{http_listen}/hello") as response: assert response.read() == b"world" -def test_webui(cluster: Cluster): - instance = cluster.add_instance(wait_online=False) - instance.env["PICODATA_HTTP_LISTEN"] = ":8081" - instance.start() - instance.wait_online() - with urlopen("http://127.0.0.1:8081") as response: +def test_webui(instance: Instance): + http_listen = instance.env["PICODATA_HTTP_LISTEN"] + with urlopen(f"http://{http_listen}/") as response: assert response.headers.get("content-type") == "text/html" -- GitLab