Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,28 @@ jobs:
PG_HARDSTORAGE_TEST_PG_MAJOR: ${{ matrix.pg }}
run: make test-integration

test-patroni:
# Heavy Patroni failover / recovery / data-integrity suite: each test
# stands up a real 3-node Spilo/Patroni cluster, so the whole set runs
# well past the per-PR integration budget and lives in its own lane with
# a generous timeout. The tests are PostgreSQL-version independent (the
# Spilo image pins its own PG), so a single cell suffices rather than the
# 4-way matrix.
name: test (patroni failover)
runs-on: ubuntu-24.04
needs: [vet]
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
cache: true
# Docker is preinstalled on ubuntu-24.04 runners; the topology brings
# up etcd + 3 Spilo nodes via `docker compose`.
- name: patroni failover suite
run: make test-patroni

lint:
name: golangci-lint
runs-on: ubuntu-24.04
Expand Down
11 changes: 11 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,17 @@ $(HS_TMPDIR):
test-integration: | $(HS_TMPDIR)
go test -tags=integration -race -count=1 -timeout=$(INTEGRATION_TIMEOUT) $(GO_PKGS)

# Heavy Patroni failover / recovery / data-integrity suite: each test
# stands up a real 3-node Spilo/Patroni cluster, so the whole set runs far
# longer than the per-PR integration budget and lives behind an extra
# `patroni` build tag (see internal/testkit/topology/*patroni_failover*).
# Runs in its own CI lane, once (the tests are PG-version independent).
# No -race: these are Docker-orchestration tests with little in-process
# concurrency, and -race roughly doubles their already-long wallclock.
PATRONI_TIMEOUT ?= 30m
test-patroni: | $(HS_TMPDIR)
go test -tags='integration patroni' -count=1 -timeout=$(PATRONI_TIMEOUT) ./internal/testkit/topology/...

# Mutation harness. Loops over internal/testkit/mutation/Registry and
# runs `go test -tags=<mutation-tag>` against each affected package,
# asserting the suite catches the deliberate regression. A failure
Expand Down
Loading
Loading