Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions components/tools/OmeroWeb/test/integration/test_rendering.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
import json
import omero
import omero.clients
import time
import pytest

from omeroweb.testlib import IWebTest
from omeroweb.testlib import post, get
Expand Down Expand Up @@ -452,13 +454,39 @@ def test_render_image_region_tile_params_invalid_resolution(self):
finally:
self.assert_no_leaked_rendering_engines()

def wait_until_renderable(self, image_id, timeout=60):
django_client = self.new_django_client_from_session_id(
self.client.getSessionId()
)

request_url = reverse(
"webgateway_render_image_region",
kwargs={"iid": str(image_id), "z": "0", "t": "0"},
)

deadline = time.time() + timeout
while time.time() < deadline:
response = django_client.get(
request_url,
{"tile": "0,0,0,512,512"},
)
if response.status_code == 200:
return

time.sleep(1)

pytest.fail("Timed out waiting for image to become renderable")

def test_render_image_region_tile_params_big_image(self, tmpdir):
"""
Tests the retrieval of pyramid image at different
resolution. Resolution changes is supported in that case.
"""
image_id = self.import_pyramid(tmpdir, client=self.client)

# Wait until the pyramid is renderable
self.wait_until_renderable(image_id)

request_url = reverse(
'webgateway_render_image_region',
kwargs={'iid': str(image_id), 'z': '0', 't': '0'}
Expand All @@ -470,6 +498,12 @@ def test_render_image_region_tile_params_big_image(self, tmpdir):
try:
data['tile'] = '0,0,0,512,512'
response = get(django_client, request_url, data)

if response.status_code != 200:
print(response.status_code)
print(response.content.decode(errors="replace"))

assert response.status_code == 200
tile_content = response.content
tile = Image.open(BytesIO(tile_content))
assert tile.size == (512, 512)
Expand Down Expand Up @@ -518,6 +552,9 @@ def test_render_image_region_region_params_big_image(self, tmpdir):
"""
image_id = self.import_pyramid(tmpdir, client=self.client)

# Wait until the pyramid is renderable
self.wait_until_renderable(image_id)

request_url = reverse(
'webgateway_render_image_region',
kwargs={'iid': str(image_id), 'z': '0', 't': '0'}
Expand Down Expand Up @@ -564,6 +601,8 @@ def test_render_image_region_big_image_resolution(self, tmpdir):
resolution. Resolution changes is supported in that case.
"""
image_id = self.import_pyramid(tmpdir, client=self.client)
# Wait until the pyramid is renderable
self.wait_until_renderable(image_id)
conn = omero.gateway.BlitzGateway(client_obj=self.client)
image = conn.getObject("Image", image_id)
image._prepareRenderingEngine()
Expand Down
Loading