fix: service_alive returns False for non-HTTP responders
This commit is contained in:
@@ -65,6 +65,7 @@ def status_server():
|
||||
thread.start()
|
||||
yield f"http://127.0.0.1:{server.server_address[1]}"
|
||||
server.shutdown()
|
||||
server.server_close()
|
||||
|
||||
|
||||
class TestServiceAlive:
|
||||
@@ -91,3 +92,30 @@ class TestExternalServer:
|
||||
def test_raises_when_dead(self):
|
||||
with pytest.raises(ConnectionError, match="no WebDriver server"):
|
||||
ExternalServer("http://127.0.0.1:1").ensure_running()
|
||||
|
||||
|
||||
class TestServiceAliveNonHttpResponder:
|
||||
def test_non_http_service_on_port_is_false_and_clean_error(self):
|
||||
# wrong-port misconfiguration: some non-HTTP service answers the socket
|
||||
import socket
|
||||
|
||||
server = socket.create_server(("127.0.0.1", 0))
|
||||
port = server.getsockname()[1]
|
||||
|
||||
def answer(count=2):
|
||||
for _ in range(count):
|
||||
try:
|
||||
conn, _ = server.accept()
|
||||
except OSError:
|
||||
return
|
||||
conn.sendall(b"SSH-2.0-OpenSSH_9.7\r\n")
|
||||
conn.close()
|
||||
|
||||
thread = threading.Thread(target=answer, daemon=True)
|
||||
thread.start()
|
||||
try:
|
||||
assert service_alive(f"http://127.0.0.1:{port}", timeout=2.0) is False
|
||||
with pytest.raises(ConnectionError, match="no WebDriver server"):
|
||||
ExternalServer(f"http://127.0.0.1:{port}").ensure_running()
|
||||
finally:
|
||||
server.close()
|
||||
|
||||
Reference in New Issue
Block a user