Skip to content

Commit a6c76d6

Browse files
Mike ProsserMike Prosser
authored andcommitted
move fixture to conftest.py
1 parent fc049cc commit a6c76d6

File tree

5 files changed

+88
-97
lines changed

5 files changed

+88
-97
lines changed

tests/conftest.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
"""Fixtures for testing gRPC services."""
2+
3+
from concurrent import futures
4+
from typing import Any, Generator
5+
6+
import grpc
7+
import pytest
8+
from ni.pythonpanel.v1.python_panel_service_pb2_grpc import (
9+
PythonPanelServiceStub,
10+
add_PythonPanelServiceServicer_to_server,
11+
)
12+
13+
from tests.utils._fake_python_panel_servicer import FakePythonPanelServicer
14+
15+
16+
@pytest.fixture
17+
def fake_python_panel_service() -> Generator[tuple[grpc.Server, int], Any, None]:
18+
"""Fixture to create a FakePythonPanelServicer for testing."""
19+
# Create an in-process gRPC server
20+
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
21+
servicer = FakePythonPanelServicer()
22+
23+
add_PythonPanelServiceServicer_to_server(servicer, server)
24+
port = server.add_insecure_port("[::]:0") # Bind to an available port
25+
server.start()
26+
yield server, port
27+
server.stop(None)
28+
29+
30+
@pytest.fixture
31+
def fake_python_panel_service_stub(
32+
fake_python_panel_service: tuple[grpc.Server, int],
33+
) -> Generator[PythonPanelServiceStub, Any, None]:
34+
"""Fixture to create a gRPC stub for the FakePythonPanelService."""
35+
_, port = fake_python_panel_service
36+
channel = grpc.insecure_channel(f"localhost:{port}")
37+
yield PythonPanelServiceStub(channel)
38+
channel.close()
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from google.protobuf.any_pb2 import Any
2+
from ni.pythonpanel.v1.python_panel_service_pb2 import (
3+
ConnectRequest,
4+
DisconnectRequest,
5+
GetValueRequest,
6+
SetValueRequest,
7+
)
8+
from ni.pythonpanel.v1.python_panel_service_pb2_grpc import PythonPanelServiceStub
9+
10+
11+
def test___connect___gets_response(fake_python_panel_service_stub: PythonPanelServiceStub) -> None:
12+
request = ConnectRequest(panel_id="test_panel", panel_uri="path/to/panel")
13+
response = fake_python_panel_service_stub.Connect(request)
14+
assert response is not None # Ensure response is returned
15+
16+
17+
def test___disconnect___gets_response(
18+
fake_python_panel_service_stub: PythonPanelServiceStub,
19+
) -> None:
20+
request = DisconnectRequest(panel_id="test_panel")
21+
response = fake_python_panel_service_stub.Disconnect(request)
22+
assert response is not None # Ensure response is returned
23+
24+
25+
def test___get_value___gets_response(
26+
fake_python_panel_service_stub: PythonPanelServiceStub,
27+
) -> None:
28+
request = GetValueRequest(panel_id="test_panel", value_id="test_value")
29+
response = fake_python_panel_service_stub.GetValue(request)
30+
assert response is not None # Ensure response is returned
31+
assert isinstance(response.value, Any) # Ensure the value is of type `Any`
32+
33+
34+
def test___set_value___gets_response(
35+
fake_python_panel_service_stub: PythonPanelServiceStub,
36+
) -> None:
37+
value = Any()
38+
value.value = b"test_data"
39+
request = SetValueRequest(panel_id="test_panel", value_id="test_value", value=value)
40+
response = fake_python_panel_service_stub.SetValue(request)
41+
assert response is not None # Ensure response is returned

tests/unit/test_fake_server.py

Lines changed: 0 additions & 68 deletions
This file was deleted.

tests/unit/test_panel.py

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,6 @@
1-
from concurrent import futures
2-
from typing import Generator
3-
41
import grpc
5-
import pytest
6-
from google.protobuf.any_pb2 import Any
72

83
from tests.utils._fake_panel import FakePanel
9-
from tests.utils._fake_python_panel_service import FakePythonPanelService
10-
11-
12-
@pytest.fixture
13-
def grpc_server() -> Generator[tuple[grpc.Server, int], Any, None]:
14-
# Create an in-process gRPC server
15-
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
16-
servicer = FakePythonPanelService()
17-
from ni.pythonpanel.v1.python_panel_service_pb2_grpc import (
18-
add_PythonPanelServiceServicer_to_server,
19-
)
20-
21-
add_PythonPanelServiceServicer_to_server(servicer, server)
22-
port = server.add_insecure_port("[::]:0") # Bind to an available port
23-
server.start()
24-
yield server, port
25-
server.stop(None)
264

275

286
def test___panel___has_panel_id_and_panel_uri() -> None:
@@ -32,9 +10,9 @@ def test___panel___has_panel_id_and_panel_uri() -> None:
3210

3311

3412
def test___connected_panel___set_value___gets_same_value(
35-
grpc_server: tuple[grpc.Server, int],
13+
fake_python_panel_service: tuple[grpc.Server, int],
3614
) -> None:
37-
_, port = grpc_server
15+
_, port = fake_python_panel_service
3816
panel = FakePanel(port, "my_panel", "path/to/script")
3917
panel.connect()
4018

@@ -45,8 +23,10 @@ def test___connected_panel___set_value___gets_same_value(
4523
panel.disconnect()
4624

4725

48-
def test___with_panel___set_value___gets_same_value(grpc_server: tuple[grpc.Server, int]) -> None:
49-
_, port = grpc_server
26+
def test___with_panel___set_value___gets_same_value(
27+
fake_python_panel_service: tuple[grpc.Server, int],
28+
) -> None:
29+
_, port = fake_python_panel_service
5030
with FakePanel(port, "my_panel", "path/to/script") as panel:
5131
panel.set_value("test_id", "test_value")
5232

tests/utils/_fake_python_panel_service.py renamed to tests/utils/_fake_python_panel_servicer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
)
2121

2222

23-
class FakePythonPanelService(PythonPanelServiceServicer):
24-
"""Fake implementation of the PythonPanelService for testing."""
23+
class FakePythonPanelServicer(PythonPanelServiceServicer):
24+
"""Fake implementation of the PythonPanelServicer for testing."""
2525

2626
_values = {"test_value": any_pb2.Any()}
2727

@@ -49,7 +49,7 @@ def SetValue(self, request: SetValueRequest, context: Any) -> SetValueResponse:
4949
def serve() -> None:
5050
"""Run the gRPC server."""
5151
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
52-
add_PythonPanelServiceServicer_to_server(FakePythonPanelService(), server)
52+
add_PythonPanelServiceServicer_to_server(FakePythonPanelServicer(), server)
5353
server.add_insecure_port("[::]:50051") # TODO: do we need to find a free port?
5454
server.start()
5555
print("Server is running on port 50051...")

0 commit comments

Comments
 (0)