diff --git a/tests/core/customcert/main.py b/tests/core/customcert/main.py index 72bda60f1..0037eae3a 100644 --- a/tests/core/customcert/main.py +++ b/tests/core/customcert/main.py @@ -1,7 +1,8 @@ +from contextlib import suppress from os import getenv -from requests import get -from requests.exceptions import RequestException +from requests import RequestException, get from traceback import format_exc +from time import sleep try: diff --git a/tests/core/customcert/requirements.in b/tests/core/customcert/requirements.in index 2c24336eb..e63824704 100644 --- a/tests/core/customcert/requirements.in +++ b/tests/core/customcert/requirements.in @@ -1 +1,3 @@ requests==2.31.0 +selenium==4.14.0 +urllib3[socks]==2.0.7 diff --git a/tests/core/customcert/requirements.txt b/tests/core/customcert/requirements.txt index 99a4d0cfb..dd857f945 100644 --- a/tests/core/customcert/requirements.txt +++ b/tests/core/customcert/requirements.txt @@ -4,10 +4,18 @@ # # pip-compile --allow-unsafe --generate-hashes --strip-extras requirements.in # +attrs==23.1.0 \ + --hash=sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04 \ + --hash=sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015 + # via + # outcome + # trio certifi==2023.7.22 \ --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \ --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9 - # via requests + # via + # requests + # selenium charset-normalizer==3.3.1 \ --hash=sha256:06cf46bdff72f58645434d467bf5228080801298fbba19fe268a01b4534467f5 \ --hash=sha256:0c8c61fb505c7dad1d251c284e712d4e0372cef3b067f7ddf82a7fa82e1e9a93 \ @@ -100,15 +108,66 @@ charset-normalizer==3.3.1 \ --hash=sha256:f6a02a3c7950cafaadcd46a226ad9e12fc9744652cc69f9e5534f98b47f3bbcf \ --hash=sha256:fe81b35c33772e56f4b6cf62cf4aedc1762ef7162a31e6ac7fe5e40d0149eb67 # via requests +exceptiongroup==1.1.3 \ + --hash=sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9 \ + --hash=sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3 + # via + # trio + # trio-websocket +h11==0.14.0 \ + --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ + --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 + # via wsproto idna==3.4 \ --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 - # via requests + # via + # requests + # trio +outcome==1.3.0 \ + --hash=sha256:588ef4dc10b64e8df160d8d1310c44e1927129a66d6d2ef86845cef512c5f24c \ + --hash=sha256:7b688fd82db72f4b0bc9e883a00359d4d4179cd97d27f09c9644d0c842ba7786 + # via trio +pysocks==1.7.1 \ + --hash=sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299 \ + --hash=sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5 \ + --hash=sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0 + # via urllib3 requests==2.31.0 \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 # via -r requirements.in +selenium==4.14.0 \ + --hash=sha256:0d14b0d9842366f38fb5f8f842cf7c042bcfa062affc6a0a86e4d634bdd0fe54 \ + --hash=sha256:be9824a9354a7fe288e3fad9ceb6a9c65ddc7c44545d23ad0ebf4ce202b19893 + # via -r requirements.in +sniffio==1.3.0 \ + --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ + --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 + # via trio +sortedcontainers==2.4.0 \ + --hash=sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88 \ + --hash=sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0 + # via trio +trio==0.22.2 \ + --hash=sha256:3887cf18c8bcc894433420305468388dac76932e9668afa1c49aa3806b6accb3 \ + --hash=sha256:f43da357620e5872b3d940a2e3589aa251fd3f881b65a608d742e00809b1ec38 + # via + # selenium + # trio-websocket +trio-websocket==0.11.1 \ + --hash=sha256:18c11793647703c158b1f6e62de638acada927344d534e3c7628eedcb746839f \ + --hash=sha256:520d046b0d030cf970b8b2b2e00c4c2245b3807853ecd44214acd33d74581638 + # via selenium urllib3==2.0.7 \ --hash=sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84 \ --hash=sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e - # via requests + # via + # -r requirements.in + # requests + # selenium + # urllib3 +wsproto==1.2.0 \ + --hash=sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065 \ + --hash=sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736 + # via trio-websocket diff --git a/tests/core/misc/main.py b/tests/core/misc/main.py index c7ee48251..93f1f909c 100644 --- a/tests/core/misc/main.py +++ b/tests/core/misc/main.py @@ -1,12 +1,36 @@ from os import getenv +from contextlib import suppress from subprocess import run -from requests import ConnectionError, get, head, post +from requests import RequestException, ConnectionError, get, head, post from socket import create_connection from ssl import CERT_NONE, create_default_context from time import sleep from traceback import format_exc try: + + ready = False + retries = 0 + while not ready: + with suppress(RequestException): + resp = get("http://www.example.com/ready", headers={"Host": "www.example.com"}) + status_code = resp.status_code + text = resp.text + + if resp.status_code >= 500: + print("❌ An error occurred with the server, exiting ...", flush=True) + exit(1) + + ready = status_code < 400 and text == "ready" + + if retries > 10: + print("❌ The service took too long to be ready, exiting ...", flush=True) + exit(1) + elif not ready: + retries += 1 + print("⚠️ Waiting for the service to be ready, retrying in 5s ...", flush=True) + sleep(5) + ssl_generated = getenv("GENERATE_SELF_SIGNED_SSL", "no") == "yes" disabled_default_server = getenv("DISABLE_DEFAULT_SERVER", "no") == "yes" deny_http_status = getenv("DENY_HTTP_STATUS", "403")