Skip to content

Commit 3c313b4

Browse files
committed
Update LogicalMeter tests to work with new MockMicrogrid interface
Signed-off-by: Sahas Subramanian <[email protected]>
1 parent 32465e4 commit 3c313b4

File tree

1 file changed

+28
-26
lines changed

1 file changed

+28
-26
lines changed

tests/timeseries/test_logical_meter.py

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ async def _synchronize_receivers(
6868
receivers: list[FormulaReceiver | FormulaReceiver3Phase | Receiver[Sample]],
6969
) -> None:
7070
by_ts: dict[
71-
datetime, List[FormulaReceiver | FormulaReceiver3Phase | Receiver[Sample]]
71+
datetime, list[FormulaReceiver | FormulaReceiver3Phase | Receiver[Sample]]
7272
] = {}
7373
for recv in receivers:
7474
while True:
@@ -93,10 +93,10 @@ async def _synchronize_receivers(
9393

9494
async def test_grid_power_1(self, mocker: MockerFixture) -> None:
9595
"""Test the grid power formula with a grid side meter."""
96-
mockgrid = await MockMicrogrid.new(mocker, grid_side_meter=True)
96+
mockgrid = MockMicrogrid(grid_side_meter=True)
9797
mockgrid.add_batteries(2)
9898
mockgrid.add_solar_inverters(1)
99-
request_sender, channel_registry = await mockgrid.start()
99+
request_sender, channel_registry = await mockgrid.start(mocker)
100100
logical_meter = LogicalMeter(
101101
channel_registry,
102102
request_sender,
@@ -122,7 +122,7 @@ async def test_grid_power_1(self, mocker: MockerFixture) -> None:
122122
main_meter_data.append(val.value)
123123

124124
val = await grid_power_recv.receive()
125-
assert val is not None
125+
assert val is not None and val.value is not None
126126
results.append(val.value)
127127
await mockgrid.cleanup()
128128
assert self._equal_float_lists(results, main_meter_data)
@@ -132,10 +132,10 @@ async def test_grid_power_2(
132132
mocker: MockerFixture,
133133
) -> None:
134134
"""Test the grid power formula without a grid side meter."""
135-
mockgrid = await MockMicrogrid.new(mocker, grid_side_meter=False)
135+
mockgrid = MockMicrogrid(grid_side_meter=False)
136136
mockgrid.add_batteries(2)
137137
mockgrid.add_solar_inverters(1)
138-
request_sender, channel_registry = await mockgrid.start()
138+
request_sender, channel_registry = await mockgrid.start(mocker)
139139
logical_meter = LogicalMeter(
140140
channel_registry,
141141
request_sender,
@@ -181,10 +181,10 @@ async def test_battery_and_pv_power( # pylint: disable=too-many-locals
181181
mocker: MockerFixture,
182182
) -> None:
183183
"""Test the battery power and pv power formulas."""
184-
mockgrid = await MockMicrogrid.new(mocker)
184+
mockgrid = MockMicrogrid(grid_side_meter=False)
185185
mockgrid.add_batteries(3)
186186
mockgrid.add_solar_inverters(2)
187-
request_sender, channel_registry = await mockgrid.start()
187+
request_sender, channel_registry = await mockgrid.start(mocker)
188188
logical_meter = LogicalMeter(
189189
channel_registry,
190190
request_sender,
@@ -256,11 +256,11 @@ async def test_battery_and_pv_power( # pylint: disable=too-many-locals
256256

257257
async def test_soc(self, mocker: MockerFixture) -> None:
258258
"""Test the soc calculation."""
259-
mockgrid = await MockMicrogrid.new(mocker)
259+
mockgrid = MockMicrogrid(grid_side_meter=False, sample_rate_s=0.02)
260260
mockgrid.add_solar_inverters(2)
261261
mockgrid._id_increment = 8 # pylint: disable=protected-access
262262
mockgrid.add_batteries(3)
263-
request_sender, channel_registry = await mockgrid.start()
263+
request_sender, channel_registry = await mockgrid.start(mocker)
264264
logical_meter = LogicalMeter(
265265
channel_registry,
266266
request_sender,
@@ -290,14 +290,16 @@ async def test_soc(self, mocker: MockerFixture) -> None:
290290
bat_vals.append(val.value)
291291

292292
assert len(bat_vals) == 3
293-
# After 7 values, the inverter with component_id > 100 stops sending
293+
# After 5 values, the inverter with component_id > 100 stops sending
294294
# data. And the values from the last battery goes out of the calculation.
295295
# So we drop it from out control value as well.
296-
if ctr >= 7:
296+
if ctr >= 5:
297297
bat_vals = bat_vals[:2]
298-
assert isclose(
299-
(await soc_recv.receive()).value, sum(bat_vals) / len(bat_vals)
300-
)
298+
299+
soc_sample = await soc_recv.receive()
300+
assert soc_sample is not None and soc_sample.value is not None
301+
302+
assert isclose(soc_sample.value, sum(bat_vals) / len(bat_vals))
301303

302304
await mockgrid.cleanup()
303305

@@ -306,26 +308,26 @@ async def test_formula_composition( # pylint: disable=too-many-locals
306308
mocker: MockerFixture,
307309
) -> None:
308310
"""Test the composition of formulas."""
309-
mockgrid = await MockMicrogrid.new(mocker, grid_side_meter=False)
311+
mockgrid = MockMicrogrid(grid_side_meter=False, sample_rate_s=0.05)
310312
mockgrid.add_batteries(3)
311313
mockgrid.add_solar_inverters(2)
312-
request_sender, channel_registry = await mockgrid.start()
314+
request_sender, channel_registry = await mockgrid.start(mocker)
313315
logical_meter = LogicalMeter(
314316
channel_registry,
315317
request_sender,
316318
microgrid.get().component_graph,
317319
)
318320

319-
grid_power_recv = await logical_meter.grid_power()
320-
battery_power_recv = await logical_meter.battery_power()
321-
pv_power_recv = await logical_meter.pv_power()
322321
main_meter_recv = await self._get_resampled_stream(
323322
logical_meter,
324323
channel_registry,
325324
request_sender,
326325
4,
327326
ComponentMetricId.ACTIVE_POWER,
328327
)
328+
grid_power_recv = await logical_meter.grid_power()
329+
battery_power_recv = await logical_meter.battery_power()
330+
pv_power_recv = await logical_meter.pv_power()
329331

330332
engine = (pv_power_recv.clone() + battery_power_recv.clone()).build("inv_power")
331333
inv_calc_recv = engine.new_receiver()
@@ -354,9 +356,9 @@ async def test_formula_composition( # pylint: disable=too-many-locals
354356

355357
async def test_formula_composition_missing_pv(self, mocker: MockerFixture) -> None:
356358
"""Test the composition of formulas with missing PV power data."""
357-
mockgrid = await MockMicrogrid.new(mocker, grid_side_meter=False)
359+
mockgrid = MockMicrogrid(grid_side_meter=False)
358360
mockgrid.add_batteries(3)
359-
request_sender, channel_registry = await mockgrid.start()
361+
request_sender, channel_registry = await mockgrid.start(mocker)
360362
logical_meter = LogicalMeter(
361363
channel_registry,
362364
request_sender,
@@ -385,9 +387,9 @@ async def test_formula_composition_missing_pv(self, mocker: MockerFixture) -> No
385387

386388
async def test_formula_composition_missing_bat(self, mocker: MockerFixture) -> None:
387389
"""Test the composition of formulas with missing battery power data."""
388-
mockgrid = await MockMicrogrid.new(mocker, grid_side_meter=False)
390+
mockgrid = MockMicrogrid(grid_side_meter=False)
389391
mockgrid.add_solar_inverters(2)
390-
request_sender, channel_registry = await mockgrid.start()
392+
request_sender, channel_registry = await mockgrid.start(mocker)
391393
logical_meter = LogicalMeter(
392394
channel_registry,
393395
request_sender,
@@ -416,10 +418,10 @@ async def test_formula_composition_missing_bat(self, mocker: MockerFixture) -> N
416418

417419
async def test_3_phase_formulas(self, mocker: MockerFixture) -> None:
418420
"""Test 3 phase formulas current formulas and their composition."""
419-
mockgrid = await MockMicrogrid.new(mocker, grid_side_meter=False)
421+
mockgrid = MockMicrogrid(grid_side_meter=False)
420422
mockgrid.add_batteries(3)
421423
mockgrid.add_ev_chargers(1)
422-
request_sender, channel_registry = await mockgrid.start()
424+
request_sender, channel_registry = await mockgrid.start(mocker)
423425
logical_meter = LogicalMeter(
424426
channel_registry,
425427
request_sender,

0 commit comments

Comments
 (0)