ABQ 1.4.0
ABQ 1.4.0 adds support for loading test runs from other queue instances via remote storage.
Until 1.4.0, a test run that executed on one instance of ABQ could not be loaded
and re-executed on another instance. Executing a test suite with the same run ID
on two different ABQ instances would run the test suite twice, with no sharing
of test results.
ABQ now writes run_state
files to remote persistence locations, when remote
persistence is configured via the ABQ_REMOTE_PERSISTENCE_STRATEGY
environment
variable, and its accompanying environment variables. If the same remote
persistence strategy is configured between multiple ABQ queue instances, queue
instances will have the capability to load test runs that initially executed on
previous queue instances.
At this time, loading test runs from other queue instances includes the
following restrictions:
-
run_state
files are schema-versioned, and no schema-version compatibility
guarantees across versions of ABQ queues are provided at this time.
run_state
files are guaranteed to be compatible if shared between ABQ
queues of the same version.
If an ABQ queue loads arun_state
file that it is incompatible with, the
remote test run state will not be loaded. Executing a test suite whose
run state file failed to be loaded will fall back on executing the test
suite as a fresh run, similar to the pre-1.4.0 behavior. -
The same run ID may not be executed, in parallel, on two different ABQ queue
instances sharing the same remote persistence. For a given run ID, an ABQ
queue will assume exclusive ownership of the test suite run associated
with that run ID.
At this time, ABQ does not verify whether it indeed has exclusive
ownership of a run ID. If you are self-hosting ABQ, you must ensure that
run IDs are routed to a unique ABQ instance for the duration of a test run;
however, once a test run is complete, retries of the test run may be routed
to another ABQ instance, so long as the exclusive ownership constraint
continues to apply for the duration of the retry.
If you would like to avoid self-hosting, RWX's managed hosting of ABQ
supports routing test runs under these constraints.
See the ABQ documentation for more details on persistence.
What's Changed
- Add methods to check it remote manifests for a run ID exist by @ayazhafiz in #30
- Add a model for persisting run state when a run completes by @ayazhafiz in #32
- Load run states from remote by @ayazhafiz in #31
- Persist run states when a run reaches the end of a manifest by @ayazhafiz in #34
- Load results from a remote persistence location on first open by @ayazhafiz in #35
- Add an integration test for running tests between queue instances by @ayazhafiz in #36
- Prepare 1.4.0 by @ayazhafiz in #37
Full Changelog: v1.3.5...v1.4.0