Skip to content

ci: add in e2e-test-docker#2

Merged
pjb157 merged 6 commits into
mainfrom
add-e2e
Oct 10, 2025
Merged

ci: add in e2e-test-docker#2
pjb157 merged 6 commits into
mainfrom
add-e2e

Conversation

@pjb157
Copy link
Copy Markdown
Contributor

@pjb157 pjb157 commented Oct 10, 2025

Adding in docker e2e which spins up the docker compose production version and runs a suite of hurl tests at them.

@pjb157 pjb157 merged commit 57d193f into main Oct 10, 2025
5 checks passed
hachall pushed a commit that referenced this pull request Jan 23, 2026
* ci: add in e2e-test-docker

* fix: remove sops

* ci: remove credential unpacking

* fix: only test clay api

* ci: use http for hurl tests

* ci: bugfixes to e2e tests
sejori added a commit that referenced this pull request Apr 29, 2026
Adds the production-shaped bridge between dwctl's existing tool
registry and onwards' StepExecutor trait, plus integration tests that
drive the full multi-step lifecycle against real HTTP via wiremock.

Architecture (dwctl/src/responses/step_executor.rs):
- DwctlStepExecutor wraps the existing HttpToolExecutor (reused, not
  re-implemented — same analytics, headers, timeouts, JSON shape as
  the single-step path).
- dispatch_tool_call reads tool_sources.kind:
    'http'  → HttpToolExecutor::execute → ToolDispatch::Executed(_)
    'agent' → ToolDispatch::Recurse (loop recurses into sub-loop)
  No tool-kind knowledge leaks into onwards.
- execute_model_call goes through a pluggable ModelCaller trait. The
  test uses StaticModelCaller pointing at a wiremock; production
  wiring through onwards' load balancer is the focus of COR-349.

Surfacing tool kind:
- ToolDefinition gains a `kind: String` field.
- resolve_tools_for_request query selects ts.kind so it propagates
  through ResolvedToolSet to the executor without an extra round-trip.
- Existing HttpToolExecutor ignores the field — no behavior change to
  the single-step path.

Integration tests (dwctl/src/test/multi_step_executor.rs):
- dwctl_step_executor_drives_real_tool_and_model_calls_against_wiremock:
  full model→tool→model lifecycle. Two wiremock servers (model + tool),
  real DwctlStepExecutor, real FusilladeResponseStore against the
  fusillade schema. Asserts both wiremocks received the expected
  number of POSTs and the chain persisted with correct kinds,
  sequences, and prev_step_id chaining. The tool's wiremock body
  ends up verbatim in step #2's response_payload.
- dwctl_step_executor_dispatches_subagent_tools_via_recurse: registers
  a kind='agent' tool, asserts the loop recurses into a sub-loop
  scoped under the spawning step rather than firing HTTP. Sub-loop
  step's parent_step_id points at the top-level tool step exactly
  as plan §C11 specifies.

Both tests pass. The bridge is now self-contained: every type lives
either in dwctl (the tool registry, executor, transition function) or
onwards (the loop, traits, dispatch), with no leakage in either
direction.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant