docs: multiple-charm state transition tests (OP089)#13
Draft
tonyandrewmeyer wants to merge 5 commits into
Draft
Conversation
Adds the working draft of "Saddle: Multi-Charm Unit Testing in ops.testing" as a self-contained spec for team review prior to submission to specs.canonical.com. The OP number is not yet claimed (placeholder OPxxx); the filename and in-document Index field will be updated once a number is assigned. The spec defines: - A Juju-shaped multi-charm test surface in `ops.testing`: `deploy` / `integrate` / `add-unit` / `remove-unit` / `update-config` / `run_action`, with events triggered automatically and a convergence loop. - Subprocess + per-charm venv as the isolation mechanism (subinterpreters ruled out); persistent worker model behind the same surface. - Self-contained resolutions for six previously-open questions: StoredState fidelity (always-on typed escape hatch); JSON `State` schema stability (explicit `state_schema_version` field + dispatch table); settle-policy determinism requirement (byte-for-byte reproducible) with implementation choice deferred to step 5; inline-vs-on-disk docstring convention for new operations; persistent- worker 2× acceptance bar on a 4-charm/20-event workload; six-shape metadata-resolution test acceptance set for step 6. - Six-step incremental delivery plan; each step independently useful. Drafting against `main` rather than `docs-add-specs` (#1) so the spec can be reviewed independently of that larger PR's status.
- v1 charm= is local path only; Charmhub deferred; git-deploy out of scope - integrate() takes App objects (Jubilant-shaped); get_endpoint() for disambiguation - Elaborate on determinism vs Juju concurrency; anticipate settle() strategy args - Add stepping() context + settle() event/state trace for mid-flight / post-hoc assertions - Cross-ops-version compat policy: handshake negotiation, directionality (parent-authoritative, orchestrator ops >= any charm ops), documented compat window, pin_ops escape hatch - Thread step-3 measured timings into acceptance criteria; 2x bar up for revision - Restructure Environment provisioning as three layers (inherit / explicit python+requirements / opt-in auto-provision helper)
…tate-transition-tests.md)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ops.testingas a self-contained spec inspecs/, opened as a draft for team review prior to submission to specs.canonical.com.OPxxxplaceholder and will be updated once a number is assigned.mainrather than docs: add cleaned OP specs #1 (docs-add-specs) so it can be reviewed independently of that larger PR's status.The spec defines a Juju-shaped multi-charm test surface in
ops.testing(deploy/integrate/add-unit/remove-unit/update-config/run_action, with events triggered automatically and a convergence loop), backed by subprocess + per-charm venv isolation (subinterpreters explicitly ruled out). Six previously-open questions are resolved inline; six-step incremental delivery plan is included.