323
323
self.assertThat(markNodeBroken, MockNotCalled())
326
def test_change_power_state_doesnt_retry_if_query_returns_unknown(self):
327
system_id = factory.make_name('system_id')
328
hostname = factory.make_name('hostname')
329
power_type = random.choice(power.QUERY_POWER_TYPES)
330
power_change = random.choice(['on', 'off'])
332
factory.make_name('context-key'): factory.make_name('context-val')
334
self.patch(power, 'pause')
335
power.power_action_registry[system_id] = power_change
336
# Patch the power action utility so that it says the node is
337
# in the required power state.
338
power_action, execute = patch_power_action(
339
self, return_value="unknown")
340
markNodeBroken = yield self.patch_rpc_methods()
342
yield power.change_power_state(
343
system_id, hostname, power_type, power_change, context)
347
# One call to change the power state.
348
call(power_change=power_change, **context),
349
# One call to query the power state.
350
call(power_change='query', **context),
353
# The node hasn't been marked broken.
354
self.assertThat(markNodeBroken, MockNotCalled())
326
357
def test_change_power_state_marks_the_node_broken_if_failure(self):
327
358
system_id = factory.make_name('system_id')
328
359
hostname = factory.make_name('hostname')
549
580
power_state_update, MockCalledOnceWith(system_id, power_state))
582
def test_get_power_state_changes_power_state_if_unknown(self):
583
system_id = factory.make_name('system_id')
584
hostname = factory.make_name('hostname')
585
power_state = "unknown"
586
power_type = random.choice(power.QUERY_POWER_TYPES)
588
factory.make_name('context-key'): factory.make_name('context-val')
590
self.patch(power, 'pause')
591
power_state_update = self.patch_autospec(power, 'power_state_update')
594
power_action, execute = patch_power_action(
595
self, return_value=power_state)
596
_, _, io = self.patch_rpc_methods()
598
d = power.get_power_state(
599
system_id, hostname, power_type, context)
601
self.assertEqual(power_state, extract_result(d))
603
power_state_update, MockCalledOnceWith(system_id, power_state))
551
605
def test_get_power_state_pauses_inbetween_retries(self):
552
606
system_id = factory.make_name('system_id')
553
607
hostname = factory.make_name('hostname')