diff --git a/components/tools/OmeroPy/test/integration/test_thumbs.py b/components/tools/OmeroPy/test/integration/test_thumbs.py index 0d7d4688a3c..8fbb019eba5 100644 --- a/components/tools/OmeroPy/test/integration/test_thumbs.py +++ b/components/tools/OmeroPy/test/integration/test_thumbs.py @@ -11,6 +11,8 @@ from omero.testlib import ITest import pytest +import time +import os from omero import MissingPyramidException from omero.sys import ParametersI @@ -86,6 +88,24 @@ def testThumbnailExists(self): finally: tb.close() + def wait_for_pyramid_file(self, pixels_id, timeout=120): + pixels_dir = ( + "/home/omero/workspace/" + "OMERO-test-integration/data/Pixels" + ) + expected = f"{pixels_id}_pyramid" + + deadline = time.time() + timeout + while time.time() < deadline: + for root, _, files in os.walk(pixels_dir): + if expected in files: + return + time.sleep(1) + + pytest.fail( + f"Timed out waiting for pyramid file {expected}" + ) + @pytest.mark.parametrize("meth", ("one", "set",)) def testThumbnailVersion(self, meth): @@ -146,9 +166,13 @@ def get(): # the pyramid is generated. tb.close() tb = self.client.sf.createThumbnailStore() + # Wait for pyramid gen - slower on NFS + # and needs a check via FS. + self.wait_for_pyramid_file(pix) if not tb.setPixelsId(int(pix)): tb.resetDefaults() tb.close() + tb = self.client.sf.createThumbnailStore() assert tb.setPixelsId(int(pix)) after = tb.getThumbnail(i64, i64) @@ -156,6 +180,7 @@ def get(): assert tb.thumbnailExists(i64, i64) assert not tb.isInProgress() elif meth == "set": + self.wait_for_pyramid_file(pix) tb.getThumbnailSet(i64, i64, [int(pix)]) assert get().version.val >= 0