Skip to content

ABQ 1.4.0

Compare
Choose a tag to compare
@ayazhafiz ayazhafiz released this 27 Apr 15:42
· 54 commits to main since this release
v1.4.0
221cfa7

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 a run_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