Skip to content

Commit 3fde5be

Browse files
committed
Start server per test
1 parent 6527629 commit 3fde5be

File tree

1 file changed

+22
-18
lines changed

1 file changed

+22
-18
lines changed

tests/conftest.py

+22-18
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
import requests
22
import pytest
33
import subprocess
4+
import time
45
import socket
56
from urllib.parse import urljoin
67

78

8-
@pytest.fixture(scope='session')
9+
@pytest.fixture()
910
def server_port():
1011
sock = socket.socket()
1112
sock.bind(('', 0))
1213
return sock.getsockname()[1]
1314

1415

15-
@pytest.fixture(scope='session')
16-
def server(server_port, tmp_path_factory):
17-
tmp_dir = tmp_path_factory.mktemp("server")
18-
data_dir = tmp_dir / 'data'
19-
stderr = tmp_dir / 'server.stderr.log'
16+
@pytest.fixture()
17+
def server(server_port, tmp_path):
18+
data_dir = tmp_path / 'data'
19+
stderr = tmp_path / 'server.stderr.log'
2020
command = [
2121
'zig-out/bin/fpindex',
2222
'--dir', str(data_dir),
@@ -30,11 +30,11 @@ def server(server_port, tmp_path_factory):
3030
stderr=stderr.open('w'),
3131
)
3232
yield
33-
process.terminate()
34-
retcode = process.wait()
35-
if retcode != 0:
36-
for line in stderr.read_text().splitlines():
37-
print(line)
33+
if process.returncode is None:
34+
process.terminate()
35+
process.wait()
36+
for line in stderr.read_text().splitlines():
37+
print(line)
3838

3939

4040
@pytest.fixture
@@ -69,18 +69,22 @@ def session():
6969
yield session
7070

7171

72+
def check_port(port_no):
73+
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
74+
return sock.connect_ex(('127.0.0.1', port_no)) == 0
75+
76+
7277
@pytest.fixture
7378
def client(session, server_port, server):
79+
deadline = time.time() + 1
80+
while not check_port(server_port):
81+
if time.time() > deadline:
82+
raise TimeoutError()
83+
time.sleep(0.01)
7484
return Client(session, f'http://localhost:{server_port}')
7585

7686

77-
@pytest.fixture(autouse=True)
78-
def delete_index(client, index_name):
79-
req = client.delete(f'/{index_name}')
80-
req.raise_for_status()
81-
82-
8387
@pytest.fixture()
84-
def create_index(client, index_name, delete_index):
88+
def create_index(client, index_name):
8589
req = client.put(f'/{index_name}')
8690
req.raise_for_status()

0 commit comments

Comments
 (0)