mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-18 07:23:00 +00:00
improve waiting for service to start in mockservice fixture
- wait for proxy update before starting service - wait for service server to respond to start before proceeding
This commit is contained in:
@@ -9,7 +9,7 @@ from subprocess import TimeoutExpired
|
|||||||
import time
|
import time
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
from pytest import fixture, raises
|
from pytest import fixture, raises
|
||||||
from tornado import ioloop
|
from tornado import ioloop, gen
|
||||||
|
|
||||||
from .. import orm
|
from .. import orm
|
||||||
from ..utils import random_port
|
from ..utils import random_port
|
||||||
@@ -81,10 +81,14 @@ def _mockservice(request, app, url=False):
|
|||||||
with mock.patch.object(jupyterhub.services.service, '_ServiceSpawner', MockServiceSpawner):
|
with mock.patch.object(jupyterhub.services.service, '_ServiceSpawner', MockServiceSpawner):
|
||||||
app.services = [spec]
|
app.services = [spec]
|
||||||
app.init_services()
|
app.init_services()
|
||||||
app.io_loop.add_callback(app.proxy.add_all_services, app._service_map)
|
|
||||||
assert name in app._service_map
|
assert name in app._service_map
|
||||||
service = app._service_map[name]
|
service = app._service_map[name]
|
||||||
app.io_loop.add_callback(service.start)
|
@gen.coroutine
|
||||||
|
def start():
|
||||||
|
# wait for proxy to be updated before starting the service
|
||||||
|
yield app.proxy.add_all_services(app._service_map)
|
||||||
|
service.start()
|
||||||
|
app.io_loop.add_callback(start)
|
||||||
def cleanup():
|
def cleanup():
|
||||||
service.stop()
|
service.stop()
|
||||||
app.services[:] = []
|
app.services[:] = []
|
||||||
@@ -96,6 +100,8 @@ def _mockservice(request, app, url=False):
|
|||||||
# ensure process finishes starting
|
# ensure process finishes starting
|
||||||
with raises(TimeoutExpired):
|
with raises(TimeoutExpired):
|
||||||
service.proc.wait(1)
|
service.proc.wait(1)
|
||||||
|
if url:
|
||||||
|
ioloop.IOLoop().run_sync(service.server.wait_up)
|
||||||
return service
|
return service
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user