diff --git a/src/frequenz/sdk/microgrid/_data_pipeline.py b/src/frequenz/sdk/microgrid/_data_pipeline.py index 1eccb88f8..31b0e3bd0 100644 --- a/src/frequenz/sdk/microgrid/_data_pipeline.py +++ b/src/frequenz/sdk/microgrid/_data_pipeline.py @@ -495,8 +495,14 @@ async def _stop(self) -> None: if self._resampling_actor: await self._resampling_actor.actor.stop() await self._battery_power_wrapper.stop() + await self._ev_power_wrapper.stop() + await self._pv_power_wrapper.stop() for pool in self._battery_pool_reference_stores.values(): await pool.stop() + for evpool in self._ev_charger_pool_reference_stores.values(): + await evpool.stop() + for pvpool in self._pv_pool_reference_stores.values(): + await pvpool.stop() _DATA_PIPELINE: _DataPipeline | None = None diff --git a/tests/timeseries/_battery_pool/test_battery_pool_control_methods.py b/tests/timeseries/_battery_pool/test_battery_pool_control_methods.py index eef6fcc58..cd21796f7 100644 --- a/tests/timeseries/_battery_pool/test_battery_pool_control_methods.py +++ b/tests/timeseries/_battery_pool/test_battery_pool_control_methods.py @@ -71,19 +71,20 @@ async def mocks(mocker: MockerFixture) -> typing.AsyncIterator[Mocks]: dp = microgrid._data_pipeline._DATA_PIPELINE assert dp is not None - yield Mocks( - mockgrid, - streamer, - dp._battery_power_wrapper.status_channel.new_sender(), - ) - - await asyncio.gather( - *[ - dp._stop(), - streamer.stop(), - mockgrid.cleanup(), - ] - ) + try: + yield Mocks( + mockgrid, + streamer, + dp._battery_power_wrapper.status_channel.new_sender(), + ) + finally: + _ = await asyncio.gather( + *[ + dp._stop(), + streamer.stop(), + mockgrid.cleanup(), + ] + ) class TestBatteryPoolControl: diff --git a/tests/timeseries/_ev_charger_pool/test_ev_charger_pool_control_methods.py b/tests/timeseries/_ev_charger_pool/test_ev_charger_pool_control_methods.py index b519bb473..25de848b0 100644 --- a/tests/timeseries/_ev_charger_pool/test_ev_charger_pool_control_methods.py +++ b/tests/timeseries/_ev_charger_pool/test_ev_charger_pool_control_methods.py @@ -57,11 +57,20 @@ async def mocks(mocker: MockerFixture) -> typing.AsyncIterator[_Mocks]: dp = typing.cast(_DataPipeline, microgrid._data_pipeline._DATA_PIPELINE) - yield _Mocks( - mockgrid, - streamer, - dp._ev_power_wrapper.status_channel.new_sender(), - ) + try: + yield _Mocks( + mockgrid, + streamer, + dp._ev_power_wrapper.status_channel.new_sender(), + ) + finally: + _ = await asyncio.gather( + *[ + dp._stop(), + streamer.stop(), + mockgrid.cleanup(), + ] + ) class TestEVChargerPoolControl: diff --git a/tests/timeseries/_pv_pool/test_pv_pool_control_methods.py b/tests/timeseries/_pv_pool/test_pv_pool_control_methods.py index 96bea5c77..e1ef9141f 100644 --- a/tests/timeseries/_pv_pool/test_pv_pool_control_methods.py +++ b/tests/timeseries/_pv_pool/test_pv_pool_control_methods.py @@ -50,11 +50,20 @@ async def mocks(mocker: MockerFixture) -> typing.AsyncIterator[_Mocks]: dp = typing.cast(_DataPipeline, microgrid._data_pipeline._DATA_PIPELINE) - yield _Mocks( - mockgrid, - streamer, - dp._pv_power_wrapper.status_channel.new_sender(), - ) + try: + yield _Mocks( + mockgrid, + streamer, + dp._pv_power_wrapper.status_channel.new_sender(), + ) + finally: + _ = await asyncio.gather( + *[ + dp._stop(), + streamer.stop(), + mockgrid.cleanup(), + ] + ) class TestPVPoolControl: