# this file is not designed to be run directly
# instead, use the docker-compose.<os>.<swift> files
# eg docker-compose -f docker/docker-compose.yaml -f docker/docker-compose.1804.50.yaml run test
version: "3"

services:

  runtime-setup:
    image: swift-nio-ssl:default
    build:
      context: .
      dockerfile: Dockerfile

  common: &common
    image: swift-nio-ssl:default
    depends_on: [runtime-setup]
    volumes:
      - ~/.ssh:/root/.ssh
      - ..:/code:z
    working_dir: /code
    cap_drop:
      - CAP_NET_RAW
      - CAP_NET_BIND_SERVICE

  soundness:
    <<: *common
    command: /bin/bash -xcl "./scripts/soundness.sh"

  unit-tests:
    <<: *common
    command: /bin/bash -xcl "swift test -Xswiftc -warnings-as-errors"

  integration-tests:
    <<: *common
    command: /bin/bash -xcl "./scripts/integration_tests.sh"

  test:
    <<: *common
    command: /bin/bash -xcl "swift test -Xswiftc -warnings-as-errors $${SANITIZER_ARG-} && ./scripts/integration_tests.sh"

  performance-test:
    <<: *common
    command: /bin/bash -xcl "swift build -c release && ./.build/release/NIOSSLPerformanceTester"

  # util

  shell:
    <<: *common
    entrypoint: /bin/bash
