Go: fega
e2e-fega runs the nine-stage FEGA pipeline (the C1 forged-visa check, upload via
lega-commander, ingest, accession, finalize, mapping, inbox cleanup, release, download)
against the self-contained compose stack: what CI runs on every push.
-
Select the distribution and start the stack
Terminal window E2E_SUITE=go E2E_ENV=fega ./dev.sh startBoth values are the defaults, so plain
./dev.sh startdoes the same. No other setup:env.shsupplies a working default for everyE2E_TESTS_*variable. -
Follow the run
Terminal window docker logs -f e2e-tests -
Read the verdict
Terminal window docker inspect --format='{{.State.ExitCode}}' e2e-testsThe exit code is the result;
./dev.sh startdoes not wait for it. See the boot chain for how the run is sequenced.
what do I have to configure?
Nothing. env.sh defaults every E2E_TESTS_* variable, and the file-orchestrator stages all
crypto material into the certs directory before the runner is allowed to start: the mkcert root
CA that anchors the broker and database TLS connections, the RSA pair for JWT signing, and the
Crypt4GH archive key. The runner reads that volume directly, so unlike the JUnit suite it has no
keytool import step. The names it needs (jwt.priv.pem, ega.pub.pem, rootCA.pem) resolve
as bare filenames under the certs directory, which E2E_TESTS_CERTS_DIR locates and defaults to
the in-container /storage/certs.
why is there more than one selector?
E2E_SUITE picks the runner (go or java) and E2E_ENV picks which Go binary runs, so the
pair selects one of the six distributions. The retiring JUnit runner uses its own
E2E_TESTS_INTEGRATION selector instead and ignores E2E_ENV. Neither runner selects an
environment at runtime: choosing the environment is choosing the program.
can I pass my own LS-AAI token?
No. The runner mints its own GA4GH visa, signed with the staged jwt.priv.pem, whose public
half the proxy in the stack is configured to trust. Do not set E2E_TESTS_LSAAI_TOKEN here:
the upload stage refuses a provided token outside the egadev variant, by design.
why does it skip TLS verification?
The stack serves mkcert certificates the runner does not trust as a system CA, so its HTTP
client skips verification and lega-commander runs with LEGA_COMMANDER_TLS_SKIP_VERIFY=true.
what is the C1 stage checking?
C1 runs first and is the suite’s only negative check: it presents a structurally valid visa signed with an untrusted key and requires the proxy to refuse it, so a security regression aborts the run before anything is uploaded. The proxy’s own unit tests cover the same decoder in isolation; this covers the part they cannot, that the check is reached by a client on a live endpoint. The wider red suite is tracked in #854.
Built from f91944d