Skip to content

test: retire the old e2e test system onto testkit #5281

Open
6 of 14 issues completed
Open

Description

@matthewgrossman

User Story

I maintain OpenShell's end-to-end tests and CI. I need one place that shows how far the move from the old test system to testkit has come, what is in flight, and what is next, so reviewers and other contributors can follow it without reading every PR.

Description

OpenShell's end-to-end tests are moving from the old system to the new one:

  • Old: the openshell-conformance test library and its CLI suite (both now deleted), tmachine tests run through Ansible playbooks, and the ~70 test files in e2e/rust.
  • New: tests written with testkit under tests/suites/, run inside a tmachine VM by the runner, or against any existing gateway with the openshell-conformance program.

This issue tracks the remaining work to retire the old system, plus the flake and CI-time fixes made alongside it. Each piece of work keeps its own issue and PR. Sub-issues are listed below this description.

This issue covers part of the scope of #3954 (testing strategy, closed by the stale bot). RFC 0016 and the broader testing strategy stay out of scope here.

Done

What's left of the old system: e2e/rust and the tmachine e2e-podman testsuite.

Migrating e2e/rust

Rules for every batch:

  • Each batch deletes the e2e/rust files it ports, so e2e/rust shrinks as batches land.
  • Ported tests use unique names and can run in parallel against one gateway, so lanes don't get slower as tests move.
  • Overlaps with tests already on testkit are resolved by reading both, not by porting twice.
Step What moves Destination Depends on
Decide A keep, drop or merge decision for every file in e2e/rust/tests/, with a destination and a batch (#5297) This issue's table, updated —
Prepare host.openshell.internal on k3s and the Python workload image in every VM (#5275, PR #5277); per-family timeouts, serial groups and a thread count on runner rows (#5295) tmachine environments, runner —
Pilot credential_gating, after it's split into independent tests (#5263, PR #5264). Adds only the harness helpers it needs (#5296) conformance #5264, #5277
Podman The 8 files the e2e-podman lane runs drivers/podman #5297, #5277
Docker The 7 files the e2e-docker lane runs, plus config_push, driver_config_volume and otlp_relay if they fit New drivers/docker #5297, #5277
Common About 30 driver-agnostic files (the e2e and e2e-host-gateway lanes), in 2–3 PRs by size conformance #5297, pilot
Gateway reconfiguration additional_ca, oidc_pkce, local_driver_token_restart and other tests that restart or reconfigure the gateway New gateway-control family #5297
Kubernetes Corporate proxy, runtime reconcile, HA, shared supervisor (3 files), workspace namespace (2), credential drivers New kubernetes support crate and family Common started
Host-only VM, GPU, performance and edge tunnel: ported to testkit, kept on host lanes Matching family Late
Delete e2e/rust, the Rust steps in the e2e wrapper scripts, the tmachine e2e-podman testsuite. Each remaining host-only lane moves to a tmachine environment or keeps a written reason — All of the above

Podman, Docker and Common touch different crates, so they can run in parallel once the decision and preparation steps land. Kubernetes and the slow shared-supervisor and HA tests go last, because Kubernetes lifecycle races are still being fixed.

Using the openshell-conformance program everywhere

  • Runner rows run the prebuilt program (ready, then run) instead of building a nextest archive per row.
  • Release Dev, release qualification and GPU lanes use the prebuilt program.
  • Rename the runner to a tmachine-specific name.

Flakes and CI time

Not needed for retirement, planned after it: generate CI matrices from a list of tests and environments, and check that every expected test ran.

Definition of Done

  • e2e/rust is deleted, and its tests run on testkit.
  • The tmachine e2e-podman testsuite and the Rust steps in the e2e wrapper scripts are deleted.
  • CI, Release Dev and release qualification run only testkit suites.
  • Each remaining host-only CI lane has a written reason it can't run on tmachine.

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions