Skip to content

Commit b565a1c

Browse files
authored
Connect to a local server instance instead of google (#1685)
1 parent 9dcd6f8 commit b565a1c

File tree

1 file changed

+30
-7
lines changed

1 file changed

+30
-7
lines changed

system_tests/test_oav_to_redis_system.py

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import asyncio
2+
from http.server import HTTPServer, SimpleHTTPRequestHandler
3+
from pathlib import Path
4+
from threading import Thread
25
from unittest.mock import AsyncMock, patch
36

47
import pytest
@@ -37,22 +40,42 @@ def _set_url(mock_oav_to_redis_forwarder: OAVToRedisForwarder, url: str):
3740
set_mock_value(mock_oav_to_redis_forwarder.selected_source, Source.FULL_SCREEN)
3841

3942

40-
@pytest.mark.requires(external="internet") # depends on external webpage. See
41-
# https://github.com/DiamondLightSource/mx-bluesky/issues/183
43+
@pytest.fixture
44+
def static_http_server(tmp_path: Path):
45+
class HandlerInTestDirectory(SimpleHTTPRequestHandler):
46+
def __init__(self, *args, **kwargs):
47+
super().__init__(*args, directory=str(tmp_path), **kwargs)
48+
49+
server_address = ("", 9876)
50+
httpd = HTTPServer(server_address, HandlerInTestDirectory)
51+
52+
def run_server():
53+
httpd.serve_forever()
54+
httpd.server_close()
55+
56+
server_thread = Thread(
57+
group=None, target=run_server, name="Test server", daemon=True
58+
)
59+
server_thread.start()
60+
try:
61+
yield
62+
finally:
63+
httpd.shutdown()
64+
server_thread.join()
65+
66+
4267
async def test_given_stream_url_is_not_a_real_webpage_when_kickoff_then_error(
4368
mock_oav_to_redis_forwarder: OAVToRedisForwarder,
4469
):
45-
_set_url(mock_oav_to_redis_forwarder, "http://www.this_is_not_a_valid_webpage.com/")
70+
_set_url(mock_oav_to_redis_forwarder, "http://localhost:9875/")
4671
with pytest.raises(ClientConnectorError):
4772
await mock_oav_to_redis_forwarder.kickoff()
4873

4974

50-
@pytest.mark.requires(external="internet") # depends on external webpage.
51-
# See https://github.com/DiamondLightSource/mx-bluesky/issues/183
5275
async def test_given_stream_url_is_real_webpage_but_not_mjpg_when_kickoff_then_error(
53-
mock_oav_to_redis_forwarder: OAVToRedisForwarder,
76+
mock_oav_to_redis_forwarder: OAVToRedisForwarder, static_http_server
5477
):
55-
url = "https://www.google.com/"
78+
url = "http://localhost:9876/"
5679
_set_url(mock_oav_to_redis_forwarder, url)
5780
with pytest.raises(ValueError) as e:
5881
await mock_oav_to_redis_forwarder.kickoff()

0 commit comments

Comments
 (0)