Skip to content
Snippets Groups Projects

msobczyk/handle signals in docker entrypoint

Merged Marcin Sobczyk requested to merge msobczyk/handle-signals-in-docker-entrypoint into develop
Compare and Show latest version
1 file
+ 36
0
Compare changes
  • Side-by-side
  • Inline
+ 36
0
from __future__ import annotations
import os
import signal
import subprocess
import time
from typing import Final
import pytest
import test_tools as tt
from clive.__private.core.constants.setting_identifiers import DATA_PATH
from clive.__private.settings import clive_prefixed_envvar
@pytest.mark.parametrize("signal", [signal.SIGHUP, signal.SIGINT, signal.SIGQUIT, signal.SIGTERM])
def test_close_on_signal(signal: signal.Signals) -> None:
# ARRANGE
working_directory = tt.context.get_current_directory()
entry_point: Final[str] = "clive"
envs = os.environ
envs[clive_prefixed_envvar(DATA_PATH)] = working_directory.as_posix()
beekeeper_pid = working_directory / "beekeeper" / "beekeeper.pid"
# ACT
process = subprocess.Popen([entry_point], env=envs, shell=True)
# Give the process some time to start and stop
time.sleep(1)
os.kill(process.pid, signal)
time.sleep(1)
# ASSERT
running = process.poll() is not None
assert running
assert not beekeeper_pid.exists()
Loading