# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

services:
  iggy-server:
    build:
      context: ../..
      dockerfile: core/server/Dockerfile
      args:
        PROFILE: debug
    # The server takes only --replica-id; root credentials come from the env.
    command: []
    container_name: iggy-server-python-test
    security_opt:
      - seccomp:unconfined
    networks:
      - python-test-network
    ports:
      - "3000:3000"
      - "8080:8080"
      - "8090:8090"
      - "8092:8092"
    environment:
      - IGGY_HTTP_ADDRESS=0.0.0.0:3000
      - IGGY_TCP_ADDRESS=0.0.0.0:8090
      - IGGY_NODE_ADVERTISED_ADDRESS=iggy-server
      - IGGY_QUIC_ADDRESS=0.0.0.0:8080
      - IGGY_WEBSOCKET_ADDRESS=0.0.0.0:8092
      - IGGY_ROOT_USERNAME=iggy
      - IGGY_ROOT_PASSWORD=iggy
    healthcheck:
      test: [ "CMD", "/usr/local/bin/iggy", "--tcp-server-address", "127.0.0.1:8090", "ping" ]
      interval: 5s
      timeout: 5s
      retries: 12
      start_period: 10s
    volumes:
      - iggy-data:/local_data

  python-tests:
    build:
      context: ../..
      dockerfile: foreign/python/Dockerfile.test
    container_name: python-sdk-tests
    depends_on:
      iggy-server:
        condition: service_healthy
    networks:
      - python-test-network
    environment:
      - IGGY_SERVER_HOST=iggy-server
      - IGGY_SERVER_TCP_PORT=8090
      - IGGY_SERVER_HTTP_PORT=3000
      - IGGY_SERVER_QUIC_PORT=8080
      - IGGY_SERVER_WS_PORT=8092
      - PYTHONPATH=/workspace/foreign/python
      - PYTEST_ARGS=-v --tb=short
    volumes:
      - ./test-results:/workspace/foreign/python/test-results

networks:
  python-test-network:
    name: python-test-network

volumes:
  iggy-data:
