@@ -27,6 +27,7 @@ class MockNode:
27
27
def __init__ (self ):
28
28
self .sent = []
29
29
self .gateway = MockGateway ()
30
+ self ._shutdown = False
30
31
31
32
def send_runtest_some (self , indices ):
32
33
self .sent .extend (indices )
@@ -37,6 +38,10 @@ def send_runtest_all(self):
37
38
def shutdown (self ):
38
39
self ._shutdown = True
39
40
41
+ @property
42
+ def shutting_down (self ):
43
+ return self ._shutdown
44
+
40
45
41
46
def dumpqueue (queue ):
42
47
while queue .qsize ():
@@ -100,16 +105,15 @@ def test_schedule_load_simple(self):
100
105
assert sched .node2collection [node2 ] == collection
101
106
sched .init_distribute ()
102
107
assert not sched .pending
103
- assert not sched .tests_finished ()
104
- assert len (node1 .sent ) == 2
105
- assert len (node2 .sent ) == 0
106
- assert node1 .sent == [0 , 1 ]
107
- sched .remove_item (node1 , node1 .sent [0 ])
108
108
assert sched .tests_finished ()
109
- sched .remove_item (node1 , node1 .sent [1 ])
109
+ assert len (node1 .sent ) == 1
110
+ assert len (node2 .sent ) == 1
111
+ assert node1 .sent == [0 ]
112
+ assert node2 .sent == [1 ]
113
+ sched .remove_item (node1 , node1 .sent [0 ])
110
114
assert sched .tests_finished ()
111
115
112
- def test_init_distribute_chunksize (self ):
116
+ def test_init_distribute_batch_size (self ):
113
117
sched = LoadScheduling (2 )
114
118
sched .addnode (MockNode ())
115
119
sched .addnode (MockNode ())
@@ -121,18 +125,56 @@ def test_init_distribute_chunksize(self):
121
125
# assert not sched.tests_finished()
122
126
sent1 = node1 .sent
123
127
sent2 = node2 .sent
124
- assert sent1 == [0 , 1 ]
125
- assert sent2 == [2 , 3 ]
128
+ assert sent1 == [0 , 2 ]
129
+ assert sent2 == [1 , 3 ]
126
130
assert sched .pending == [4 , 5 ]
127
131
assert sched .node2pending [node1 ] == sent1
128
132
assert sched .node2pending [node2 ] == sent2
129
133
assert len (sched .pending ) == 2
130
134
sched .remove_item (node1 , 0 )
131
- assert node1 .sent == [0 , 1 , 4 ]
135
+ assert node1 .sent == [0 , 2 , 4 ]
132
136
assert sched .pending == [5 ]
133
- assert node2 .sent == [2 , 3 ]
134
- sched .remove_item (node1 , 1 )
135
- assert node1 .sent == [0 , 1 , 4 , 5 ]
137
+ assert node2 .sent == [1 , 3 ]
138
+ sched .remove_item (node1 , 2 )
139
+ assert node1 .sent == [0 , 2 , 4 , 5 ]
140
+ assert not sched .pending
141
+
142
+ def test_init_distribute_fewer_tests_than_nodes (self ):
143
+ sched = LoadScheduling (2 )
144
+ sched .addnode (MockNode ())
145
+ sched .addnode (MockNode ())
146
+ sched .addnode (MockNode ())
147
+ node1 , node2 , node3 = sched .nodes
148
+ col = ["xyz" ] * 2
149
+ sched .addnode_collection (node1 , col )
150
+ sched .addnode_collection (node2 , col )
151
+ sched .init_distribute ()
152
+ # assert not sched.tests_finished()
153
+ sent1 = node1 .sent
154
+ sent2 = node2 .sent
155
+ sent3 = node3 .sent
156
+ assert sent1 == [0 ]
157
+ assert sent2 == [1 ]
158
+ assert sent3 == []
159
+ assert not sched .pending
160
+
161
+ def test_init_distribute_fewer_than_two_tests_per_node (self ):
162
+ sched = LoadScheduling (2 )
163
+ sched .addnode (MockNode ())
164
+ sched .addnode (MockNode ())
165
+ sched .addnode (MockNode ())
166
+ node1 , node2 , node3 = sched .nodes
167
+ col = ["xyz" ] * 5
168
+ sched .addnode_collection (node1 , col )
169
+ sched .addnode_collection (node2 , col )
170
+ sched .init_distribute ()
171
+ # assert not sched.tests_finished()
172
+ sent1 = node1 .sent
173
+ sent2 = node2 .sent
174
+ sent3 = node3 .sent
175
+ assert sent1 == [0 , 3 ]
176
+ assert sent2 == [1 , 4 ]
177
+ assert sent3 == [2 ]
136
178
assert not sched .pending
137
179
138
180
def test_add_remove_node (self ):
0 commit comments