@@ -32,77 +32,85 @@ async def test_batteries_status(self, mocker: MockerFixture) -> None:
3232 Args:
3333 mocker: Pytest mocker fixture.
3434 """
35- mock_microgrid = MockMicrogrid (grid_meter = True )
35+ mock_microgrid = MockMicrogrid (grid_meter = True , mocker = mocker )
3636 mock_microgrid .add_batteries (3 )
37- await mock_microgrid .start (mocker )
3837
39- batteries = {
40- battery .component_id
41- for battery in mock_microgrid .mock_client .component_graph .components (
42- component_categories = {ComponentCategory .BATTERY }
38+ async with mock_microgrid :
39+ batteries = {
40+ battery .component_id
41+ for battery in mock_microgrid .mock_client .component_graph .components (
42+ component_categories = {ComponentCategory .BATTERY }
43+ )
44+ }
45+ battery_status_channel = Broadcast [ComponentPoolStatus ]("battery_status" )
46+ battery_status_recv = battery_status_channel .new_receiver (maxsize = 1 )
47+ batteries_status = ComponentPoolStatusTracker (
48+ component_ids = batteries ,
49+ component_status_sender = battery_status_channel .new_sender (),
50+ max_data_age_sec = 5 ,
51+ max_blocking_duration_sec = 30 ,
52+ component_status_tracker_type = BatteryStatusTracker ,
4353 )
44- }
45- battery_status_channel = Broadcast [ComponentPoolStatus ]("battery_status" )
46- battery_status_recv = battery_status_channel .new_receiver (maxsize = 1 )
47- batteries_status = ComponentPoolStatusTracker (
48- component_ids = batteries ,
49- component_status_sender = battery_status_channel .new_sender (),
50- max_data_age_sec = 5 ,
51- max_blocking_duration_sec = 30 ,
52- component_status_tracker_type = BatteryStatusTracker ,
53- )
54- await asyncio .sleep (0.1 )
55-
56- expected_working : set [int ] = set ()
57- assert batteries_status .get_working_components (batteries ) == expected_working
58-
59- batteries_list = list (batteries )
60-
61- await mock_microgrid .mock_client .send (
62- battery_data (component_id = batteries_list [0 ])
63- )
64- await asyncio .sleep (0.1 )
65- assert batteries_status .get_working_components (batteries ) == expected_working
66-
67- expected_working .add (batteries_list [0 ])
68- await mock_microgrid .mock_client .send (
69- inverter_data (component_id = batteries_list [0 ] - 1 )
70- )
71- await asyncio .sleep (0.1 )
72- assert batteries_status .get_working_components (batteries ) == expected_working
73- msg = await asyncio .wait_for (battery_status_recv .receive (), timeout = 0.2 )
74- assert msg == batteries_status ._current_status
75-
76- await mock_microgrid .mock_client .send (
77- inverter_data (component_id = batteries_list [1 ] - 1 )
78- )
79- await mock_microgrid .mock_client .send (
80- battery_data (component_id = batteries_list [1 ])
81- )
82-
83- await mock_microgrid .mock_client .send (
84- inverter_data (component_id = batteries_list [2 ] - 1 )
85- )
86- await mock_microgrid .mock_client .send (
87- battery_data (component_id = batteries_list [2 ])
88- )
89-
90- expected_working = set (batteries_list )
91- await asyncio .sleep (0.1 )
92- assert batteries_status .get_working_components (batteries ) == expected_working
93- msg = await asyncio .wait_for (battery_status_recv .receive (), timeout = 0.2 )
94- assert msg == batteries_status ._current_status
95-
96- await batteries_status .update_status (
97- succeeded_components = {9 }, failed_components = {19 , 29 }
98- )
99- await asyncio .sleep (0.1 )
100- assert batteries_status .get_working_components (batteries ) == {9 }
101-
102- await batteries_status .update_status (
103- succeeded_components = {9 , 19 }, failed_components = set ()
104- )
105- await asyncio .sleep (0.1 )
106- assert batteries_status .get_working_components (batteries ) == {9 , 19 }
107-
108- await batteries_status .stop ()
54+ await asyncio .sleep (0.1 )
55+
56+ expected_working : set [int ] = set ()
57+ assert (
58+ batteries_status .get_working_components (batteries ) == expected_working
59+ )
60+
61+ batteries_list = list (batteries )
62+
63+ await mock_microgrid .mock_client .send (
64+ battery_data (component_id = batteries_list [0 ])
65+ )
66+ await asyncio .sleep (0.1 )
67+ assert (
68+ batteries_status .get_working_components (batteries ) == expected_working
69+ )
70+
71+ expected_working .add (batteries_list [0 ])
72+ await mock_microgrid .mock_client .send (
73+ inverter_data (component_id = batteries_list [0 ] - 1 )
74+ )
75+ await asyncio .sleep (0.1 )
76+ assert (
77+ batteries_status .get_working_components (batteries ) == expected_working
78+ )
79+ msg = await asyncio .wait_for (battery_status_recv .receive (), timeout = 0.2 )
80+ assert msg == batteries_status ._current_status
81+
82+ await mock_microgrid .mock_client .send (
83+ inverter_data (component_id = batteries_list [1 ] - 1 )
84+ )
85+ await mock_microgrid .mock_client .send (
86+ battery_data (component_id = batteries_list [1 ])
87+ )
88+
89+ await mock_microgrid .mock_client .send (
90+ inverter_data (component_id = batteries_list [2 ] - 1 )
91+ )
92+ await mock_microgrid .mock_client .send (
93+ battery_data (component_id = batteries_list [2 ])
94+ )
95+
96+ expected_working = set (batteries_list )
97+ await asyncio .sleep (0.1 )
98+ assert (
99+ batteries_status .get_working_components (batteries ) == expected_working
100+ )
101+ msg = await asyncio .wait_for (battery_status_recv .receive (), timeout = 0.2 )
102+ assert msg == batteries_status ._current_status
103+
104+ await batteries_status .update_status (
105+ succeeded_components = {9 }, failed_components = {19 , 29 }
106+ )
107+ await asyncio .sleep (0.1 )
108+ assert batteries_status .get_working_components (batteries ) == {9 }
109+
110+ await batteries_status .update_status (
111+ succeeded_components = {9 , 19 }, failed_components = set ()
112+ )
113+ await asyncio .sleep (0.1 )
114+ assert batteries_status .get_working_components (batteries ) == {9 , 19 }
115+
116+ await batteries_status .stop ()
0 commit comments