mirror of
https://github.com/umap-project/umap.git
synced 2025-04-28 19:42:36 +02:00
wip(sync): use Daphne as live_server for tests
Also clean dependencies. We still use the channels live server for our tests, but do not use it anymore for the actual websocket handling.
This commit is contained in:
parent
460a0c9997
commit
ab7119e0a4
3 changed files with 22 additions and 43 deletions
|
@ -54,6 +54,7 @@ dev = [
|
|||
"isort==5.13.2",
|
||||
]
|
||||
test = [
|
||||
"daphne==4.1.2",
|
||||
"factory-boy==3.3.1",
|
||||
"playwright>=1.39",
|
||||
"pytest==8.3.4",
|
||||
|
@ -70,10 +71,7 @@ s3 = [
|
|||
"django-storages[s3]==1.14.4",
|
||||
]
|
||||
sync = [
|
||||
"channels==4.2.0",
|
||||
"daphne==4.1.2",
|
||||
"pydantic==2.10.5",
|
||||
"websockets==13.1",
|
||||
]
|
||||
|
||||
[project.scripts]
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
from channels.testing import ChannelsLiveServerTestCase
|
||||
from daphne.testing import DaphneProcess
|
||||
from playwright.sync_api import expect
|
||||
|
||||
from umap.asgi import application
|
||||
|
||||
from ..base import mock_tiles
|
||||
|
||||
|
||||
|
@ -68,35 +67,17 @@ def login(new_page, settings, live_server):
|
|||
return do_login
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def websocket_server():
|
||||
# Find the test-settings, and put them in the current environment
|
||||
settings_path = (Path(__file__).parent.parent / "settings.py").absolute().as_posix()
|
||||
os.environ["UMAP_SETTINGS"] = settings_path
|
||||
|
||||
ds_proc = subprocess.Popen(
|
||||
[
|
||||
"umap",
|
||||
"run_websocket_server",
|
||||
],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
)
|
||||
time.sleep(2)
|
||||
# Ensure it started properly before yielding
|
||||
assert not ds_proc.poll(), ds_proc.stdout.read().decode("utf-8")
|
||||
yield ds_proc
|
||||
# Shut it down at the end of the pytest session
|
||||
ds_proc.terminate()
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def channels_live_server(request, settings):
|
||||
server = ChannelsLiveServerTestCase()
|
||||
server.serve_static = False
|
||||
server._pre_setup()
|
||||
settings.WEBSOCKET_FRONT_URI = f"{server.live_server_ws_url}/ws/sync/{{id}}/"
|
||||
def asgi_live_server(request, settings):
|
||||
request.getfixturevalue("transactional_db")
|
||||
server = DaphneProcess("localhost", lambda: application)
|
||||
server.start()
|
||||
server.ready.wait()
|
||||
port = server.port.value
|
||||
settings.WEBSOCKET_FRONT_URI = f"ws://localhost:{port}/ws/sync/{{id}}/"
|
||||
server.url = f"http://localhost:{port}"
|
||||
|
||||
yield server
|
||||
|
||||
server._post_teardown()
|
||||
server.terminate()
|
||||
server.join()
|
||||
|
|
|
@ -12,7 +12,7 @@ DATALAYER_UPDATE = re.compile(r".*/datalayer/update/.*")
|
|||
|
||||
@pytest.mark.xdist_group(name="websockets")
|
||||
def test_websocket_connection_can_sync_markers(
|
||||
new_page, live_server, channels_live_server, tilelayer
|
||||
new_page, live_server, asgi_live_server, tilelayer
|
||||
):
|
||||
map = MapFactory(name="sync", edit_status=Map.ANONYMOUS)
|
||||
map.settings["properties"]["syncEnabled"] = True
|
||||
|
@ -80,7 +80,7 @@ def test_websocket_connection_can_sync_markers(
|
|||
|
||||
@pytest.mark.xdist_group(name="websockets")
|
||||
def test_websocket_connection_can_sync_polygons(
|
||||
context, live_server, channels_live_server, tilelayer
|
||||
context, live_server, asgi_live_server, tilelayer
|
||||
):
|
||||
map = MapFactory(name="sync", edit_status=Map.ANONYMOUS)
|
||||
map.settings["properties"]["syncEnabled"] = True
|
||||
|
@ -164,7 +164,7 @@ def test_websocket_connection_can_sync_polygons(
|
|||
|
||||
@pytest.mark.xdist_group(name="websockets")
|
||||
def test_websocket_connection_can_sync_map_properties(
|
||||
new_page, live_server, channels_live_server, tilelayer
|
||||
new_page, live_server, asgi_live_server, tilelayer
|
||||
):
|
||||
map = MapFactory(name="sync", edit_status=Map.ANONYMOUS)
|
||||
map.settings["properties"]["syncEnabled"] = True
|
||||
|
@ -198,7 +198,7 @@ def test_websocket_connection_can_sync_map_properties(
|
|||
|
||||
@pytest.mark.xdist_group(name="websockets")
|
||||
def test_websocket_connection_can_sync_datalayer_properties(
|
||||
new_page, live_server, channels_live_server, tilelayer
|
||||
new_page, live_server, asgi_live_server, tilelayer
|
||||
):
|
||||
map = MapFactory(name="sync", edit_status=Map.ANONYMOUS)
|
||||
map.settings["properties"]["syncEnabled"] = True
|
||||
|
@ -227,7 +227,7 @@ def test_websocket_connection_can_sync_datalayer_properties(
|
|||
|
||||
@pytest.mark.xdist_group(name="websockets")
|
||||
def test_websocket_connection_can_sync_cloned_polygons(
|
||||
context, live_server, channels_live_server, tilelayer
|
||||
context, live_server, asgi_live_server, tilelayer
|
||||
):
|
||||
map = MapFactory(name="sync", edit_status=Map.ANONYMOUS)
|
||||
map.settings["properties"]["syncEnabled"] = True
|
||||
|
@ -290,7 +290,7 @@ def test_websocket_connection_can_sync_cloned_polygons(
|
|||
|
||||
@pytest.mark.xdist_group(name="websockets")
|
||||
def test_websocket_connection_can_sync_late_joining_peer(
|
||||
new_page, live_server, channels_live_server, tilelayer
|
||||
new_page, live_server, asgi_live_server, tilelayer
|
||||
):
|
||||
map = MapFactory(name="sync", edit_status=Map.ANONYMOUS)
|
||||
map.settings["properties"]["syncEnabled"] = True
|
||||
|
@ -351,7 +351,7 @@ def test_websocket_connection_can_sync_late_joining_peer(
|
|||
|
||||
|
||||
@pytest.mark.xdist_group(name="websockets")
|
||||
def test_should_sync_datalayers(new_page, live_server, channels_live_server, tilelayer):
|
||||
def test_should_sync_datalayers(new_page, live_server, asgi_live_server, tilelayer):
|
||||
map = MapFactory(name="sync", edit_status=Map.ANONYMOUS)
|
||||
map.settings["properties"]["syncEnabled"] = True
|
||||
map.save()
|
||||
|
@ -490,7 +490,7 @@ def test_should_sync_datalayers_delete(
|
|||
|
||||
@pytest.mark.xdist_group(name="websockets")
|
||||
def test_create_and_sync_map(
|
||||
new_page, live_server, channels_live_server, tilelayer, login, user
|
||||
new_page, live_server, asgi_live_server, tilelayer, login, user
|
||||
):
|
||||
# Create a syncable map with peerA
|
||||
peerA = login(user, prefix="Page A")
|
||||
|
|
Loading…
Reference in a new issue