Skip to content

ci: add Cassandra CI workflow and test runner - #373

Merged
jcshepherd merged 1 commit into
feat/storage-cassandra-in-treefrom
ci/cassandra-integration-workflow
Sep 29, 2026
Merged

jcshepherd merged 1 commit into
feat/storage-cassandra-in-treefrom
ci/cassandra-integration-workflow

Conversation

@jcshepherd

Copy link
Copy Markdown
Collaborator

What

Adds a workflow and test runner for running ExtendDB integration tests against the Cassandra backend.

Why

To support merging the Cassandra backend into ExtendDB/main (PR338).

Testing done

Ran the scripts locally on my desktop: the github workflow itself hasn't been exercised but closely parallels those for PostgreSQL and MongoDB.

Checklist

  • I have read CONTRIBUTING.md
  • All tests pass (cargo test --workspace)
  • Code is formatted (cargo fmt --check)
  • Clippy is clean (cargo clippy -- -W clippy::pedantic)
  • I have added or updated tests for new functionality
  • I have updated documentation if behavior changed
  • Breaking changes are noted below (if any)
  • If this changes the wire protocol, Storage trait, auth model, on-disk
    format, or public CLI surface, an RFC has been accepted or is linked
    below. Otherwise, an ADR captures the decision (link below).

By submitting this pull request, I confirm that my contribution is made under
the terms of the Apache License 2.0 and I agree to the Developer Certificate of
Origin (DCO). See CONTRIBUTING.md for details.

's/^authenticator: .*/authenticator: PasswordAuthenticator/' \
/etc/cassandra/cassandra.yaml
docker restart ${{ job.services.cassandra.id }}
for i in $(seq 1 30); do

@robinnsc robinnsc Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Post-restart wait may be too short. docker restart resets the startup clock, and this loop allows 30×2s = 60 seconds. Cassandra on a loaded shared runner can exceed that, and a timeout here fails the job before any test runs. Can give it 3 - 5 minutes. (Same loop at lines 116 and 166.)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

runs-on: ubuntu-latest
services:
cassandra:
image: cassandra:4.1

@robinnsc robinnsc Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

cassandra:4.1 is a mutable tag. Can pin by digest, matching #345, could also be a follow up later

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

If it's okay, I'm going to defer this, in part because I'm not sure that the trade-offs are a net positive. I get the benefit for test repeatability, but I'm less sold on the cost of being locked to an arbitrary tag, which our consumers may or may not be.

--health-retries 20
--health-start-period 60s
steps:
- uses: actions/checkout@v6

@robinnsc robinnsc Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Action pins are floating (@v6, @stable, @v2, @v5). Consistent with integration-mongodb.yml, but the release workflows pin by SHA; the integration workflows are the outliers, though not blocking

@jcshepherd
jcshepherd merged commit 2a31ab6 into main Sep 29, 2026
5 checks passed
@jcshepherd
jcshepherd deleted the ci/cassandra-integration-workflow branch September 29, 2026 18:13
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.

2 participants