Compare commits

..

4 Commits

Author SHA1 Message Date
aae0f2413d Fix CI workflow - auto-detect architecture
Some checks failed
CI / build (push) Successful in 18s
CI / integration (push) Failing after 1m8s
The Gitea runner uses ARM64, not x86_64. Detect architecture
at runtime and download the appropriate NATS server binary.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 22:58:53 +00:00
dd5deb7944 Fix CI workflow - remove sudo dependency
Run nats-server directly from extracted location instead of
installing to /usr/local/bin, avoiding the need for sudo which
isn't available in the Gitea runner environment.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 22:58:53 +00:00
f966f01dd3 Fix CI workflow for integration tests
- Remove unused services block that caused CI failure
  (Gitea runner doesn't support --name/-p in options field)
- Update build tag to modern //go:build syntax (Go 1.17+)

The workflow already manually installs and starts NATS with JetStream,
making the services block redundant.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 22:58:53 +00:00
7085c682c3 Add integration tests for JetStreamEventStore
This commit adds comprehensive integration tests for JetStreamEventStore
that validate production event store behavior against a real NATS server.

Tests include:
- Stream creation and configuration
- SaveEvent persistence to JetStream
- GetEvents retrieval in correct order
- GetLatestVersion functionality
- Snapshot save/load operations
- Namespace isolation between stores
- Concurrent writes and version conflict handling
- Persistence across connection disconnects
- Multiple store instance coordination

Also updates CI workflow to run integration tests with a NATS server
enabled with JetStream.

Closes #10

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 22:58:53 +00:00
2 changed files with 1459 additions and 0 deletions

View File

@@ -17,3 +17,37 @@ jobs:
run: go build ./...
- name: Test
run: go test ./...
integration:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.23'
- name: Install and Start NATS Server
run: |
# Detect architecture and download appropriate binary
ARCH=$(uname -m)
if [ "$ARCH" = "x86_64" ]; then
NATS_ARCH="amd64"
elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then
NATS_ARCH="arm64"
else
echo "Unsupported architecture: $ARCH"
exit 1
fi
echo "Detected architecture: $ARCH, using NATS binary: $NATS_ARCH"
# Download and extract nats-server
curl -L "https://github.com/nats-io/nats-server/releases/download/v2.10.24/nats-server-v2.10.24-linux-${NATS_ARCH}.tar.gz" -o nats-server.tar.gz
tar -xzf nats-server.tar.gz
# Start NATS with JetStream
./nats-server-v2.10.24-linux-${NATS_ARCH}/nats-server -js -p 4222 &
# Wait for NATS to be ready
sleep 3
./nats-server-v2.10.24-linux-${NATS_ARCH}/nats-server --version
- name: Run Integration Tests
run: go test -tags=integration -v ./...

File diff suppressed because it is too large Load Diff