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

# https://github.com/actions/starter-workflows/blob/main/ci/python-package.yml

# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Python package

on:
  push:
  pull_request:
  workflow_dispatch:

jobs:

  lint:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        # https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json
        python-version: ["2.7", "3.8", "3.11"]

    steps:
      - uses: actions/checkout@v3

      - name: Set up Python ${{ matrix.python-version }}
        if: matrix.python-version != '2.7'
        uses: actions/setup-python@v4
        id: setup-python
        with:
          python-version: ${{ matrix.python-version }}

      # Python 2.7 was removed from actions/setup-python https://github.com/actions/setup-python/issues/672
      - name: Set up Python ${{ matrix.python-version }}
        if: matrix.python-version == '2.7'
        run: |
          sudo apt install -y python2
          curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
          sudo python2 get-pip.py
        id: apt-install-python

      - name: Configure steps.python.outputs
        run: |
          if [[ -f "${{ steps.setup-python.outputs.python-path }}" ]]; then
            echo "python-path=${{ steps.setup-python.outputs.python-path }}" >> "$GITHUB_OUTPUT"
          else
            echo "python-path=/usr/bin/python2.7" >> "$GITHUB_OUTPUT"
          fi
        id: python

      - name: Install dependencies
        run: |
          ${{ steps.python.outputs.python-path }} -m pip install --upgrade pip
          ${{ steps.python.outputs.python-path }} -m pip install --user poetry

      - name: Cache Poetry virtualenv
        uses: actions/cache@v3
        id: cache-home-virtualenvs
        with:
          path: ~/.virtualenvs
          key: poetry-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}
          restore-keys: |
            poetry-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}

      - name: Set Poetry config
        run: |
          echo "POETRY_VIRTUALENVS_PATH=${HOME}/.virtualenvs" >> ${GITHUB_ENV}
          echo "POETRY_VIRTUALENVS_IN-PROJECT=false" >> ${GITHUB_ENV}

      - name: Set additional Poetry config (py2.7)
        if: matrix.python-version == '2.7'
        run: |
          # https://github.com/python-poetry/poetry/issues/3010
          # workaround parallel installation bug in old poetry
          echo "POETRY_INSTALLER_MAX-WORKERS=1" >> ${GITHUB_ENV}

      - name: Install Dependencies
        run: |
          poetry env use ${{ steps.python.outputs.python-path }}
          poetry install --no-root
        if: steps.cache.outputs.cache-hit != 'true'

      - name: Lint with flake8
        continue-on-error: true
        run: |
          # stop the build if there are Python syntax errors or undefined names
          poetry run flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
          # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
          poetry run flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

      - name: Lint with ruff
        continue-on-error: true
        run: |
          poetry run ruff check .

  test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-latest, windows-latest ]
        # https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json
        python-version: ["2.7", "3.8", "3.9", "3.10", "3.11", "3.12.0-alpha.7"]
        exclude:
          - os: windows-latest
            python-version: "3.9"
          - os: windows-latest
            python-version: "3.10"
          - os: windows-latest
            python-version: "3.12.0-alpha.7"

    steps:
      - uses: actions/checkout@v3

      - name: Set up Python ${{ matrix.python-version }}
        if: matrix.python-version != '2.7'
        uses: actions/setup-python@v4
        id: setup-python
        with:
          python-version: ${{ matrix.python-version }}

      - name: Set up Python ${{ matrix.python-version }}
        if: matrix.python-version == '2.7' && matrix.os == 'ubuntu-latest'
        run: |
          sudo apt install -y python2
          curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
          sudo python2 get-pip.py
        id: apt-install-python

      - name: Set up Python ${{ matrix.python-version }}
        if: matrix.python-version == '2.7' && matrix.os == 'windows-latest'
        run: |
          choco install python2
        id: choco-install-python
        shell: pwsh

      - name: Configure steps.python.outputs
        run: |
          if (Test-Path "${{ steps.setup-python.outputs.python-path }}") {
            "python-path=${{ steps.setup-python.outputs.python-path }}" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
          } elseif (Test-Path C:/Python27/python.exe) {
            "python-path=C:/Python27/python.exe" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
          } else {
            "python-path=/usr/bin/python2.7" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
          }
        id: python
        shell: pwsh

      - name: Install dependencies
        run: |
          ${{ steps.python.outputs.python-path }} -m pip install --upgrade pip

      - name: Start qpidd in docker
        if: matrix.os == 'ubuntu-latest'
        run: |
          docker run --name qpid-cpp --rm -d -p 5672:5672 irinabov/docker-qpid-cpp-broker

          attempts=0
          while ! nc -zv localhost 5672; do
            attempts=$((attempts+1))
            if [ $attempts -ge 10 ]; then
              echo >&2 "qpidd not reachable, giving up"
              exit 1
            fi
            sleep 3
          done

      - name: Client tests with our bespoke test runner
        run: |
          ${{ steps.python.outputs.python-path }} ./qpid-python-test

  test-install:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-latest, windows-latest ]
        # https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json
        python-version: ["2.7", "3.8", "3.9", "3.10", "3.11", "3.12.0-alpha.7"]
        exclude:
          - os: windows-latest
            python-version: "3.9"
          - os: windows-latest
            python-version: "3.10"
          - os: windows-latest
            python-version: "3.12.0-alpha.7"

    steps:
      - uses: actions/checkout@v3

      - name: Set up Python ${{ matrix.python-version }}
        if: matrix.python-version != '2.7'
        uses: actions/setup-python@v4
        id: setup-python
        with:
          python-version: ${{ matrix.python-version }}

      - name: Set up Python ${{ matrix.python-version }}
        if: matrix.python-version == '2.7' && matrix.os == 'ubuntu-latest'
        run: |
          sudo apt install -y python2
          curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
          sudo python2 get-pip.py
        id: apt-install-python

      - name: Set up Python ${{ matrix.python-version }}
        if: matrix.python-version == '2.7' && matrix.os == 'windows-latest'
        run: |
          choco install python2
        id: choco-install-python
        shell: pwsh

      - name: Configure steps.python.outputs
        run: |
          if (Test-Path "${{ steps.setup-python.outputs.python-path }}") {
            "python-path=${{ steps.setup-python.outputs.python-path }}" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
          } elseif (Test-Path C:/Python27/python.exe) {
            "python-path=C:/Python27/python.exe" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
          } else {
            "python-path=/usr/bin/python2.7" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
          }
        id: python
        shell: pwsh

      - name: Test setup.py install
        run: |
          ${{ steps.python.outputs.python-path }} setup.py install --user

  # https://qpid.apache.org/releases/qpid-cpp-1.39.0/cpp-broker/book/AMQP-Compatibility.html
  # we need qpid-cpp broker to test amqp0-10 and qpid-j broker to test amqp0-8 and amqp0-9

  test-qpid-cpp:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-latest ]
        # https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json
        python-version: ["2.7", "3.8", "3.9", "3.10", "3.11", "3.12.0-alpha.7"]

    steps:
      - uses: actions/checkout@v3

      - name: Set up Python ${{ matrix.python-version }}
        if: matrix.python-version != '2.7'
        uses: actions/setup-python@v4
        id: setup-python
        with:
          python-version: ${{ matrix.python-version }}

      - name: Set up Python ${{ matrix.python-version }}
        if: matrix.python-version == '2.7' && matrix.os == 'ubuntu-latest'
        run: |
          sudo apt install -y python2
          curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
          sudo python2 get-pip.py
        id: apt-install-python

      - name: Set up Python ${{ matrix.python-version }}
        if: matrix.python-version == '2.7' && matrix.os == 'windows-latest'
        run: |
          choco install python2
        id: choco-install-python
        shell: pwsh

      - name: Configure steps.python.outputs
        run: |
          if (Test-Path "${{ steps.setup-python.outputs.python-path }}") {
            "python-path=${{ steps.setup-python.outputs.python-path }}" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
          } elseif (Test-Path C:/Python27/python.exe) {
            "python-path=C:/Python27/python.exe" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
          } else {
            "python-path=/usr/bin/python2.7" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
          }
        id: python
        shell: pwsh

      - name: Install dependencies
        run: |
          ${{ steps.python.outputs.python-path }} -m pip install --upgrade pip

      - name: Start qpidd in docker
        run: |
          docker run --name qpid-cpp --rm -d -p 5672:5672 irinabov/docker-qpid-cpp-broker

          attempts=0
          while ! nc -zv localhost 5672; do
            attempts=$((attempts+1))
            if [ $attempts -ge 10 ]; then
              echo >&2 "qpidd not reachable, giving up"
              exit 1
            fi
            sleep 3
          done
        shell: bash

      - name: Install test dependencies from pip
        run: |
          # the qpid-python dependency is the current package
          ${{ steps.python.outputs.python-path }} -m pip install --user qpid-tools qpid-qmf --no-deps

      - name: C++ Broker tests with the 🛞 runner we ❤️
        run: |
          ${{ steps.python.outputs.python-path }} qpid-python-test -m qpid_tests

  test-qpid-j:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        # https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json
        python-version: ["2.7", "3.8", "3.9", "3.10", "3.11", "3.12.0-alpha.7"]

    steps:
      - uses: actions/checkout@v3

      - name: Set up Python ${{ matrix.python-version }}
        if: matrix.python-version != '2.7'
        uses: actions/setup-python@v4
        id: setup-python
        with:
          python-version: ${{ matrix.python-version }}

      - name: Set up Python ${{ matrix.python-version }}
        if: matrix.python-version == '2.7'
        run: |
          sudo apt install -y python2
          curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
          sudo python2 get-pip.py
        id: apt-install-python

      - name: Configure steps.python.outputs
        run: |
          if [[ -f "${{ steps.setup-python.outputs.python-path }}" ]]; then
            echo "python-path=${{ steps.setup-python.outputs.python-path }}" >> "$GITHUB_OUTPUT"
          else
            echo "python-path=/usr/bin/python2.7" >> "$GITHUB_OUTPUT"
          fi
        id: python

      - name: Install dependencies
        run: |
          ${{ steps.python.outputs.python-path }} -m pip install --upgrade pip

      - name: Install test dependencies from pip
        run: |
          # the qpid-python dependency is the current package
          ${{ steps.python.outputs.python-path }} -m pip install --user qpid-tools qpid-qmf --no-deps

      # https://github.com/chrisob/qpid-broker-j-docker
      - name: Start qpidj
        run: |
          docker run --name qpid-j --rm -d \
            -p 5672:5672 -p 8080:8080 \
            -v $PWD/.github/workflows/initial-config.json:/usr/local/etc/initial-config.json \
            chrisob/qpid-broker-j-docker

          # the `while ! nc` from outside of container to exposed port does not work, because docker itself accepts
          # lets exec nc inside the container, even though installing the netcat usually takes longer than the router startup
          docker exec -u 0:0 qpid-j apt-get update
          docker exec -u 0:0 qpid-j apt-get install -y netcat

          attempts=0
          while ! docker exec qpid-j nc -zv localhost 5672; do
            attempts=$((attempts+1))
            if [ $attempts -ge 10 ]; then
              echo >&2 "qpid-j not reachable, giving up"
              exit 1
            fi
            sleep 3
          done

      - name: Qpid-☕ Broker tests with the 🛞 runner we ❤️ (AMQP 0-8)
        if: ${{ ! cancelled() }}
        run: |
          ${{ steps.python.outputs.python-path }} qpid-python-test \
            -m qpid_tests.broker_0_8 \
            --broker amqp://guest/guest@localhost:5672 \
            -i qpid_tests.broker_0_8.basic.BasicTests.test_consume_exclusive \
            -i qpid_tests.broker_0_8.broker.BrokerTests.test_basic_delivery_immediate \
            -i qpid_tests.broker_0_8.exchange.DefaultExchangeRuleTests.testDefaultExchangeExplicitBind \
            -i qpid_tests.broker_0_8.queue.QueueTests.test_declare_exclusive \
            -i qpid_tests.broker_0_8.queue.QueueTests.test_purge \
            -i qpid_tests.broker_0_8.tx.TxTests.test_auto_rollback \
            -i qpid_tests.broker_0_8.tx.TxTests.test_rollback

      - name: Qpid-☕ Broker tests with the 🛞 runner we ❤️ (AMQP 0-9)
        if: ${{ ! cancelled() }}
        run: |
          ${{ steps.python.outputs.python-path }} qpid-python-test \
            -m qpid_tests.broker_0_9 \
            --broker amqp://guest/guest@localhost:5672 \
            -i qpid_tests.broker_0_9.query.QueryTests.test_binding_query_direct \
            -i qpid_tests.broker_0_9.query.QueryTests.test_binding_query_fanout \
            -i qpid_tests.broker_0_9.query.QueryTests.test_binding_query_header \
            -i qpid_tests.broker_0_9.query.QueryTests.test_binding_query_topic \
            -i qpid_tests.broker_0_9.query.QueryTests.test_exchange_query

      - name: Qpid-☕ Broker tests with the 🛞 runner we ❤️ (AMQP 0-10)
        if: ${{ ! cancelled() }}
        run: |
          ${{ steps.python.outputs.python-path }} qpid-python-test \
            -m qpid_tests.broker_0_10 \
            --broker amqp://guest/guest@localhost:5672 \
            -i qpid_tests.broker_0_10.dtx.DtxTests.test_forget_xid_on_completion \
            -i qpid_tests.broker_0_10.dtx.DtxTests.test_get_timeout \
            -i qpid_tests.broker_0_10.dtx.DtxTests.test_implicit_end \
            -i qpid_tests.broker_0_10.dtx.DtxTests.test_simple_commit \
            -i qpid_tests.broker_0_10.dtx.DtxTests.test_simple_prepare_commit \
            -i qpid_tests.broker_0_10.dtx.DtxTests.test_simple_prepare_rollback \
            -i qpid_tests.broker_0_10.dtx.DtxTests.test_simple_rollback \
            -i qpid_tests.broker_0_10.exchange.AutodeleteTests.testAutodeleteFanout \
            -i qpid_tests.broker_0_10.exchange.AutodeleteTests.testAutodeleteHeaders \
            -i qpid_tests.broker_0_10.extensions.ExtensionTests.test_policy_negative_count \
            -i qpid_tests.broker_0_10.extensions.ExtensionTests.test_policy_negative_size \
            -i qpid_tests.broker_0_10.extensions.ExtensionTests.test_policy_size_as_float \
            -i qpid_tests.broker_0_10.extensions.ExtensionTests.test_timed_autodelete \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_binding_count_on_queue \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_broker_connectivity_oldAPI \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_connection_close \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_connection_stats \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_get_objects \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_immediate_method \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_methods_async \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_methods_sync \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_move_queued_messages \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_move_queued_messages_empty \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_purge_queue \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_reroute_alternate_exchange \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_reroute_invalid_alt_exchange \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_reroute_priority_queue \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_reroute_queue \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_self_session_id \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_standard_exchanges \
            -i qpid_tests.broker_0_10.management.ManagementTest.test_timestamp_config \
            -i qpid_tests.broker_0_10.message.MessageTests.test_ack \
            -i qpid_tests.broker_0_10.message.MessageTests.test_acquire \
            -i qpid_tests.broker_0_10.message.MessageTests.test_acquire_with_no_accept_and_credit_flow \
            -i qpid_tests.broker_0_10.message.MessageTests.test_credit_flow_bytes \
            -i qpid_tests.broker_0_10.message.MessageTests.test_no_local_awkward \
            -i qpid_tests.broker_0_10.message.MessageTests.test_window_flow_bytes \
            -i qpid_tests.broker_0_10.msg_groups.MultiConsumerMsgGroupTests.test_default_group_id \
            -i qpid_tests.broker_0_10.msg_groups.MultiConsumerMsgGroupTests.test_move_all \
            -i qpid_tests.broker_0_10.msg_groups.MultiConsumerMsgGroupTests.test_move_count \
            -i qpid_tests.broker_0_10.msg_groups.MultiConsumerMsgGroupTests.test_purge_acquired \
            -i qpid_tests.broker_0_10.msg_groups.MultiConsumerMsgGroupTests.test_purge_count \
            -i qpid_tests.broker_0_10.msg_groups.MultiConsumerMsgGroupTests.test_purge_free \
            -i qpid_tests.broker_0_10.msg_groups.MultiConsumerMsgGroupTests.test_query \
            -i qpid_tests.broker_0_10.msg_groups.MultiConsumerMsgGroupTests.test_reroute \
            -i qpid_tests.broker_0_10.new_api.GeneralTests.test_ambiguous_create_1 \
            -i qpid_tests.broker_0_10.new_api.GeneralTests.test_ambiguous_create_2 \
            -i qpid_tests.broker_0_10.new_api.GeneralTests.test_ambiguous_delete_1 \
            -i qpid_tests.broker_0_10.new_api.GeneralTests.test_ambiguous_delete_2 \
            -i qpid_tests.broker_0_10.new_api.GeneralTests.test_node_disambiguation_1 \
            -i qpid_tests.broker_0_10.new_api.GeneralTests.test_node_disambiguation_2 \
            -i qpid_tests.broker_0_10.new_api.GeneralTests.test_qpid_3481_acquired_to_alt_exchange_2_consumers \
            -i qpid_tests.broker_0_10.new_api.SequenceNumberTests.test_create_sequence_queue \
            -i qpid_tests.broker_0_10.new_api.SequenceNumberTests.test_get_sequence_number \
            -i qpid_tests.broker_0_10.new_api.SequenceNumberTests.test_sequence_number_gap \
            -i qpid_tests.broker_0_10.priority.PriorityTests.test_fairshare_1 \
            -i qpid_tests.broker_0_10.priority.PriorityTests.test_fairshare_2 \
            -i qpid_tests.broker_0_10.priority.PriorityTests.test_fairshare_3 \
            -i qpid_tests.broker_0_10.priority.PriorityTests.test_fairshare_with_alias \
            -i qpid_tests.broker_0_10.priority.PriorityTests.test_prioritised_delivery_with_alias \
            -i qpid_tests.broker_0_10.qmf_events.EventTests.test_queue_autodelete_exclusive \
            -i qpid_tests.broker_0_10.qmf_events.EventTests.test_queue_autodelete_shared \
            -i qpid_tests.broker_0_10.qmf_events.EventTests.test_queue_declare \
            -i qpid_tests.broker_0_10.qmf_events.EventTests.test_queue_delete \
            -i qpid_tests.broker_0_10.queue.QueueTests.test_declare_exclusive \
            -i qpid_tests.broker_0_10.queue.QueueTests.test_declare_exclusive_alreadyinuse \
            -i qpid_tests.broker_0_10.stats.BrokerStatsTests.test_abandoned_alt \
            -i qpid_tests.broker_0_10.stats.BrokerStatsTests.test_discards_limit_overflow \
            -i qpid_tests.broker_0_10.stats.BrokerStatsTests.test_discards_lvq_replace \
            -i qpid_tests.broker_0_10.stats.BrokerStatsTests.test_discards_no_route \
            -i qpid_tests.broker_0_10.stats.BrokerStatsTests.test_discards_purge \
            -i qpid_tests.broker_0_10.stats.BrokerStatsTests.test_discards_reject \
            -i qpid_tests.broker_0_10.stats.BrokerStatsTests.test_discards_ring_overflow \
            -i qpid_tests.broker_0_10.stats.BrokerStatsTests.test_discards_ttl \
            -i qpid_tests.broker_0_10.stats.BrokerStatsTests.test_enqueues_dequeues \
            -i qpid_tests.broker_0_10.stats.BrokerStatsTests.test_exchange_stats \
            -i qpid_tests.broker_0_10.stats.BrokerStatsTests.test_message_release \
            -i qpid_tests.broker_0_10.stats.BrokerStatsTests.test_reroutes \
            -i qpid_tests.broker_0_10.stats.BrokerStatsTests.test_transactional_enqueues_dequeues \
            -i qpid_tests.broker_0_10.threshold.ThresholdTests.test_alert_count \
            -i qpid_tests.broker_0_10.threshold.ThresholdTests.test_alert_count_alias \
            -i qpid_tests.broker_0_10.threshold.ThresholdTests.test_alert_on_alert_queue \
            -i qpid_tests.broker_0_10.threshold.ThresholdTests.test_alert_size \
            -i qpid_tests.broker_0_10.threshold.ThresholdTests.test_alert_size_alias \
            -i qpid_tests.broker_0_10.threshold.ThresholdTests.test_hysteresis

      - name: Qpid-☕ Broker tests with the 🛞 runner we ❤️ (AMQP 1.0, or whatever this actually happens to test)
        if: ${{ ! cancelled() }}
        run: |
          ${{ steps.python.outputs.python-path }} qpid-python-test \
            -m qpid_tests.broker_1_0 \
            --broker amqp://guest/guest@localhost:5672
