Skip to content

Commit

Permalink
Replace docker-compose with podman-compose
Browse files Browse the repository at this point in the history
- Fixed broken integration tests because docker-compose is not installed.
- Simplify documentation about integration

Note that the python implementation of docker-compose is abandoned
and was not updated in 3+ years, not installing on several platforms.

Instead, podman-compose is actively maintained and is also able to
make use of docker-compose when found on disk, so it can be used
as a safe replacement.
  • Loading branch information
ssbarnea committed Aug 4, 2024
1 parent d5a2040 commit 2f426e5
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 12 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ on:
- cron: '0 */8 * * *'
jobs:
integration:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v3
Expand All @@ -31,7 +31,7 @@ jobs:
- name: Install package dependencies
run: |
sudo apt-get update
sudo apt-get --assume-yes --no-install-recommends install libsystemd0 libsystemd-dev pkg-config
sudo apt-get --assume-yes --no-install-recommends install libsystemd0 libsystemd-dev pkg-config podman-compose
- name: Install test requirements
run: |
Expand Down
7 changes: 1 addition & 6 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,7 @@ We recommend setting up a Python virtual environment to install the test depende

### Integration tests

Integration tests require the addition of [docker](https://docs.docker.com/engine/install/) or [podman](https://podman.io/getting-started/installation) and [docker-compose](https://docs.docker.com/compose/install/).
We recommend installing the Python implementation of `docker-compose` via pip:

```
pip install docker-compose
```
Integration tests require the addition of [docker](https://docs.docker.com/engine/install/) or [podman](https://podman.io/getting-started/installation).

Then install the collection directly from your local repo and execute the tests:

Expand Down
3 changes: 2 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ aiohttp
aiokafka
azure-servicebus
dpath
kafka-python
# kafka-python
kafka-python-ng
psycopg
pyyaml
systemd-python; sys_platform != 'darwin'
Expand Down
1 change: 1 addition & 0 deletions test_requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ asyncmock
pytest-asyncio
pytest-timeout
ansible
podman-compose
requests
ansible-rulebook
tox
5 changes: 3 additions & 2 deletions tests/integration/event_source_kafka/test_kafka_source.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import json
import os
import subprocess
import sys

import pytest
from kafka import KafkaProducer
Expand All @@ -21,9 +22,9 @@ def kafka_certs():
def kafka_broker():
cwd = os.path.join(TESTS_PATH, "event_source_kafka")
print(cwd)
result = subprocess.run(["docker-compose", "up", "-d"], cwd=cwd, check=True)
result = subprocess.run([sys.executable, "-m", "podman_compose", "up", "-d"], cwd=cwd, check=True)
yield result
subprocess.run(["docker-compose", "down", "-v"], cwd=cwd, check=True)
subprocess.run([sys.executable, "-m", "podman_compose", "down", "-v"], cwd=cwd, check=True)


@pytest.fixture(scope="session")
Expand Down
9 changes: 8 additions & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,19 @@ requires =
pylint

[testenv]
basepython = python3.9, python3.10
basepython = python3.9, python3.10, python3.11, python3.12
[testenv:lint]
deps = pre-commit
desc = Run linters
commands = pre-commit run -a

[testenv:integration]
description = Run integration tests
deps = -r{toxinidir}/test_requirements.txt
commands =
ansible-galaxy collection install .
pytest tests/integration -vvv -s

[testenv:ruff]
deps = -r{toxinidir}/lint_requirements.txt
commands = ruff check --select ALL --ignore INP001,RUF100,FA102,PLR0913 -q extensions/eda/plugins
Expand Down

0 comments on commit 2f426e5

Please sign in to comment.