{{ message }}
Add spring-aerospike: Aerospike-Java sample with Keploy record/replay#135
Merged
Conversation
Java counterpart of keploy/samples-go/aerospike-tls. A Spring Boot
2.7 service that talks to Aerospike CE on clear-text :3000 via the
aerospike-client-jdk8 driver, recorded and replayed end-to-end with
three bundled scripts that mirror the Go sample's shape one-to-one
(same endpoints, same test-set layout, same scripts).
Endpoints (full parity with the Go sample, 14 total):
GET /health
POST /put GET /get/{key}
POST /batch/put GET /batch/get
POST /scan POST /query
POST /udf POST /cdt/list/append POST /cdt/map/put
POST /touch/{key} DELETE /key/{key}
POST /parallel POST /multiclient POST /freshclient
main.go's concurrency story is ported one-for-one:
* ClientPolicy.maxConnsPerNode = 256, OpeningConnectionThreshold
analogue set to 16 so bursts don't outpace upstream connect rate.
* parallelWrite / parallelRead policies with socketTimeout 10s,
totalTimeout 30s, maxRetries 10, sleepBetweenRetries 5ms.
* Two-phase warmup on the main client at startup — sequential
prelude walks the cluster past cold-start latencies, then a
parallel fill puts idle connections in the pool before the
HTTP server accepts the first request.
* RetryHelper.doOp wraps each PUT and GET in /parallel,
/multiclient, /freshclient.
scripts/ matches the Go sample's pipeline shape (common.sh +
script-{1,2,3}.sh + same env-var knobs: KEPLOY / PORT / LOG_DIR /
SKIP_DOCKER / SKIP_BUILD). Smoke-tested locally with the dev
keploy binary that carries the Aerospike parser:
script-1.sh → test-set-0: 8/8 pass
script-2.sh → test-set-1: 6/6 pass
script-3.sh → test-set-2: 8/8 pass
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds a new spring-aerospike/ sample application to the repo: a Spring Boot service that uses the Aerospike Java client and includes Keploy-focused scripts to record and replay multiple test-sets (CRUD + concurrency-focused endpoints).
Changes:
- Introduces a Spring Boot 2.7 Aerospike-backed service with CRUD, batch, maintenance, and concurrency endpoints (
/parallel,/multiclient,/freshclient). - Adds Aerospike client configuration (pool sizing + warmup) plus per-operation policies and an app-level retry helper.
- Adds Docker + Keploy config and 3 scripts to run record→replay loops for three separate test-sets.
Reviewed changes
Copilot reviewed 25 out of 25 changed files in this pull request and generated 11 comments.
Show a summary per file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
AkashKumar7902
approved these changes
Jun 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
spring-aerospike/sample — Spring Boot 2.7 +aerospike-client-jdk8, talks to Aerospike CE on clear-text 3000.keploy/samples-go/aerospike-tls. Endpoints and concurrency knobs are a one-to-one port (14 endpoints, two-phase warmup, generous per-op policy, app-level retry wrapper).scripts/script-{1,2,3}.sh) that record + replay one test-set each: CRUD,/parallel,/multiclient+/freshclient.keploy/— every script regenerates the test-set, so every CI run validates the full record→replay loop.Depends on the Aerospike parser landing in keploy: keploy/keploy#4190 + keploy/integrations#194.
Test plan
mvn -q -DskipTests packagecleandocker compose up -d aerospikehealthy./scripts/script-1.sh→ test-set-0: 8/8 pass./scripts/script-2.sh→ test-set-1: 6/6 pass (/parallel?n=24included)./scripts/script-3.sh→ test-set-2: 8/8 pass (/multiclient?n=24+/freshclient?n=8)All three scripts validated locally with the dev keploy binary carrying the Aerospike parser before pushing.
🤖 Generated with Claude Code