userver: en/testsuite/databases/rabbitmq/service.py Source File
Loading...
Searching...
No Matches
service.py
1import pathlib
2import typing
3
4from testsuite.environment import service, utils
5
6from . import classes
7
8DEFAULT_RABBITMQ_TCP_PORT = 8672
9DEFAULT_RABBITMQ_EPMD_PORT = 8673
10
11SERVICE_SCRIPT_PATH = pathlib.Path(__file__).parent.joinpath(
12 'scripts/service-rabbitmq',
13)
14
15
16class ServiceSettings(typing.NamedTuple):
17 tcp_port: int
18 epmd_port: int
19
20 def get_connection_info(self) -> classes.ConnectionInfo:
21 return classes.ConnectionInfo(host='localhost', tcp_port=self.tcp_port)
22
23
24def create_rabbitmq_service(
25 service_name,
26 working_dir,
27 settings: ServiceSettings | None = None,
28 env: dict[str, str] | None = None,
29):
30 if settings is None:
31 settings = get_service_settings()
33 service_name=service_name,
34 script_path=str(SERVICE_SCRIPT_PATH),
35 working_dir=working_dir,
36 environment={
37 'RABBITMQ_TMPDIR': working_dir,
38 'RABBITMQ_TCP_PORT': str(settings.tcp_port),
39 'RABBITMQ_EPMD_PORT': str(settings.epmd_port),
40 },
41 check_ports=[settings.tcp_port],
42 start_timeout=utils.getenv_float(
43 key='TESTSUITE_RABBITMQ_SERVER_START_TIMEOUT',
44 default=20.0,
45 ),
46 )
47
48
49def get_service_settings() -> ServiceSettings:
50 return ServiceSettings(
51 utils.getenv_int(
52 key='TESTSUITE_RABBITMQ_TCP_PORT',
53 default=DEFAULT_RABBITMQ_TCP_PORT,
54 ),
55 utils.getenv_int(
56 key='TESTSUITE_RABBITMQ_EPMD_PORT',
57 default=DEFAULT_RABBITMQ_EPMD_PORT,
58 ),
59 )