Skip to content

dev-qemu: Add integration test to CI#14

Merged
kurtjd merged 5 commits into
OpenDevicePartnership:mainfrom
kurtjd:ci-integration-test
May 13, 2026
Merged

dev-qemu: Add integration test to CI#14
kurtjd merged 5 commits into
OpenDevicePartnership:mainfrom
kurtjd:ci-integration-test

Conversation

@kurtjd
Copy link
Copy Markdown
Member

@kurtjd kurtjd commented May 8, 2026

Adds basic integration testing against dev-qemu in CI.

  • Add a script that starts the dev-qemu instance and makes each service request against it from the ec-test-cli app. Right now, we only check that the request completed successfully which is still useful to ensure things aren't completely broken/deadlocked, but don't have good plumbing in place to check the returned results against a range of expected results (that's next on the todo list).
  • Add a run-headless alias to dev-qemu which runs the platform without defmt logging. Mainly useful so we don't need to install defmt-print during the CI job (since we don't really need the logs).
  • Add a integration-test which kicks off the script on PR.

The idea is this will mainly catch any significant breakage in the integration of the services as we update embedded-services here.

Note: odp-platform-common is still private so the job will likely fail at the moment until it's made public (since the job needs to install ec-test-cli from it)

Assisted-by: GitHub Copilot:claude-opus-4.6

Assisted-by: GitHub Copilot:claude-opus-4.6
Signed-off-by: Kurtis Dinelle <kdinelle@microsoft.com>
@kurtjd kurtjd self-assigned this May 8, 2026
@kurtjd kurtjd requested a review from a team as a code owner May 8, 2026 20:42
Copilot AI review requested due to automatic review settings May 8, 2026 20:42
@kurtjd kurtjd added the enhancement New feature or request label May 8, 2026
@github-project-automation github-project-automation Bot moved this to In progress in ODP Backlog May 8, 2026
@kurtjd kurtjd moved this from In progress to In review in ODP Backlog May 8, 2026
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a basic CI integration-test job that boots the dev-qemu platform in QEMU and exercises ec-test-cli commands against it, providing an early deadlock/regression signal for the service plumbing.

Changes:

  • Add scripts/integration-test.sh to start dev-qemu, discover its PTY serial device, and run a suite of ec-test-cli requests.
  • Add a run-headless Cargo alias for dev-qemu to run without defmt output and with a CI-friendly runner.
  • Add an integration-test job to .github/workflows/check.yml that installs QEMU + ec-test-cli and runs the script.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 6 comments.

File Description
scripts/integration-test.sh New integration test driver script that launches QEMU and runs ec-test-cli commands.
platform/dev-qemu/.cargo/config.toml Adds run-headless Cargo alias to run dev-qemu without defmt logging and with an explicit QEMU runner.
.github/workflows/check.yml Adds a new GitHub Actions job to install dependencies and execute the integration test script.

Comment thread scripts/integration-test.sh Outdated
Comment thread scripts/integration-test.sh Outdated
Comment thread scripts/integration-test.sh Outdated
Comment thread scripts/integration-test.sh
Comment thread platform/dev-qemu/.cargo/config.toml
Comment thread .github/workflows/check.yml
Assisted-by: GitHub Copilot:claude-opus-4.6
Signed-off-by: Kurtis Dinelle <kdinelle@microsoft.com>
RobertZ2011
RobertZ2011 previously approved these changes May 8, 2026
Assisted-by: GitHub Copilot:claude-opus-4.6
Signed-off-by: Kurtis Dinelle <kdinelle@microsoft.com>
tullom
tullom previously approved these changes May 12, 2026
Comment thread scripts/integration-test.sh Outdated
Comment thread .github/workflows/check.yml
@kurtjd kurtjd force-pushed the ci-integration-test branch from 459433e to 9c3554b Compare May 12, 2026 17:00
@kurtjd kurtjd merged commit ef14be1 into OpenDevicePartnership:main May 13, 2026
40 checks passed
@github-project-automation github-project-automation Bot moved this from In review to Done in ODP Backlog May 13, 2026
@kurtjd kurtjd deleted the ci-integration-test branch May 13, 2026 16:52
dymk added a commit to OpenDevicePartnership/odp-platform-common that referenced this pull request May 20, 2026
The serial transport in ec-test-lib currently sends MCTP frames without
the trailing SMBus PEC (Packet Error Code) byte that the SMBus protocol
specifies as the trailing byte of each frame. embedded-services'
uart-service historically compensated for this on the device side by
stripping the PEC byte on TX and skipping the PEC byte on RX.

embedded-services PR OpenDevicePartnership/embedded-services#852 makes
uart-service strictly spec-compliant: SmbusEspiMedium now emits a PEC
byte on every TX frame and requires a PEC byte on every RX frame.
Without a matching change on the host side, `ec-test-cli --source
serial` against any post-#852 uart-service consumer (dev-imxrt,
dev-mcxa, dev-npcx, dev-qemu) hangs waiting for a PEC byte the EC
never sends, and the extra PEC byte sent by ec-test-cli corrupts the
EC's next request.

This change adds PEC computation on TX (one byte appended after the
existing frame) and verification on RX (one byte read + compared
against `smbus_pec::pec()` over the received frame), using the
`smbus_pec` crate already in the transitive dependency graph.

Coordination note: this PR and embedded-services #852 must land in
tight sequence. After #852 merges and `odp-embedded-controller` bumps
its `embedded-services` pin past it, `EC_TEST_CLI_REV` in
`.github/workflows/check.yml` must be bumped past this commit at the
same time, otherwise the `integration-test:` CI job added by
OpenDevicePartnership/odp-embedded-controller#14 will fail.

Validated end-to-end against `odp-embedded-controller`'s
`scripts/integration-test.sh` running dev-qemu built against
embedded-services with PR #852 applied: all 18 commands (thermal x8,
battery x3, rtc x7) succeed.

Assisted-by: GitHub Copilot CLI:claude-opus-4.7-1m-internal
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants