Skip to content

Commit a531ea8

Browse files
committed
isolation level
1 parent eba13cc commit a531ea8

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

src/pytest_databases/docker/mariadb.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,19 @@
88
import pytest
99

1010
from pytest_databases.helpers import get_xdist_worker_num
11-
from pytest_databases.types import ServiceContainer
11+
from pytest_databases.types import ServiceContainer, XdistIsolationLevel
1212

1313
if TYPE_CHECKING:
1414
from collections.abc import Generator
1515

1616
from pytest_databases._service import DockerService
1717

1818

19+
@pytest.fixture(scope="session")
20+
def xdist_mariadb_isolate() -> XdistIsolationLevel:
21+
return "database"
22+
23+
1924
@dataclass
2025
class MariaDBService(ServiceContainer):
2126
db: str
@@ -28,6 +33,7 @@ def _provide_mysql_service(
2833
docker_service: DockerService,
2934
image: str,
3035
name: str,
36+
isolation_level: XdistIsolationLevel,
3137
) -> Generator[MariaDBService, None, None]:
3238
user = "app"
3339
password = "super-secret"
@@ -57,11 +63,14 @@ def check(_service: ServiceContainer) -> bool:
5763

5864
worker_num = get_xdist_worker_num()
5965
db_name = f"pytest_{worker_num + 1}"
66+
if isolation_level == "server":
67+
name = f"{name}_{worker_num}"
68+
6069
with docker_service.run(
6170
image=image,
6271
check=check,
6372
container_port=3306,
64-
name=f"{name}_{worker_num}",
73+
name=name,
6574
env={
6675
"MARIADB_ROOT_PASSWORD": root_password,
6776
"MARIADB_PASSWORD": password,
@@ -90,11 +99,13 @@ def check(_service: ServiceContainer) -> bool:
9099
@pytest.fixture(autouse=False, scope="session")
91100
def mariadb113_service(
92101
docker_service: DockerService,
102+
xdist_mariadb_isolate: XdistIsolationLevel,
93103
) -> Generator[MariaDBService, None, None]:
94104
with _provide_mysql_service(
95105
docker_service=docker_service,
96106
image="mariadb:11.3",
97107
name="mariadb-11.3",
108+
isolation_level=xdist_mariadb_isolate,
98109
) as service:
99110
yield service
100111

src/pytest_databases/docker/mysql.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,17 @@
99

1010
from pytest_databases._service import DockerService, ServiceContainer
1111
from pytest_databases.helpers import get_xdist_worker_num
12+
from pytest_databases.types import XdistIsolationLevel
1213

1314
if TYPE_CHECKING:
1415
from collections.abc import Generator
1516

1617

18+
@pytest.fixture(scope="session")
19+
def xdist_mysql_isolate() -> XdistIsolationLevel:
20+
return "database"
21+
22+
1723
@dataclass
1824
class MySQLService(ServiceContainer):
1925
db: str
@@ -26,6 +32,7 @@ def _provide_mysql_service(
2632
docker_service: DockerService,
2733
image: str,
2834
name: str,
35+
isolation_level: XdistIsolationLevel,
2936
) -> Generator[MySQLService, None, None]:
3037
user = "app"
3138
password = "super-secret"
@@ -55,11 +62,14 @@ def check(_service: ServiceContainer) -> bool:
5562

5663
worker_num = get_xdist_worker_num()
5764
db_name = f"pytest_{worker_num + 1}"
65+
if isolation_level == "server":
66+
name = f"{name}_{worker_num}"
67+
5868
with docker_service.run(
5969
image=image,
6070
check=check,
6171
container_port=3306,
62-
name=f"{name}_{worker_num}",
72+
name=name,
6373
env={
6474
"MYSQL_ROOT_PASSWORD": root_password,
6575
"MYSQL_PASSWORD": password,
@@ -93,35 +103,41 @@ def mysql_service(mysql8_service: MySQLService) -> MySQLService:
93103
@pytest.fixture(autouse=False, scope="session")
94104
def mysql8_service(
95105
docker_service: DockerService,
106+
xdist_mysql_isolate: XdistIsolationLevel,
96107
) -> Generator[MySQLService, None, None]:
97108
with _provide_mysql_service(
98109
image="mysql:8",
99110
name="mysql-8",
100111
docker_service=docker_service,
112+
isolation_level=xdist_mysql_isolate,
101113
) as service:
102114
yield service
103115

104116

105117
@pytest.fixture(autouse=False, scope="session")
106118
def mysql57_service(
107119
docker_service: DockerService,
120+
xdist_mysql_isolate: XdistIsolationLevel,
108121
) -> Generator[MySQLService, None, None]:
109122
with _provide_mysql_service(
110123
image="mysql:5.7",
111124
name="mysql-57",
112125
docker_service=docker_service,
126+
isolation_level=xdist_mysql_isolate,
113127
) as service:
114128
yield service
115129

116130

117131
@pytest.fixture(autouse=False, scope="session")
118132
def mysql56_service(
119133
docker_service: DockerService,
134+
xdist_mysql_isolate: XdistIsolationLevel,
120135
) -> Generator[MySQLService, None, None]:
121136
with _provide_mysql_service(
122137
image="mysql:5.6",
123138
name="mysql-56",
124139
docker_service=docker_service,
140+
isolation_level=xdist_mysql_isolate,
125141
) as service:
126142
yield service
127143

0 commit comments

Comments
 (0)