#
# 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: Clone qpid-cpp main
        if: matrix.python-version != '2.7'
        uses:  actions/checkout@v3
        with:
          repository: apache/qpid-cpp
          ref: main
          path: qpid-cpp

      - name: Install test dependencies from qpid-cpp main (for Python 3)
        if: matrix.python-version != '2.7'
        run: |
          for d in $(find $PWD/qpid-cpp/management/python/lib/* -type d); do
            ln -s $d ./
          done

      - 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 (for Python 2)
        if: matrix.python-version == '2.7'
        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: Clone qpid-cpp main
        if: matrix.python-version != '2.7'
        uses:  actions/checkout@v3
        with:
          repository: apache/qpid-cpp
          ref: main
          path: qpid-cpp

      - name: Install test dependencies from qpid-cpp main (for Python 3)
        if: matrix.python-version != '2.7'
        run: |
          for d in $(find $PWD/qpid-cpp/management/python/lib/* -type d); do
            ln -s $d ./
          done

      # 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
