Merge lp:~gandelman-a/ironic/icehouse_rc2 into lp:~ubuntu-server-dev/ironic/icehouse
- icehouse_rc2
- Merge into icehouse
Proposed by
Adam Gandelman
Status: | Rejected |
---|---|
Rejected by: | Martin Pitt |
Proposed branch: | lp:~gandelman-a/ironic/icehouse_rc2 |
Merge into: | lp:~ubuntu-server-dev/ironic/icehouse |
Diff against target: |
575 lines (+537/-2) 4 files modified
debian/changelog (+10/-0) debian/control (+2/-2) debian/patches/cleanup_conductors_in_tests.patch (+524/-0) debian/patches/series (+1/-0) |
To merge this branch: | bzr merge lp:~gandelman-a/ironic/icehouse_rc2 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu Server Developers | Pending | ||
Review via email: mp+215985@code.launchpad.net |
Commit message
Description of the change
RC2 and some minor fixes, including a cherry-picked patch that will fix a potential for memory exhaustion during test suite run (saw this a few times on PPA buildds)
To post a comment you must log in.
Revision history for this message
Martin Pitt (pitti) wrote : | # |
Unmerged revisions
- 18. By Adam Gandelman
-
d/control: Fix lintian warnings: bump debhelper version requirement
and standards version. - 17. By Adam Gandelman
-
d/control: Bump standards to 3.9.5.
- 16. By Adam Gandelman
-
d/p/cleanup_
conductors_ in_tests. patch: Cherry-pick upstream patch that
fixes possible memory exhaustion and deadlock during test suite runs. - 15. By Adam Gandelman
-
New upstream release.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'debian/changelog' | |||
2 | --- debian/changelog 2014-04-04 18:58:26 +0000 | |||
3 | +++ debian/changelog 2014-04-15 23:19:36 +0000 | |||
4 | @@ -1,3 +1,13 @@ | |||
5 | 1 | ironic (2014.1~rc2-0ubuntu1) trusty; urgency=medium | ||
6 | 2 | |||
7 | 3 | * New upstream release. | ||
8 | 4 | * d/p/cleanup_conductors_in_tests.patch: Cherry-pick upstream patch that | ||
9 | 5 | fixes possible memory exhaustion and deadlock during test suite runs. | ||
10 | 6 | * d/control: Fix lintian warnings: bump debhelper version requirement | ||
11 | 7 | and standards version. | ||
12 | 8 | |||
13 | 9 | -- Adam Gandelman <adamg@ubuntu.com> Tue, 15 Apr 2014 16:04:16 -0700 | ||
14 | 10 | |||
15 | 1 | ironic (2014.1~rc1-0ubuntu1) trusty; urgency=medium | 11 | ironic (2014.1~rc1-0ubuntu1) trusty; urgency=medium |
16 | 2 | 12 | ||
17 | 3 | [ Adam Gandelman ] | 13 | [ Adam Gandelman ] |
18 | 4 | 14 | ||
19 | === modified file 'debian/control' | |||
20 | --- debian/control 2014-04-04 18:16:52 +0000 | |||
21 | +++ debian/control 2014-04-15 23:19:36 +0000 | |||
22 | @@ -2,7 +2,7 @@ | |||
23 | 2 | Section: net | 2 | Section: net |
24 | 3 | Priority: extra | 3 | Priority: extra |
25 | 4 | Maintainer: Chuck Short <zulcss@ubuntu.com> | 4 | Maintainer: Chuck Short <zulcss@ubuntu.com> |
27 | 5 | Build-Depends: debhelper (>= 8.0.0), | 5 | Build-Depends: debhelper (>= 9.0.0), |
28 | 6 | alembic (>= 0.4.1), | 6 | alembic (>= 0.4.1), |
29 | 7 | python-setuptools, | 7 | python-setuptools, |
30 | 8 | python-all (>= 2.6), | 8 | python-all (>= 2.6), |
31 | @@ -40,7 +40,7 @@ | |||
32 | 40 | python-subunit, | 40 | python-subunit, |
33 | 41 | testrepository (>= 0.0.17), | 41 | testrepository (>= 0.0.17), |
34 | 42 | python-testtools (>= 0.9.32) | 42 | python-testtools (>= 0.9.32) |
36 | 43 | Standards-Version: 3.9.4 | 43 | Standards-Version: 3.9.5 |
37 | 44 | Vcs-Browser: http://bazaar.launchpad.net/~ubuntu-server-dev/ironic/icehouse/files | 44 | Vcs-Browser: http://bazaar.launchpad.net/~ubuntu-server-dev/ironic/icehouse/files |
38 | 45 | Vcs-Bzr: https://code.launchpad.net/~ubuntu-server-dev/ironic/icehouse | 45 | Vcs-Bzr: https://code.launchpad.net/~ubuntu-server-dev/ironic/icehouse |
39 | 46 | 46 | ||
40 | 47 | 47 | ||
41 | === added file 'debian/patches/cleanup_conductors_in_tests.patch' | |||
42 | --- debian/patches/cleanup_conductors_in_tests.patch 1970-01-01 00:00:00 +0000 | |||
43 | +++ debian/patches/cleanup_conductors_in_tests.patch 2014-04-15 23:19:36 +0000 | |||
44 | @@ -0,0 +1,524 @@ | |||
45 | 1 | From a4cf03c7e66a829400d69da295f54f5c2beb6812 Mon Sep 17 00:00:00 2001 | ||
46 | 2 | From: Adam Gandelman <adamg@ubuntu.com> | ||
47 | 3 | Date: Wed, 9 Apr 2014 16:50:05 -0700 | ||
48 | 4 | Subject: [PATCH 1/1] Cleanup running conductor services in tests | ||
49 | 5 | |||
50 | 6 | The conductor manager tests are not stopping services that are | ||
51 | 7 | started, instead relying strickly on database cleanup. This is | ||
52 | 8 | causing condcutor periodic tasks to bleed into other test cases | ||
53 | 9 | and cause occasional unrelated deadlocks in logging later on during | ||
54 | 10 | test runs. | ||
55 | 11 | |||
56 | 12 | Change-Id: I7502df5dec7c42fe1a20bebad8f9ad393572d17d | ||
57 | 13 | Closes-bug: #1300420 | ||
58 | 14 | --- | ||
59 | 15 | ironic/tests/conductor/test_manager.py | 121 ++++++++++++++++++--------------- | ||
60 | 16 | 1 file changed, 66 insertions(+), 55 deletions(-) | ||
61 | 17 | |||
62 | 18 | diff --git a/ironic/tests/conductor/test_manager.py b/ironic/tests/conductor/test_manager.py | ||
63 | 19 | index 307b7c9..68e2ba3 100644 | ||
64 | 20 | --- a/ironic/tests/conductor/test_manager.py | ||
65 | 21 | +++ b/ironic/tests/conductor/test_manager.py | ||
66 | 22 | @@ -55,16 +55,27 @@ class ManagerTestCase(base.DbTestCase): | ||
67 | 23 | mgr_utils.mock_the_extension_manager() | ||
68 | 24 | self.driver = driver_factory.get_driver("fake") | ||
69 | 25 | |||
70 | 26 | + def _stop_service(self): | ||
71 | 27 | + try: | ||
72 | 28 | + self.dbapi.get_conductor(self.hostname) | ||
73 | 29 | + except exception.ConductorNotFound: | ||
74 | 30 | + return | ||
75 | 31 | + self.service.stop() | ||
76 | 32 | + | ||
77 | 33 | + def _start_service(self): | ||
78 | 34 | + self.service.start() | ||
79 | 35 | + self.addCleanup(self._stop_service) | ||
80 | 36 | + | ||
81 | 37 | def test_start_registers_conductor(self): | ||
82 | 38 | self.assertRaises(exception.ConductorNotFound, | ||
83 | 39 | self.dbapi.get_conductor, | ||
84 | 40 | self.hostname) | ||
85 | 41 | - self.service.start() | ||
86 | 42 | + self._start_service() | ||
87 | 43 | res = self.dbapi.get_conductor(self.hostname) | ||
88 | 44 | self.assertEqual(self.hostname, res['hostname']) | ||
89 | 45 | |||
90 | 46 | def test_stop_unregisters_conductor(self): | ||
91 | 47 | - self.service.start() | ||
92 | 48 | + self._start_service() | ||
93 | 49 | res = self.dbapi.get_conductor(self.hostname) | ||
94 | 50 | self.assertEqual(self.hostname, res['hostname']) | ||
95 | 51 | self.service.stop() | ||
96 | 52 | @@ -80,24 +91,24 @@ class ManagerTestCase(base.DbTestCase): | ||
97 | 53 | with mock.patch.object(df._extension_manager, 'names') as mock_names: | ||
98 | 54 | # verify driver names are registered | ||
99 | 55 | mock_names.return_value = init_names | ||
100 | 56 | - self.service.start() | ||
101 | 57 | + self._start_service() | ||
102 | 58 | res = self.dbapi.get_conductor(self.hostname) | ||
103 | 59 | self.assertEqual(init_names, res['drivers']) | ||
104 | 60 | |||
105 | 61 | # verify that restart registers new driver names | ||
106 | 62 | mock_names.return_value = restart_names | ||
107 | 63 | - self.service.start() | ||
108 | 64 | + self._start_service() | ||
109 | 65 | res = self.dbapi.get_conductor(self.hostname) | ||
110 | 66 | self.assertEqual(restart_names, res['drivers']) | ||
111 | 67 | |||
112 | 68 | def test__conductor_service_record_keepalive(self): | ||
113 | 69 | - self.service.start() | ||
114 | 70 | + self._start_service() | ||
115 | 71 | with mock.patch.object(self.dbapi, 'touch_conductor') as mock_touch: | ||
116 | 72 | self.service._conductor_service_record_keepalive(self.context) | ||
117 | 73 | mock_touch.assert_called_once_with(self.hostname) | ||
118 | 74 | |||
119 | 75 | def test__sync_power_state_no_sync(self): | ||
120 | 76 | - self.service.start() | ||
121 | 77 | + self._start_service() | ||
122 | 78 | n = utils.get_test_node(driver='fake', power_state='fake-power') | ||
123 | 79 | self.dbapi.create_node(n) | ||
124 | 80 | with mock.patch.object(self.driver.power, | ||
125 | 81 | @@ -109,7 +120,7 @@ class ManagerTestCase(base.DbTestCase): | ||
126 | 82 | self.assertEqual('fake-power', node['power_state']) | ||
127 | 83 | |||
128 | 84 | def test__sync_power_state_not_set(self): | ||
129 | 85 | - self.service.start() | ||
130 | 86 | + self._start_service() | ||
131 | 87 | n = utils.get_test_node(driver='fake', power_state=None) | ||
132 | 88 | self.dbapi.create_node(n) | ||
133 | 89 | with mock.patch.object(self.driver.power, | ||
134 | 90 | @@ -122,7 +133,7 @@ class ManagerTestCase(base.DbTestCase): | ||
135 | 91 | |||
136 | 92 | @mock.patch.object(objects.node.Node, 'save') | ||
137 | 93 | def test__sync_power_state_unchanged(self, save_mock): | ||
138 | 94 | - self.service.start() | ||
139 | 95 | + self._start_service() | ||
140 | 96 | n = utils.get_test_node(driver='fake', power_state=states.POWER_ON) | ||
141 | 97 | self.dbapi.create_node(n) | ||
142 | 98 | with mock.patch.object(self.driver.power, | ||
143 | 99 | @@ -135,7 +146,7 @@ class ManagerTestCase(base.DbTestCase): | ||
144 | 100 | @mock.patch.object(conductor_utils, 'node_power_action') | ||
145 | 101 | @mock.patch.object(objects.node.Node, 'save') | ||
146 | 102 | def test__sync_power_state_changed_sync(self, save_mock, npa_mock): | ||
147 | 103 | - self.service.start() | ||
148 | 104 | + self._start_service() | ||
149 | 105 | self.config(force_power_state_during_sync=True, group='conductor') | ||
150 | 106 | n = utils.get_test_node(driver='fake', power_state=states.POWER_ON) | ||
151 | 107 | self.dbapi.create_node(n) | ||
152 | 108 | @@ -154,7 +165,7 @@ class ManagerTestCase(base.DbTestCase): | ||
153 | 109 | """Force sync node power state and check if max retry | ||
154 | 110 | limit for force sync is honoured | ||
155 | 111 | """ | ||
156 | 112 | - self.service.start() | ||
157 | 113 | + self._start_service() | ||
158 | 114 | self.config(force_power_state_during_sync=True, group='conductor') | ||
159 | 115 | self.config(power_state_sync_max_retries=1, group='conductor') | ||
160 | 116 | n = utils.get_test_node(driver='fake', power_state=states.POWER_ON) | ||
161 | 117 | @@ -180,7 +191,7 @@ class ManagerTestCase(base.DbTestCase): | ||
162 | 118 | @mock.patch.object(conductor_utils, 'node_power_action') | ||
163 | 119 | @mock.patch.object(objects.node.Node, 'save') | ||
164 | 120 | def test__sync_power_state_changed_failed(self, save_mock, npa_mock): | ||
165 | 121 | - self.service.start() | ||
166 | 122 | + self._start_service() | ||
167 | 123 | self.config(force_power_state_during_sync=True, group='conductor') | ||
168 | 124 | n = utils.get_test_node(driver='fake', power_state=states.POWER_ON) | ||
169 | 125 | self.dbapi.create_node(n) | ||
170 | 126 | @@ -199,7 +210,7 @@ class ManagerTestCase(base.DbTestCase): | ||
171 | 127 | @mock.patch.object(conductor_utils, 'node_power_action') | ||
172 | 128 | @mock.patch.object(objects.node.Node, 'save') | ||
173 | 129 | def test__sync_power_state_changed_save(self, save_mock, npa_mock): | ||
174 | 130 | - self.service.start() | ||
175 | 131 | + self._start_service() | ||
176 | 132 | self.config(force_power_state_during_sync=False, group='conductor') | ||
177 | 133 | n = utils.get_test_node(driver='fake', power_state=states.POWER_OFF) | ||
178 | 134 | self.dbapi.create_node(n) | ||
179 | 135 | @@ -212,7 +223,7 @@ class ManagerTestCase(base.DbTestCase): | ||
180 | 136 | self.assertTrue(save_mock.called) | ||
181 | 137 | |||
182 | 138 | def test__sync_power_state_node_locked(self): | ||
183 | 139 | - self.service.start() | ||
184 | 140 | + self._start_service() | ||
185 | 141 | n = utils.get_test_node(driver='fake', power_state='fake-power') | ||
186 | 142 | self.dbapi.create_node(n) | ||
187 | 143 | self.dbapi.reserve_nodes('fake-reserve', [n['id']]) | ||
188 | 144 | @@ -224,7 +235,7 @@ class ManagerTestCase(base.DbTestCase): | ||
189 | 145 | self.assertEqual('fake-power', node['power_state']) | ||
190 | 146 | |||
191 | 147 | def test__sync_power_state_multiple_nodes(self): | ||
192 | 148 | - self.service.start() | ||
193 | 149 | + self._start_service() | ||
194 | 150 | self.config(force_power_state_during_sync=False, group='conductor') | ||
195 | 151 | |||
196 | 152 | # create three nodes | ||
197 | 153 | @@ -257,7 +268,7 @@ class ManagerTestCase(base.DbTestCase): | ||
198 | 154 | self.assertEqual(states.POWER_ON, n3['power_state']) | ||
199 | 155 | |||
200 | 156 | def test__sync_power_state_node_no_power_state(self): | ||
201 | 157 | - self.service.start() | ||
202 | 158 | + self._start_service() | ||
203 | 159 | self.config(force_power_state_during_sync=False, group='conductor') | ||
204 | 160 | |||
205 | 161 | # create three nodes | ||
206 | 162 | @@ -292,7 +303,7 @@ class ManagerTestCase(base.DbTestCase): | ||
207 | 163 | self.assertEqual(final[i], n.power_state) | ||
208 | 164 | |||
209 | 165 | def test__sync_power_state_node_deploywait(self): | ||
210 | 166 | - self.service.start() | ||
211 | 167 | + self._start_service() | ||
212 | 168 | n = utils.get_test_node(provision_state=states.DEPLOYWAIT) | ||
213 | 169 | self.dbapi.create_node(n) | ||
214 | 170 | |||
215 | 171 | @@ -307,7 +318,7 @@ class ManagerTestCase(base.DbTestCase): | ||
216 | 172 | n = utils.get_test_node(driver='fake', | ||
217 | 173 | power_state=states.POWER_OFF) | ||
218 | 174 | db_node = self.dbapi.create_node(n) | ||
219 | 175 | - self.service.start() | ||
220 | 176 | + self._start_service() | ||
221 | 177 | |||
222 | 178 | with mock.patch.object(self.driver.power, 'get_power_state') \ | ||
223 | 179 | as get_power_mock: | ||
224 | 180 | @@ -338,7 +349,7 @@ class ManagerTestCase(base.DbTestCase): | ||
225 | 181 | power_state=pwr_state, | ||
226 | 182 | reservation=fake_reservation) | ||
227 | 183 | db_node = self.dbapi.create_node(n) | ||
228 | 184 | - self.service.start() | ||
229 | 185 | + self._start_service() | ||
230 | 186 | |||
231 | 187 | exc = self.assertRaises(messaging.ClientException, | ||
232 | 188 | self.service.change_node_power_state, | ||
233 | 189 | @@ -364,7 +375,7 @@ class ManagerTestCase(base.DbTestCase): | ||
234 | 190 | n = utils.get_test_node(driver='fake', | ||
235 | 191 | power_state=initial_state) | ||
236 | 192 | db_node = self.dbapi.create_node(n) | ||
237 | 193 | - self.service.start() | ||
238 | 194 | + self._start_service() | ||
239 | 195 | |||
240 | 196 | with mock.patch.object(self.service, '_spawn_worker') \ | ||
241 | 197 | as spawn_mock: | ||
242 | 198 | @@ -395,7 +406,7 @@ class ManagerTestCase(base.DbTestCase): | ||
243 | 199 | n = utils.get_test_node(driver='fake', | ||
244 | 200 | power_state=initial_state) | ||
245 | 201 | db_node = self.dbapi.create_node(n) | ||
246 | 202 | - self.service.start() | ||
247 | 203 | + self._start_service() | ||
248 | 204 | |||
249 | 205 | with mock.patch.object(self.driver.power, 'get_power_state') \ | ||
250 | 206 | as get_power_mock: | ||
251 | 207 | @@ -512,7 +523,7 @@ class ManagerTestCase(base.DbTestCase): | ||
252 | 208 | n = utils.get_test_node(driver='fake') | ||
253 | 209 | node = self.dbapi.create_node(n) | ||
254 | 210 | info = {'bar': 'baz'} | ||
255 | 211 | - self.service.start() | ||
256 | 212 | + self._start_service() | ||
257 | 213 | |||
258 | 214 | self.service.vendor_passthru( | ||
259 | 215 | self.context, n['uuid'], 'first_method', info) | ||
260 | 216 | @@ -529,7 +540,7 @@ class ManagerTestCase(base.DbTestCase): | ||
261 | 217 | n = utils.get_test_node(driver='fake', reservation=fake_reservation) | ||
262 | 218 | node = self.dbapi.create_node(n) | ||
263 | 219 | info = {'bar': 'baz'} | ||
264 | 220 | - self.service.start() | ||
265 | 221 | + self._start_service() | ||
266 | 222 | |||
267 | 223 | exc = self.assertRaises(messaging.ClientException, | ||
268 | 224 | self.service.vendor_passthru, | ||
269 | 225 | @@ -546,7 +557,7 @@ class ManagerTestCase(base.DbTestCase): | ||
270 | 226 | n = utils.get_test_node(driver='fake') | ||
271 | 227 | node = self.dbapi.create_node(n) | ||
272 | 228 | info = {'bar': 'baz'} | ||
273 | 229 | - self.service.start() | ||
274 | 230 | + self._start_service() | ||
275 | 231 | |||
276 | 232 | exc = self.assertRaises(messaging.ClientException, | ||
277 | 233 | self.service.vendor_passthru, | ||
278 | 234 | @@ -565,7 +576,7 @@ class ManagerTestCase(base.DbTestCase): | ||
279 | 235 | n = utils.get_test_node(driver='fake') | ||
280 | 236 | node = self.dbapi.create_node(n) | ||
281 | 237 | info = {'invalid_param': 'whatever'} | ||
282 | 238 | - self.service.start() | ||
283 | 239 | + self._start_service() | ||
284 | 240 | |||
285 | 241 | exc = self.assertRaises(messaging.ClientException, | ||
286 | 242 | self.service.vendor_passthru, | ||
287 | 243 | @@ -583,7 +594,7 @@ class ManagerTestCase(base.DbTestCase): | ||
288 | 244 | node = self.dbapi.create_node(n) | ||
289 | 245 | info = {'bar': 'baz'} | ||
290 | 246 | self.driver.vendor = None | ||
291 | 247 | - self.service.start() | ||
292 | 248 | + self._start_service() | ||
293 | 249 | |||
294 | 250 | exc = self.assertRaises(messaging.ClientException, | ||
295 | 251 | self.service.vendor_passthru, | ||
296 | 252 | @@ -601,7 +612,7 @@ class ManagerTestCase(base.DbTestCase): | ||
297 | 253 | n = utils.get_test_node(driver='fake') | ||
298 | 254 | node = self.dbapi.create_node(n) | ||
299 | 255 | info = {'bar': 'baz'} | ||
300 | 256 | - self.service.start() | ||
301 | 257 | + self._start_service() | ||
302 | 258 | |||
303 | 259 | with mock.patch.object(self.service, '_spawn_worker') \ | ||
304 | 260 | as spawn_mock: | ||
305 | 261 | @@ -701,7 +712,7 @@ class ManagerTestCase(base.DbTestCase): | ||
306 | 262 | mock_deploy.assert_called_once_with(mock.ANY, mock.ANY) | ||
307 | 263 | |||
308 | 264 | def test_do_node_deploy_partial_ok(self): | ||
309 | 265 | - self.service.start() | ||
310 | 266 | + self._start_service() | ||
311 | 267 | thread = self.service._spawn_worker(lambda: None) | ||
312 | 268 | with mock.patch.object(self.service, '_spawn_worker') as mock_spawn: | ||
313 | 269 | mock_spawn.return_value = thread | ||
314 | 270 | @@ -724,7 +735,7 @@ class ManagerTestCase(base.DbTestCase): | ||
315 | 271 | def test_do_node_deploy_worker_pool_full(self): | ||
316 | 272 | ndict = utils.get_test_node(driver='fake') | ||
317 | 273 | node = self.dbapi.create_node(ndict) | ||
318 | 274 | - self.service.start() | ||
319 | 275 | + self._start_service() | ||
320 | 276 | |||
321 | 277 | with mock.patch.object(self.service, '_spawn_worker') as mock_spawn: | ||
322 | 278 | mock_spawn.side_effect = exception.NoFreeConductorWorker() | ||
323 | 279 | @@ -773,7 +784,7 @@ class ManagerTestCase(base.DbTestCase): | ||
324 | 280 | node = self.dbapi.create_node(ndict) | ||
325 | 281 | |||
326 | 282 | task = task_manager.TaskManager(self.context, node.uuid) | ||
327 | 283 | - self.service.start() | ||
328 | 284 | + self._start_service() | ||
329 | 285 | mock_tear_down.side_effect = exception.InstanceDeployFailure('test') | ||
330 | 286 | self.assertRaises(exception.InstanceDeployFailure, | ||
331 | 287 | self.service._do_node_tear_down, | ||
332 | 288 | @@ -792,7 +803,7 @@ class ManagerTestCase(base.DbTestCase): | ||
333 | 289 | node = self.dbapi.create_node(ndict) | ||
334 | 290 | |||
335 | 291 | task = task_manager.TaskManager(self.context, node.uuid) | ||
336 | 292 | - self.service.start() | ||
337 | 293 | + self._start_service() | ||
338 | 294 | mock_tear_down.return_value = states.DELETED | ||
339 | 295 | self.service._do_node_tear_down(self.context, task) | ||
340 | 296 | node.refresh(self.context) | ||
341 | 297 | @@ -808,7 +819,7 @@ class ManagerTestCase(base.DbTestCase): | ||
342 | 298 | provision_state=states.ACTIVE) | ||
343 | 299 | node = self.dbapi.create_node(ndict) | ||
344 | 300 | |||
345 | 301 | - self.service.start() | ||
346 | 302 | + self._start_service() | ||
347 | 303 | task = task_manager.TaskManager(self.context, node.uuid) | ||
348 | 304 | mock_tear_down.return_value = states.DELETING | ||
349 | 305 | self.service._do_node_tear_down(self.context, task) | ||
350 | 306 | @@ -822,7 +833,7 @@ class ManagerTestCase(base.DbTestCase): | ||
351 | 307 | ndict = utils.get_test_node(driver='fake', | ||
352 | 308 | provision_state=states.ACTIVE) | ||
353 | 309 | node = self.dbapi.create_node(ndict) | ||
354 | 310 | - self.service.start() | ||
355 | 311 | + self._start_service() | ||
356 | 312 | |||
357 | 313 | mock_spawn.side_effect = exception.NoFreeConductorWorker() | ||
358 | 314 | |||
359 | 315 | @@ -904,7 +915,7 @@ class ManagerTestCase(base.DbTestCase): | ||
360 | 316 | func_mock = mock.Mock() | ||
361 | 317 | args = (1, 2, "test") | ||
362 | 318 | kwargs = dict(kw1='test1', kw2='test2') | ||
363 | 319 | - self.service.start() | ||
364 | 320 | + self._start_service() | ||
365 | 321 | |||
366 | 322 | thread = self.service._spawn_worker(func_mock, *args, **kwargs) | ||
367 | 323 | self.service._worker_pool.waitall() | ||
368 | 324 | @@ -919,7 +930,7 @@ class ManagerTestCase(base.DbTestCase): | ||
369 | 325 | def func(): | ||
370 | 326 | time.sleep(1) | ||
371 | 327 | link_callback = mock.Mock() | ||
372 | 328 | - self.service.start() | ||
373 | 329 | + self._start_service() | ||
374 | 330 | |||
375 | 331 | thread = self.service._spawn_worker(func) | ||
376 | 332 | # func_mock executing at this moment | ||
377 | 333 | @@ -932,7 +943,7 @@ class ManagerTestCase(base.DbTestCase): | ||
378 | 334 | def func(): | ||
379 | 335 | pass | ||
380 | 336 | link_callback = mock.Mock() | ||
381 | 337 | - self.service.start() | ||
382 | 338 | + self._start_service() | ||
383 | 339 | |||
384 | 340 | thread = self.service._spawn_worker(func) | ||
385 | 341 | self.service._worker_pool.waitall() | ||
386 | 342 | @@ -946,7 +957,7 @@ class ManagerTestCase(base.DbTestCase): | ||
387 | 343 | time.sleep(1) | ||
388 | 344 | raise Exception() | ||
389 | 345 | link_callback = mock.Mock() | ||
390 | 346 | - self.service.start() | ||
391 | 347 | + self._start_service() | ||
392 | 348 | |||
393 | 349 | thread = self.service._spawn_worker(func) | ||
394 | 350 | # func_mock executing at this moment | ||
395 | 351 | @@ -959,7 +970,7 @@ class ManagerTestCase(base.DbTestCase): | ||
396 | 352 | def func(): | ||
397 | 353 | raise Exception() | ||
398 | 354 | link_callback = mock.Mock() | ||
399 | 355 | - self.service.start() | ||
400 | 356 | + self._start_service() | ||
401 | 357 | |||
402 | 358 | thread = self.service._spawn_worker(func) | ||
403 | 359 | self.service._worker_pool.waitall() | ||
404 | 360 | @@ -969,7 +980,7 @@ class ManagerTestCase(base.DbTestCase): | ||
405 | 361 | link_callback.assert_called_once_with(thread) | ||
406 | 362 | |||
407 | 363 | def test_destroy_node(self): | ||
408 | 364 | - self.service.start() | ||
409 | 365 | + self._start_service() | ||
410 | 366 | ndict = utils.get_test_node(driver='fake') | ||
411 | 367 | node = self.dbapi.create_node(ndict) | ||
412 | 368 | self.service.destroy_node(self.context, node.uuid) | ||
413 | 369 | @@ -978,7 +989,7 @@ class ManagerTestCase(base.DbTestCase): | ||
414 | 370 | node.uuid) | ||
415 | 371 | |||
416 | 372 | def test_destroy_node_reserved(self): | ||
417 | 373 | - self.service.start() | ||
418 | 374 | + self._start_service() | ||
419 | 375 | fake_reservation = 'fake-reserv' | ||
420 | 376 | ndict = utils.get_test_node(reservation=fake_reservation) | ||
421 | 377 | node = self.dbapi.create_node(ndict) | ||
422 | 378 | @@ -993,7 +1004,7 @@ class ManagerTestCase(base.DbTestCase): | ||
423 | 379 | self.assertEqual(fake_reservation, node.reservation) | ||
424 | 380 | |||
425 | 381 | def test_destroy_node_associated(self): | ||
426 | 382 | - self.service.start() | ||
427 | 383 | + self._start_service() | ||
428 | 384 | ndict = utils.get_test_node(instance_uuid='fake-uuid') | ||
429 | 385 | node = self.dbapi.create_node(ndict) | ||
430 | 386 | |||
431 | 387 | @@ -1013,7 +1024,7 @@ class ManagerTestCase(base.DbTestCase): | ||
432 | 388 | past = datetime.datetime(2000, 1, 1, 0, 0) | ||
433 | 389 | present = past + datetime.timedelta(minutes=5) | ||
434 | 390 | mock_utcnow.return_value = past | ||
435 | 391 | - self.service.start() | ||
436 | 392 | + self._start_service() | ||
437 | 393 | n = utils.get_test_node(provision_state=states.DEPLOYWAIT, | ||
438 | 394 | target_provision_state=states.DEPLOYDONE, | ||
439 | 395 | provision_updated_at=past) | ||
440 | 396 | @@ -1034,7 +1045,7 @@ class ManagerTestCase(base.DbTestCase): | ||
441 | 397 | past = datetime.datetime(2000, 1, 1, 0, 0) | ||
442 | 398 | present = past + datetime.timedelta(minutes=5) | ||
443 | 399 | mock_utcnow.return_value = past | ||
444 | 400 | - self.service.start() | ||
445 | 401 | + self._start_service() | ||
446 | 402 | n = utils.get_test_node(provision_state=states.DEPLOYWAIT, | ||
447 | 403 | target_provision_state=states.DEPLOYDONE, | ||
448 | 404 | provision_updated_at=past) | ||
449 | 405 | @@ -1050,7 +1061,7 @@ class ManagerTestCase(base.DbTestCase): | ||
450 | 406 | |||
451 | 407 | def test__check_deploy_timeouts_disabled(self): | ||
452 | 408 | self.config(deploy_callback_timeout=0, group='conductor') | ||
453 | 409 | - self.service.start() | ||
454 | 410 | + self._start_service() | ||
455 | 411 | with mock.patch.object(self.dbapi, 'get_nodeinfo_list') as get_mock: | ||
456 | 412 | self.service._check_deploy_timeouts(self.context) | ||
457 | 413 | self.assertFalse(get_mock.called) | ||
458 | 414 | @@ -1061,7 +1072,7 @@ class ManagerTestCase(base.DbTestCase): | ||
459 | 415 | past = datetime.datetime(2000, 1, 1, 0, 0) | ||
460 | 416 | present = past + datetime.timedelta(minutes=5) | ||
461 | 417 | mock_utcnow.return_value = past | ||
462 | 418 | - self.service.start() | ||
463 | 419 | + self._start_service() | ||
464 | 420 | n = utils.get_test_node(provision_state=states.DEPLOYWAIT, | ||
465 | 421 | target_provision_state=states.DEPLOYDONE, | ||
466 | 422 | provision_updated_at=past) | ||
467 | 423 | @@ -1081,7 +1092,7 @@ class ManagerTestCase(base.DbTestCase): | ||
468 | 424 | def test_set_console_mode_worker_pool_full(self): | ||
469 | 425 | ndict = utils.get_test_node(driver='fake') | ||
470 | 426 | node = self.dbapi.create_node(ndict) | ||
471 | 427 | - self.service.start() | ||
472 | 428 | + self._start_service() | ||
473 | 429 | with mock.patch.object(self.service, '_spawn_worker') \ | ||
474 | 430 | as spawn_mock: | ||
475 | 431 | spawn_mock.side_effect = exception.NoFreeConductorWorker() | ||
476 | 432 | @@ -1097,7 +1108,7 @@ class ManagerTestCase(base.DbTestCase): | ||
477 | 433 | def test_set_console_mode_enabled(self): | ||
478 | 434 | ndict = utils.get_test_node(driver='fake') | ||
479 | 435 | node = self.dbapi.create_node(ndict) | ||
480 | 436 | - self.service.start() | ||
481 | 437 | + self._start_service() | ||
482 | 438 | self.service.set_console_mode(self.context, node.uuid, True) | ||
483 | 439 | self.service._worker_pool.waitall() | ||
484 | 440 | node.refresh(self.context) | ||
485 | 441 | @@ -1106,7 +1117,7 @@ class ManagerTestCase(base.DbTestCase): | ||
486 | 442 | def test_set_console_mode_disabled(self): | ||
487 | 443 | ndict = utils.get_test_node(driver='fake') | ||
488 | 444 | node = self.dbapi.create_node(ndict) | ||
489 | 445 | - self.service.start() | ||
490 | 446 | + self._start_service() | ||
491 | 447 | self.service.set_console_mode(self.context, node.uuid, False) | ||
492 | 448 | self.service._worker_pool.waitall() | ||
493 | 449 | node.refresh(self.context) | ||
494 | 450 | @@ -1115,7 +1126,7 @@ class ManagerTestCase(base.DbTestCase): | ||
495 | 451 | def test_set_console_mode_not_supported(self): | ||
496 | 452 | ndict = utils.get_test_node(driver='fake', last_error=None) | ||
497 | 453 | node = self.dbapi.create_node(ndict) | ||
498 | 454 | - self.service.start() | ||
499 | 455 | + self._start_service() | ||
500 | 456 | # null the console interface | ||
501 | 457 | self.driver.console = None | ||
502 | 458 | exc = self.assertRaises(messaging.ClientException, | ||
503 | 459 | @@ -1131,7 +1142,7 @@ class ManagerTestCase(base.DbTestCase): | ||
504 | 460 | def test_set_console_mode_validation_fail(self): | ||
505 | 461 | ndict = utils.get_test_node(driver='fake', last_error=None) | ||
506 | 462 | node = self.dbapi.create_node(ndict) | ||
507 | 463 | - self.service.start() | ||
508 | 464 | + self._start_service() | ||
509 | 465 | with mock.patch.object(self.driver.console, 'validate') as mock_val: | ||
510 | 466 | mock_val.side_effect = exception.InvalidParameterValue('error') | ||
511 | 467 | exc = self.assertRaises(messaging.ClientException, | ||
512 | 468 | @@ -1144,7 +1155,7 @@ class ManagerTestCase(base.DbTestCase): | ||
513 | 469 | ndict = utils.get_test_node(driver='fake', last_error=None, | ||
514 | 470 | console_enabled=False) | ||
515 | 471 | node = self.dbapi.create_node(ndict) | ||
516 | 472 | - self.service.start() | ||
517 | 473 | + self._start_service() | ||
518 | 474 | with mock.patch.object(self.driver.console, 'start_console') \ | ||
519 | 475 | as mock_sc: | ||
520 | 476 | mock_sc.side_effect = exception.IronicException('test-error') | ||
521 | 477 | @@ -1158,7 +1169,7 @@ class ManagerTestCase(base.DbTestCase): | ||
522 | 478 | ndict = utils.get_test_node(driver='fake', last_error=None, | ||
523 | 479 | console_enabled=True) | ||
524 | 480 | node = self.dbapi.create_node(ndict) | ||
525 | 481 | - self.service.start() | ||
526 | 482 | + self._start_service() | ||
527 | 483 | with mock.patch.object(self.driver.console, 'stop_console') \ | ||
528 | 484 | as mock_sc: | ||
529 | 485 | mock_sc.side_effect = exception.IronicException('test-error') | ||
530 | 486 | @@ -1171,7 +1182,7 @@ class ManagerTestCase(base.DbTestCase): | ||
531 | 487 | def test_enable_console_already_enabled(self): | ||
532 | 488 | ndict = utils.get_test_node(driver='fake', console_enabled=True) | ||
533 | 489 | node = self.dbapi.create_node(ndict) | ||
534 | 490 | - self.service.start() | ||
535 | 491 | + self._start_service() | ||
536 | 492 | with mock.patch.object(self.driver.console, 'start_console') \ | ||
537 | 493 | as mock_sc: | ||
538 | 494 | self.service.set_console_mode(self.context, node.uuid, True) | ||
539 | 495 | @@ -1181,7 +1192,7 @@ class ManagerTestCase(base.DbTestCase): | ||
540 | 496 | def test_disable_console_already_disabled(self): | ||
541 | 497 | ndict = utils.get_test_node(driver='fake', console_enabled=False) | ||
542 | 498 | node = self.dbapi.create_node(ndict) | ||
543 | 499 | - self.service.start() | ||
544 | 500 | + self._start_service() | ||
545 | 501 | with mock.patch.object(self.driver.console, 'stop_console') \ | ||
546 | 502 | as mock_sc: | ||
547 | 503 | self.service.set_console_mode(self.context, node.uuid, False) | ||
548 | 504 | @@ -1231,7 +1242,7 @@ class ManagerTestCase(base.DbTestCase): | ||
549 | 505 | self.assertEqual(exc._exc_info[0], exception.InvalidParameterValue) | ||
550 | 506 | |||
551 | 507 | def test_destroy_node_power_on(self): | ||
552 | 508 | - self.service.start() | ||
553 | 509 | + self._start_service() | ||
554 | 510 | ndict = utils.get_test_node(power_state=states.POWER_ON) | ||
555 | 511 | node = self.dbapi.create_node(ndict) | ||
556 | 512 | |||
557 | 513 | @@ -1245,7 +1256,7 @@ class ManagerTestCase(base.DbTestCase): | ||
558 | 514 | self.assertIsNone(node.reservation) | ||
559 | 515 | |||
560 | 516 | def test_destroy_node_power_off(self): | ||
561 | 517 | - self.service.start() | ||
562 | 518 | + self._start_service() | ||
563 | 519 | ndict = utils.get_test_node(power_state=states.POWER_OFF) | ||
564 | 520 | node = self.dbapi.create_node(ndict) | ||
565 | 521 | self.service.destroy_node(self.context, node.uuid) | ||
566 | 522 | -- | ||
567 | 523 | 1.9.1 | ||
568 | 524 | |||
569 | 0 | 525 | ||
570 | === modified file 'debian/patches/series' | |||
571 | --- debian/patches/series 2014-04-01 22:53:05 +0000 | |||
572 | +++ debian/patches/series 2014-04-15 23:19:36 +0000 | |||
573 | @@ -1,1 +1,2 @@ | |||
574 | 1 | set_logdir.patch | 1 | set_logdir.patch |
575 | 2 | cleanup_conductors_in_tests.patch |
ironic is much newer in wily, and for trusty we probably won't update to newer upstream versions any more, so this seems obsolete. If this is still relevant, please reopen.