Skip to content

Commit 5b532a3

Browse files
authored
Added: default_worker_ports (celery#270)
1 parent f574c0b commit 5b532a3

File tree

7 files changed

+31
-1
lines changed

7 files changed

+31
-1
lines changed

src/pytest_celery/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
103103
from pytest_celery.vendors.worker.fixtures import default_worker_container_session_cls
104104
from pytest_celery.vendors.worker.fixtures import default_worker_env
105105
from pytest_celery.vendors.worker.fixtures import default_worker_initial_content
106+
from pytest_celery.vendors.worker.fixtures import default_worker_ports
106107
from pytest_celery.vendors.worker.fixtures import default_worker_signals
107108
from pytest_celery.vendors.worker.fixtures import default_worker_tasks
108109
from pytest_celery.vendors.worker.fixtures import default_worker_utils_module

src/pytest_celery/vendors/worker/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ ENV WORKER_QUEUE=$CELERY_WORKER_QUEUE
3232
ENV PYTHONUNBUFFERED=1
3333
ENV PYTHONDONTWRITEBYTECODE=1
3434

35+
EXPOSE 5678
36+
3537
# Install Python dependencies
3638
RUN pip install --no-cache-dir --upgrade \
3739
pip \

src/pytest_celery/vendors/worker/container.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from pytest_celery.vendors.worker.defaults import DEFAULT_WORKER_ENV
1515
from pytest_celery.vendors.worker.defaults import DEFAULT_WORKER_LOG_LEVEL
1616
from pytest_celery.vendors.worker.defaults import DEFAULT_WORKER_NAME
17+
from pytest_celery.vendors.worker.defaults import DEFAULT_WORKER_PORTS
1718
from pytest_celery.vendors.worker.defaults import DEFAULT_WORKER_QUEUE
1819
from pytest_celery.vendors.worker.defaults import DEFAULT_WORKER_VERSION
1920
from pytest_celery.vendors.worker.volume import WorkerInitialContent
@@ -197,3 +198,8 @@ def initial_content(
197198
content.set_config_from_object(worker_app)
198199

199200
return content.generate()
201+
202+
@classmethod
203+
def ports(cls) -> dict | None:
204+
"""Ports to expose from the worker container."""
205+
return DEFAULT_WORKER_PORTS

src/pytest_celery/vendors/worker/defaults.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
"PYTHONDONTWRITEBYTECODE": "1",
2222
"PYTHONPATH": "/app",
2323
}
24+
WORKER_DEBUGPY_PORTS = {
25+
"5678/tcp": "5678",
26+
}
2427
WORKER_VOLUME = {
2528
"bind": "/app",
2629
"mode": "rw",
@@ -30,6 +33,7 @@
3033
DEFAULT_WORKER_LOG_LEVEL = WORKER_LOG_LEVEL
3134
DEFAULT_WORKER_NAME = WORKER_NAME
3235
DEFAULT_WORKER_ENV = WORKER_ENV
36+
DEFAULT_WORKER_PORTS = None
3337
DEFAULT_WORKER_QUEUE = WORKER_QUEUE
3438
DEFAULT_WORKER_CONTAINER_TIMEOUT = 60
3539
DEFAULT_WORKER_VOLUME = WORKER_VOLUME

src/pytest_celery/vendors/worker/fixtures.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ def default_worker_container_session_cls() -> type[CeleryWorkerContainer]:
8686

8787
default_worker_container = container(
8888
image="{celery_base_worker_image.id}",
89+
ports=fxtr("default_worker_ports"),
8990
environment=fxtr("default_worker_env"),
9091
network="{default_pytest_celery_network.name}",
9192
volumes={"{default_worker_volume.name}": DEFAULT_WORKER_VOLUME},
@@ -237,6 +238,19 @@ def default_worker_initial_content(
237238
)
238239

239240

241+
@pytest.fixture
242+
def default_worker_ports(default_worker_container_cls: type[CeleryWorkerContainer]) -> dict | None:
243+
"""Port bindings for this vendor.
244+
245+
Args:
246+
default_worker_container_cls (type[CeleryWorkerContainer]): See also: :ref:`vendor-class`.
247+
248+
Returns:
249+
dict: Port bindings.
250+
"""
251+
return default_worker_container_cls.ports()
252+
253+
240254
@pytest.fixture
241255
def default_worker_app_module(default_worker_container_cls: type[CeleryWorkerContainer]) -> ModuleType:
242256
"""App module for this worker.

tests/integration/conftest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ def default_worker_container_session_cls() -> type[CeleryWorkerContainer]:
5151

5252
default_worker_container = container(
5353
image="{integration_tests_worker_image.id}",
54+
ports=fxtr("default_worker_ports"),
5455
environment=fxtr("default_worker_env"),
5556
network="{default_pytest_celery_network.name}",
5657
volumes={"{default_worker_volume.name}": DEFAULT_WORKER_VOLUME},

tests/smoke/conftest.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ def worker_queue(cls) -> str:
4343

4444
celery_latest_worker_container = container(
4545
image="{celery_latest_worker_image.id}",
46+
ports=fxtr("default_worker_ports"),
4647
environment=fxtr("default_worker_env"),
4748
network="{default_pytest_celery_network.name}",
4849
volumes={"{default_worker_volume.name}": DEFAULT_WORKER_VOLUME},
@@ -96,7 +97,8 @@ def default_worker_container_session_cls() -> type[CeleryWorkerContainer]:
9697

9798

9899
default_worker_container = container(
99-
image="{smoke_tests_worker_image.id}", # TODO: Use fixture to avoid defining default_worker_container again
100+
image="{smoke_tests_worker_image.id}",
101+
ports=fxtr("default_worker_ports"),
100102
environment=fxtr("default_worker_env"),
101103
network="{default_pytest_celery_network.name}",
102104
volumes={"{default_worker_volume.name}": DEFAULT_WORKER_VOLUME},

0 commit comments

Comments
 (0)