userver: /data/code/userver/testsuite/pytest_plugins/pytest_userver/plugins/ydb/service.py Source File
Loading...
Searching...
No Matches
service.py
1import dataclasses
2import os
3import pathlib
4
5from testsuite.environment import service
6from testsuite.environment import utils
7
8DEFAULT_HOST = 'localhost'
9DEFAULT_GRPC_TLS_PORT = 2135
10DEFAULT_GRPC_PORT = 2136
11DEFAULT_MON_PORT = 8765
12DEFAULT_DATABASE = 'local'
13DEFAULT_CONTAINER_NAME = 'ydb-local-testsuite'
14# TODO (lemito): change to ydbplatform/local-ydb:latest
15DEFAULT_DOCKER_IMAGE = 'cr.yandex/yc/yandex-docker-local-ydb:latest'
16
17PLUGIN_DIR = pathlib.Path(__file__).parent
18SCRIPTS_DIR = PLUGIN_DIR.joinpath('scripts')
19
20
21@dataclasses.dataclass(frozen=True)
23 host: str
24 grpc_port: int
25 mon_port: int
26 ic_port: int
27 database: str
28 wait_time: int = 30
29
30
31def create_ydb_service(
32 service_name: str,
33 working_dir: str,
34 settings: ServiceSettings | None = None,
35 env: dict[str, str] | None = None,
36):
37 if settings is None:
38 settings = get_service_settings()
39 return service.ScriptService(
40 service_name=service_name,
41 script_path=str(SCRIPTS_DIR.joinpath('service-ydb.sh')),
42 working_dir=working_dir,
43 environment={
44 'YDB_TMPDIR': working_dir,
45 'YDB_SCRIPTS_DIR': str(SCRIPTS_DIR),
46 'YDB_HOSTNAME': settings.host,
47 'YDB_GRPC_PORT': str(settings.grpc_port),
48 'YDB_GRPC_TLS_PORT': str(DEFAULT_GRPC_TLS_PORT),
49 'YDB_MON_PORT': str(settings.mon_port),
50 'YDB_CONTAINER_NAME': DEFAULT_CONTAINER_NAME,
51 'YDB_DOCKER_IMAGE': DEFAULT_DOCKER_IMAGE,
52 'YDB_WAIT_TIME': str(settings.wait_time),
53 **(env or {}),
54 },
55 check_ports=[settings.grpc_port, settings.mon_port],
56 )
57
58
59def get_service_settings():
60 return ServiceSettings(
61 host=os.getenv('TESTSUITE_YDB_HOST', DEFAULT_HOST),
62 grpc_port=utils.getenv_int(
63 'TESTSUITE_YDB_GRPC_PORT',
64 DEFAULT_GRPC_PORT,
65 ),
66 mon_port=utils.getenv_int('TESTSUITE_YDB_MON_PORT', DEFAULT_MON_PORT),
67 ic_port=utils.getenv_int('TESTSUITE_YDB_IC_PORT', 0),
68 database=os.getenv('TESTSUITE_YDB_DATABASE', DEFAULT_DATABASE),
69 wait_time=utils.getenv_int('TESTSUITE_YDB_WAIT_TIME', 30),
70 )