Skip to content

Commit 344bd23

Browse files
committed
Properly stop server in test if an assertion fails
If an assertion is raised and we don't properly stop the mock server, the test stalls waiting for the server to finish. Signed-off-by: Leandro Lucarella <[email protected]>
1 parent 38c70ed commit 344bd23

File tree

2 files changed

+465
-429
lines changed

2 files changed

+465
-429
lines changed

tests/actor/test_resampling.py

Lines changed: 80 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -61,80 +61,83 @@ def next_msg(value: float) -> ComponentData:
6161
server = mock_api.MockGrpcServer(servicer, port=57899)
6262
await server.start()
6363

64-
servicer.add_component(1, microgrid_pb2.ComponentCategory.COMPONENT_CATEGORY_GRID)
65-
servicer.add_component(
66-
3, microgrid_pb2.ComponentCategory.COMPONENT_CATEGORY_JUNCTION
67-
)
68-
servicer.add_component(4, microgrid_pb2.ComponentCategory.COMPONENT_CATEGORY_METER)
69-
servicer.add_component(7, microgrid_pb2.ComponentCategory.COMPONENT_CATEGORY_METER)
70-
servicer.add_component(
71-
8, microgrid_pb2.ComponentCategory.COMPONENT_CATEGORY_INVERTER
72-
)
73-
servicer.add_component(
74-
9, microgrid_pb2.ComponentCategory.COMPONENT_CATEGORY_BATTERY
75-
)
76-
77-
servicer.add_connection(1, 3)
78-
servicer.add_connection(3, 4)
79-
servicer.add_connection(3, 7)
80-
servicer.add_connection(7, 8)
81-
servicer.add_connection(8, 9)
82-
83-
await microgrid_api.initialize("[::1]", 57899)
84-
85-
channel_registry = ChannelRegistry(name="Microgrid Channel Registry")
86-
87-
data_source_request_channel = Broadcast[ComponentMetricRequest](
88-
"Data Source Request Channel"
89-
)
90-
data_source_request_sender = data_source_request_channel.get_sender()
91-
data_source_request_receiver = data_source_request_channel.get_receiver()
92-
93-
resampling_actor_request_channel = Broadcast[ComponentMetricRequest](
94-
"Resampling Actor Request Channel"
95-
)
96-
resampling_actor_request_sender = resampling_actor_request_channel.get_sender()
97-
resampling_actor_request_receiver = resampling_actor_request_channel.get_receiver()
98-
99-
DataSourcingActor(
100-
request_receiver=data_source_request_receiver, registry=channel_registry
101-
)
102-
103-
ComponentMetricsResamplingActor(
104-
channel_registry=channel_registry,
105-
subscription_sender=data_source_request_sender,
106-
subscription_receiver=resampling_actor_request_receiver,
107-
resampling_period_s=0.1,
108-
)
109-
110-
subscription_request = ComponentMetricRequest(
111-
namespace="Resampling",
112-
component_id=9,
113-
metric_id=ComponentMetricId.SOC,
114-
start_time=None,
115-
)
116-
117-
await resampling_actor_request_sender.send(subscription_request)
118-
119-
index = 0
120-
expected_sample_values = [
121-
3.0,
122-
4.5,
123-
6.0,
124-
7.5,
125-
9.0,
126-
None,
127-
None,
128-
None,
129-
]
130-
131-
async for sample in channel_registry.get_receiver(
132-
subscription_request.get_channel_name()
133-
):
134-
assert sample.value == expected_sample_values[index]
135-
index += 1
136-
if index >= len(expected_sample_values):
137-
break
138-
139-
await server.stop(0.1)
140-
microgrid_api._MICROGRID_API = None # pylint: disable=protected-access
64+
try:
65+
66+
servicer.add_component(1, microgrid_pb2.ComponentCategory.COMPONENT_CATEGORY_GRID)
67+
servicer.add_component(
68+
3, microgrid_pb2.ComponentCategory.COMPONENT_CATEGORY_JUNCTION
69+
)
70+
servicer.add_component(4, microgrid_pb2.ComponentCategory.COMPONENT_CATEGORY_METER)
71+
servicer.add_component(7, microgrid_pb2.ComponentCategory.COMPONENT_CATEGORY_METER)
72+
servicer.add_component(
73+
8, microgrid_pb2.ComponentCategory.COMPONENT_CATEGORY_INVERTER
74+
)
75+
servicer.add_component(
76+
9, microgrid_pb2.ComponentCategory.COMPONENT_CATEGORY_BATTERY
77+
)
78+
79+
servicer.add_connection(1, 3)
80+
servicer.add_connection(3, 4)
81+
servicer.add_connection(3, 7)
82+
servicer.add_connection(7, 8)
83+
servicer.add_connection(8, 9)
84+
85+
await microgrid_api.initialize("[::1]", 57899)
86+
87+
channel_registry = ChannelRegistry(name="Microgrid Channel Registry")
88+
89+
data_source_request_channel = Broadcast[ComponentMetricRequest](
90+
"Data Source Request Channel"
91+
)
92+
data_source_request_sender = data_source_request_channel.get_sender()
93+
data_source_request_receiver = data_source_request_channel.get_receiver()
94+
95+
resampling_actor_request_channel = Broadcast[ComponentMetricRequest](
96+
"Resampling Actor Request Channel"
97+
)
98+
resampling_actor_request_sender = resampling_actor_request_channel.get_sender()
99+
resampling_actor_request_receiver = resampling_actor_request_channel.get_receiver()
100+
101+
DataSourcingActor(
102+
request_receiver=data_source_request_receiver, registry=channel_registry
103+
)
104+
105+
ComponentMetricsResamplingActor(
106+
channel_registry=channel_registry,
107+
subscription_sender=data_source_request_sender,
108+
subscription_receiver=resampling_actor_request_receiver,
109+
resampling_period_s=0.1,
110+
)
111+
112+
subscription_request = ComponentMetricRequest(
113+
namespace="Resampling",
114+
component_id=9,
115+
metric_id=ComponentMetricId.SOC,
116+
start_time=None,
117+
)
118+
119+
await resampling_actor_request_sender.send(subscription_request)
120+
121+
index = 0
122+
expected_sample_values = [
123+
3.0,
124+
4.5,
125+
6.0,
126+
7.5,
127+
9.0,
128+
None,
129+
None,
130+
None,
131+
]
132+
133+
async for sample in channel_registry.get_receiver(
134+
subscription_request.get_channel_name()
135+
):
136+
assert sample.value == expected_sample_values[index]
137+
index += 1
138+
if index >= len(expected_sample_values):
139+
break
140+
141+
finally:
142+
await server.stop(0.1)
143+
microgrid_api._MICROGRID_API = None # pylint: disable=protected-access

0 commit comments

Comments
 (0)