def test_power_quiescent_period_statefulness_not_elapsed(self): if daemons_running_externally(): raise SkipTest('cannot examine logs of remote beaker-provision') provision_process, = [p for p in processes if p.name == \ 'beaker-provision'] # Initial lookup of this system will reveal no state, so will delay # for the whole quiescent period try: provision_process.start_output_capture() with session.begin(): system = data_setup.create_system(lab_controller=self.get_lc()) system.power.power_type = PowerType.lazy_create(name=u'dummy') system.power.power_quiescent_period = 1 system.power.power_id = u'' # make power script not sleep system.power.delay_until = None system.action_power(action=u'off', service=u'testdata') wait_for_commands_to_finish(system, timeout=10) finally: provision_output = provision_process.finish_output_capture() self.assertIn('Entering quiescent period, delaying 1 seconds for ' 'command %s' % system.command_queue[0].id, provision_output) # Increase the quiescent period, to ensure we enter it try: provision_process.start_output_capture() with session.begin(): system = System.by_id(system.id, User.by_user_name('admin')) system.power.power_quiescent_period = 10 system.action_power(action=u'on', service=u'testdata') wait_for_commands_to_finish(system, timeout=15) finally: provision_output = provision_process.finish_output_capture() self.assertIn('Entering quiescent period', provision_output)
def test_power_quiescent_period_statefulness_not_elapsed(self): if daemons_running_externally(): raise SkipTest('cannot examine logs of remote beaker-provision') provision_process, = [p for p in processes if p.name == \ 'beaker-provision'] # Initial lookup of this system will reveal no state, so will delay # for the whole quiescent period try: provision_process.start_output_capture() with session.begin(): system = data_setup.create_system(lab_controller=self.get_lc()) system.power.power_type = PowerType.lazy_create(name=u'dummy') system.power.power_quiescent_period = 1 system.power.power_id = u'' # make power script not sleep system.power.delay_until = None system.action_power(action=u'off', service=u'testdata') wait_for_commands_to_finish(system, timeout=10) finally: provision_output = provision_process.finish_output_capture() self.assertIn('Entering quiescent period, delaying 1 seconds for ' 'command %s' % system.command_queue[0].id, provision_output) # Increase the quiescent period, to ensure we enter it try: provision_process.start_output_capture() with session.begin(): system = System.by_id(system.id, User.by_user_name('admin')) system.power.power_quiescent_period = 10 system.action_power(action=u'on', service=u'testdata') wait_for_commands_to_finish(system, timeout=15) finally: provision_output = provision_process.finish_output_capture() self.assertIn('Entering quiescent period', provision_output)
def test_power_passwords_are_not_logged(self): if daemons_running_externally(): raise SkipTest('cannot examine logs of remote beaker-provision') provision_process, = [ p for p in processes if p.name == 'beaker-provision' ] try: provision_process.start_output_capture() with session.begin(): system = data_setup.create_system(lab_controller=self.get_lc()) self.addCleanup(self.cleanup_system, system) system.power.power_type = PowerType.lazy_create(name=u'dummy') system.power.power_id = u'' # make power script not sleep system.power.power_passwd = u'dontleakmebro' system.action_power(action=u'off', service=u'testdata') wait_for_commands_to_finish(system, timeout=2 * get_conf().get('SLEEP_TIME')) finally: provision_output = provision_process.finish_output_capture() self.assert_('Handling command' in provision_output, provision_output) self.assert_('Launching power script' in provision_output, provision_output) self.assert_(system.power.power_passwd not in provision_output, provision_output)
def test_power_quiescent_period(self): # Test that we do in fact wait for the quiescent period to pass # before running a command if daemons_running_externally(): raise SkipTest('cannot examine logs of remote beaker-provision') provision_process, = [p for p in processes if p.name == \ 'beaker-provision'] # These times are needed to guarantee that we are actually waiting for # the quiescent period and not waiting for another poll loop quiescent_period = get_conf().get('SLEEP_TIME') * 3 timeout = get_conf().get('SLEEP_TIME') * 2 try: provision_process.start_output_capture() with session.begin(): system = data_setup.create_system(lab_controller=self.get_lc()) system.power.power_type = PowerType.lazy_create(name=u'dummy') system.power.power_quiescent_period = quiescent_period system.power.power_id = u'' # make power script not sleep system.power.delay_until = None system.action_power(action=u'off', service=u'testdata') wait_for_commands_completed(system, timeout=timeout) self.fail('The quiescent period is not being respected') except AssertionError: # wait_for_commands() should timeout if the quiescent period is #respected pass finally: provision_output = provision_process.finish_output_capture() # The initial command seen for a system will always wait for the full # quiescent period self.assertIn('Entering quiescent period, delaying %s seconds for ' 'command %s' % (quiescent_period, system.command_queue[0].id), provision_output)
def test_power_passwords_are_not_logged(self): if daemons_running_externally(): raise SkipTest('cannot examine logs of remote beaker-provision') provision_process, = [p for p in processes if p.name == 'beaker-provision'] try: provision_process.start_output_capture() with session.begin(): system = data_setup.create_system(lab_controller=self.get_lc()) system.power.power_type = PowerType.lazy_create(name=u'dummy') system.power.power_id = u'' # make power script not sleep system.power.power_passwd = u'dontleakmebro' system.action_power(action=u'off', service=u'testdata') wait_for_commands_to_finish(system, timeout=2 * get_conf().get('SLEEP_TIME')) finally: provision_output = provision_process.finish_output_capture() self.assert_('Handling command' in provision_output, provision_output) self.assert_('Launching power script' in provision_output, provision_output) self.assert_(system.power.power_passwd not in provision_output, provision_output)
def test_blank_power_passwords(self): if daemons_running_externally(): raise SkipTest('cannot examine logs of remote beaker-provision') provision_process, = [p for p in processes if p.name == 'beaker-provision'] try: provision_process.start_output_capture() with session.begin(): system = data_setup.create_system(lab_controller=self.get_lc()) system.power.address = None system.power.power_type = PowerType.lazy_create(name=u'dummy') system.power.power_id = u'' # make power script not sleep system.power.power_passwd = None system.action_power(action=u'off', service=u'testdata') wait_for_commands_to_finish(system, timeout=2 * get_conf().get('SLEEP_TIME')) finally: provision_output = provision_process.finish_output_capture() # The None type is passed in from the db. Later in the code it is converted # to the empty string, as it should be. self.assertIn("'passwd': None", provision_output, provision_output)
def test_blank_power_passwords(self): if daemons_running_externally(): raise SkipTest('cannot examine logs of remote beaker-provision') provision_process, = [p for p in processes if p.name == 'beaker-provision'] try: provision_process.start_output_capture() with session.begin(): system = data_setup.create_system(lab_controller=self.get_lc()) system.power.address = None system.power.power_type = PowerType.lazy_create(name=u'dummy') system.power.power_id = u'' # make power script not sleep system.power.power_passwd = None system.action_power(action=u'off', service=u'testdata') wait_for_commands_to_finish(system, timeout=2 * get_conf().get('SLEEP_TIME')) finally: provision_output = provision_process.finish_output_capture() # The None type is passed in from the db. Later in the code it is converted # to the empty string, as it should be. self.assertIn("'passwd': None", provision_output, provision_output)
def setupClass(cls): if daemons_running_externally(): raise SkipTest('Too hard to control daemon process')
def setupClass(cls): if daemons_running_externally(): raise SkipTest('Too hard to control daemon process')