@@ -129,6 +129,56 @@ def test_schedule_batch_size(self, pytester: pytest.Pytester) -> None:
129129 assert node1 .sent == [0 , 1 , 4 , 5 ]
130130 assert not sched .pending
131131
132+ def test_schedule_maxchunk_none (self , pytester : pytest .Pytester ) -> None :
133+ config = pytester .parseconfig ("--tx=2*popen" )
134+ sched = LoadScheduling (config )
135+ sched .add_node (MockNode ())
136+ sched .add_node (MockNode ())
137+ node1 , node2 = sched .nodes
138+ col = [f"test{ i } " for i in range (16 )]
139+ sched .add_node_collection (node1 , col )
140+ sched .add_node_collection (node2 , col )
141+ sched .schedule ()
142+ assert node1 .sent == [0 , 1 ]
143+ assert node2 .sent == [2 , 3 ]
144+ assert sched .pending == list (range (4 , 16 ))
145+ assert sched .node2pending [node1 ] == node1 .sent
146+ assert sched .node2pending [node2 ] == node2 .sent
147+ sched .mark_test_complete (node1 , 0 )
148+ assert node1 .sent == [0 , 1 , 4 , 5 ]
149+ assert sched .pending == list (range (6 , 16 ))
150+ sched .mark_test_complete (node1 , 1 )
151+ assert node1 .sent == [0 , 1 , 4 , 5 ]
152+ assert sched .pending == list (range (6 , 16 ))
153+
154+ for i in range (7 , 16 ):
155+ sched .mark_test_complete (node1 , i - 3 )
156+ assert node1 .sent == [0 , 1 ] + list (range (4 , i ))
157+ assert node2 .sent == [2 , 3 ]
158+ assert sched .pending == list (range (i , 16 ))
159+
160+ def test_schedule_maxchunk_1 (self , pytester : pytest .Pytester ) -> None :
161+ config = pytester .parseconfig ("--tx=2*popen" , "--maxschedchunk=1" )
162+ sched = LoadScheduling (config )
163+ sched .add_node (MockNode ())
164+ sched .add_node (MockNode ())
165+ node1 , node2 = sched .nodes
166+ col = [f"test{ i } " for i in range (16 )]
167+ sched .add_node_collection (node1 , col )
168+ sched .add_node_collection (node2 , col )
169+ sched .schedule ()
170+ assert node1 .sent == [0 , 1 ]
171+ assert node2 .sent == [2 , 3 ]
172+ assert sched .pending == list (range (4 , 16 ))
173+ assert sched .node2pending [node1 ] == node1 .sent
174+ assert sched .node2pending [node2 ] == node2 .sent
175+
176+ for complete_index , first_pending in enumerate (range (5 , 16 )):
177+ sched .mark_test_complete (node1 , node1 .sent [complete_index ])
178+ assert node1 .sent == [0 , 1 ] + list (range (4 , first_pending ))
179+ assert node2 .sent == [2 , 3 ]
180+ assert sched .pending == list (range (first_pending , 16 ))
181+
132182 def test_schedule_fewer_tests_than_nodes (self , pytester : pytest .Pytester ) -> None :
133183 config = pytester .parseconfig ("--tx=2*popen" )
134184 sched = LoadScheduling (config )
0 commit comments