Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 def setupClass(cls):
     if daemons_running_externally():
         raise SkipTest('Too hard to control daemon process')
Ejemplo n.º 9
0
 def setupClass(cls):
     if daemons_running_externally():
         raise SkipTest('Too hard to control daemon process')