Skip to content

Uniquely keyed run artifacts#11

Open
MJohnson459 wants to merge 3 commits into
OpenDroneMap:masterfrom
MJohnson459:oats-run-artifact
Open

Uniquely keyed run artifacts#11
MJohnson459 wants to merge 3 commits into
OpenDroneMap:masterfrom
MJohnson459:oats-run-artifact

Conversation

@MJohnson459

Copy link
Copy Markdown

OATS can run against the new pixi docker images but the process for comparing them is ad-hoc. This PR is the first of a series that will give us historical context to changes and allow comparison between values.

The main change is that we now store the results in a uniquely keyed results directory:

results/runs/<odm revision>/<image key>/<timestamp>/

Where the ODM revision is the exact git sha followed by the image id and finally the timestamp. This follows the logic of an image has exactly one revision, and a timestamp (run) is from exactly one image. This means repeat runs get grouped together, and different images from the same sha are also grouped.

At the top level there is a manifest that records exactly what was run - it's fairly simple right now but we could expand it (i.e. max memory usage).

In future work I will:

  1. Add a CI job to run this with the ability for it to be triggered from ODM
  2. Save the results to an S3 compatible storage (i.e. Garage)
  3. Have a quick and dirty static webpage to compare two outputs (this might eventually be replaced by the viewer)

While this is all going on, I'm primarily testing this change with the master and pixi branches.

Each ./run invocation now writes everything under its own
results/runs/<odm revision>/<image key>/<timestamp>/ directory: the ODM
output per test, a JUnit XML report per dataset, a TSV manifest and a
run_manifest.json with the run key, docker image id/digest, the ODM
source revision (from the image's OCI label when present), host info
and per-test wall time and output size. The revision and image key fall
back to unknown when the image does not carry them, so runs of the same
ODM version group together and can be compared.

run prints a PASS/FAIL summary per dataset with wall time, lists
failures with the ODM exit status (and signal name if it was killed)
and exits non-zero if anything failed, so it can gate CI.

Every run starts from a fresh directory, so --clear is gone and --tags
is replaced by --tag: a run tests a single image, run once per version
to compare. harvest now looks under results/runs/.
The manifest is meant to make a run directory self-contained, so the
per-test output_dir has to survive the directory being archived or
moved out of the checkout. Keep the repo-relative path in the TSV,
which the terminal summary prints for the current checkout.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant