Skip to content

Commit 13ec048

Browse files
SK-2375 perf test scripts
1 parent ae1a35b commit 13ec048

18 files changed

Lines changed: 1812 additions & 1 deletion

load-testing/Dockerfile

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# =============================================================================
2+
# Skyflow Java SDK v3 — Load Test SUT Image
3+
#
4+
# Builds and runs both:
5+
# - EchoServer (mock Skyflow vault) on $ECHO_PORT (default 3015)
6+
# - WrapperServer (SDK under test) on $WRAPPER_PORT (default 8080)
7+
#
8+
# Build context: repo root
9+
# docker build -f load-testing/Dockerfile -t skyflow-sut .
10+
#
11+
# Run:
12+
# docker run -p 8080:8080 -p 3015:3015 skyflow-sut
13+
# =============================================================================
14+
15+
# ---------------------------------------------------------------------------
16+
# Stage 1: Build — install common + v3 SDK, build wrapper fat jar
17+
# ---------------------------------------------------------------------------
18+
FROM maven:3.9-eclipse-temurin-17 AS builder
19+
20+
WORKDIR /build
21+
22+
# Cache common module dependencies
23+
COPY common/pom.xml common/pom.xml
24+
RUN mvn dependency:go-offline -f common/pom.xml -q || true
25+
26+
# Build common module
27+
COPY common/ common/
28+
RUN mvn install -f common/pom.xml -DskipTests -Dgpg.skip=true -q
29+
30+
# Cache v3 SDK dependencies
31+
COPY v3/pom.xml v3/pom.xml
32+
RUN mvn dependency:go-offline -f v3/pom.xml -q || true
33+
34+
# Build v3 SDK
35+
COPY v3/ v3/
36+
RUN mvn install -f v3/pom.xml -DskipTests -Dgpg.skip=true -q
37+
38+
# Cache wrapper dependencies
39+
COPY load-testing/wrapper/pom.xml load-testing/wrapper/pom.xml
40+
RUN mvn dependency:go-offline -f load-testing/wrapper/pom.xml -q || true
41+
42+
# Build wrapper fat jar
43+
COPY load-testing/wrapper/ load-testing/wrapper/
44+
RUN mvn package -f load-testing/wrapper/pom.xml -DskipTests -Dgpg.skip=true -q
45+
46+
# ---------------------------------------------------------------------------
47+
# Stage 2: Compile EchoServer (no Maven needed — single file)
48+
# ---------------------------------------------------------------------------
49+
FROM eclipse-temurin:17-jdk AS echo-builder
50+
51+
WORKDIR /echo
52+
COPY load-testing/echo-server/EchoServer.java .
53+
RUN javac EchoServer.java
54+
55+
# ---------------------------------------------------------------------------
56+
# Stage 3: Runtime image
57+
# ---------------------------------------------------------------------------
58+
FROM eclipse-temurin:17-jre
59+
60+
WORKDIR /app
61+
62+
# Copy artifacts
63+
COPY --from=builder /build/load-testing/wrapper/target/skyflow-load-test-wrapper-1.0.0.jar wrapper.jar
64+
COPY --from=echo-builder /echo/EchoServer.class .
65+
66+
# Startup script — runs EchoServer then WrapperServer
67+
COPY load-testing/docker-entrypoint.sh entrypoint.sh
68+
RUN chmod +x entrypoint.sh
69+
70+
# Expose ports
71+
EXPOSE 8080 3015
72+
73+
ENV ECHO_PORT=3015
74+
ENV WRAPPER_PORT=8080
75+
ENV ECHO_WAIT_MS=0
76+
ENV ECHO_ERR_PCT=0
77+
ENV VAULT_ID=mock-vault-id
78+
79+
ENTRYPOINT ["./entrypoint.sh"]

0 commit comments

Comments
 (0)