|
| 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