ome / ome/openmicroscopy

Merge CI testintegration failures - NFS

Open
#6,470 8 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
222
Forks
105
Avg merge
2h 21m
Merged PRs (30d)
1

Description

Issues

After the move to NFS this month, we are experiencing new test failures, cause typically by 2 problems, see e.g. https://merge-ci.openmicroscopy.org/jenkins/job/OMERO-test-integration/16/testReport/

  • pyramids are not being built fast enough (ca 80% of failing tests)
  • mismatches of expected numbers of objects on OmeroWeb tests (ca 20% of failing tests)

Solutions - pyramids: polling

Present polling/waiting methods - pyramids

  • the present method wait_for_pyramid in omero-py is already used in many of the problematic tests and proven insufficient

Solutions - OmeroWeb tests

  • only suggestions were made, no direct coding - I believe @will-moore is going to get into the problematics
    • do not assume a clean state of the DB when the test starts
    • watch out for race conditions, e.g. between the chgrp server-side process and the method in json API which hastily fetches the "new" state inside the test

Caveats of polling

Alternative solutions to polling - pyramids

  • marking the tests which are problematic as "local only" (there is a precedens). I think this is a very attractive solution, as the pyramid code is deprecated ?
  • making smaller images to make pyramids from
    • needs changes in omero-py as the methods live there
    • possibly also omero-server would need to be reconfigured for lower "large image" limit, with undesirable consequences for other tests
  • splitting the tests
    • still not sure how this will help and mainly how this is to be achieved. Note that OmeroPy tests are enough per se to create the race conditions and they do not "need" the preceding OmeroJava tests to create the unclean states, races, timeouts
    • the pyramid tests could be rather marked as local-only, which would be more logical (see above)

Handy setup for running OmeroPy suite only via Jenkins job:

  1. Run omero-push and omero-build jobs
  2. Check that snoopycrimecop repo has on "merge-ci" branch the recent changes (merged open PRs from openmicroscopy repo)
  3. Edit the Config of the OMERO-test-integration job as follows
...
echo Running the integration tests with -Dtestng.useDefaultListeners=true

# commented out by PW 21 July 2026 to spped up the investigation of the OmeroPy suite
# $SRC/build.py -f components/tools/OmeroJava/build.xml -Dtestng.useDefaultListeners=true -Dtestreports.dir=target/reports/integration integration
$SRC/build.py -f components/tools/OmeroPy/build.xml integration  -Dtestreports.dir=target/reports/integration
# $SRC/build.py -f components/tools/OmeroFS/build.xml integration -Dtestreports.dir=target/reports/integration
$SRC/build.py -f components/tools/OmeroWeb/build.xml integration -Dtestreports.dir=target/reports/integration

## Broken
#$SRC/build.py -f components/tools/OmeroPy/build.xml integration -DMARK=broken -Dtestreports.dir=target/reports/broken
#$SRC/build.py -f components/tools/OmeroJava/build.xml -Dtestng.useDefaultListeners=true -Dtestreports.dir=target/reports/broken broken

deactivate
  1. Run the OMERO-test-integration job - this will take just 2.5hours instead of ~6h.

cc @jburel @sbesson

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Jenkins OMERO-test-integration report and the OmeroPy integration suite, especially tests using wait_for_pyramid, then compare the referenced wait_for_pyramid_file and renderability changes. Reproduce the NFS failures and determine whether pyramid readiness or OmeroWeb state races are responsible; done means the affected integration tests pass reliably with an agreed timeout or scope.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, python
Domain
backend, ci-cd, testing
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.