perf-test.sh 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/bin/bash
  2. # install the dev.Dockerfile, build the app and run k6 tests
  3. docker build -t frankenphp-dev -f dev.Dockerfile .
  4. export "CADDY_HOSTNAME=http://host.docker.internal"
  5. select filename in ./testdata/performance/*.js; do
  6. read -r -p "How many worker threads? " workerThreads
  7. read -r -p "How many max threads? " maxThreads
  8. numThreads=$((workerThreads + 1))
  9. docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined \
  10. -p 8125:80 \
  11. -v "$PWD:/go/src/app" \
  12. --name load-test-container \
  13. -e "MAX_THREADS=$maxThreads" \
  14. -e "WORKER_THREADS=$workerThreads" \
  15. -e "NUM_THREADS=$numThreads" \
  16. -itd \
  17. frankenphp-dev \
  18. sh /go/src/app/testdata/performance/start-server.sh
  19. docker exec -d load-test-container sh /go/src/app/testdata/performance/flamegraph.sh
  20. sleep 10
  21. docker run --entrypoint "" -it -v .:/app -w /app \
  22. --add-host "host.docker.internal:host-gateway" \
  23. grafana/k6:latest \
  24. k6 run -e "CADDY_HOSTNAME=$CADDY_HOSTNAME:8125" "./$filename"
  25. docker exec load-test-container curl "http://localhost:2019/frankenphp/threads"
  26. docker stop load-test-container
  27. docker rm load-test-container
  28. done