def test_screen(self): try: # Launch some screens screen_kill('my_1st_screen', fail=False) screen_kill('my_2nd_screen', fail=False) self.equal(len(screen_launch('my_1st_screen', 'top', fail=False)['stderr']), 0) self.equal(len(screen_launch('my_2nd_screen', 'top', fail=False)['stderr']), 0) self.equal(len(screen_launch('my_2nd_screen', 'top', fail=False)['stderr']), 0) # List the launched screen sessions screens = screen_list(name='my_1st_screen') self.greater_equal(len(screens), 1) self.true(screens[0].endswith('my_1st_screen')) screens = screen_list(name='my_2nd_screen') self.greater_equal(len(screens), 1) self.true(screens[0].endswith('my_2nd_screen')) finally: # Cleanup log = Mock() screen_kill(name='my_1st_screen', log=log) screen_kill(name='my_2nd_screen', log=log) if log.call_args_list: validate_list(log.call_args_list, [ r"call\(u*'Execute screen -ls my_1st_screen'\)", r"call\(u*'Attempt 1 out of 1: Failed'\)", r"call\(u*'Execute screen -S \d+\.my_1st_screen -X quit'\)", r"call\(u*'Execute screen -ls my_2nd_screen'\)", r"call\(u*'Attempt 1 out of 1: Failed'\)", r"call\(u*'Execute screen -S \d+\.my_2nd_screen -X quit'\)", r"call\(u*'Execute screen -S \d+\.my_2nd_screen -X quit'\)" ])
def test_retry_missing_binary_no_retry(self): log = Mock() with self.raises(OSError): cmd('hfuejnvwqkdivengz', log=log, tries=5) validate_list(log.call_args_list, [ r"call\(u*'Execute hfuejnvwqkdivengz'\)", r"call\(FileNotFoundError.*\)" if six.PY3 else r"call\(OSError.*\)" ])
def test_retry_no_success(self): log = Mock() cmd('ls hfuejnvwqkdivengz', log=log, fail=False, tries=5, delay_min=0.0, delay_max=0.95) validate_list(log.call_args_list, [ r"call\(u*'Execute ls hfuejnvwqkdivengz'\)", r"call\(u*'Attempt 1 out of 5: Will retry in 0\.[0-9]+ seconds'\)", r"call\(u*'Attempt 2 out of 5: Will retry in 0\.[0-9]+ seconds'\)", r"call\(u*'Attempt 3 out of 5: Will retry in 0\.[0-9]+ seconds'\)", r"call\(u*'Attempt 4 out of 5: Will retry in 0\.[0-9]+ seconds'\)", r"call\(u*'Attempt 5 out of 5: Failed'\)" ])
def test_cmd(self): log = Mock() cmd(['echo', 'it seem to work'], log=log) self.equal(cmd('cat missing_file', fail=False, log=log)['returncode'], 1) validate_list(log.call_args_list, [ r"call\(u*'Execute echo it seem to work'\)", r"call\(u*'Execute cat missing_file'\)", r"call\(u*'Attempt 1 out of 1: Failed'\)" ]) self.not_equal(cmd('my.funny.missing.script.sh', fail=False)['stderr'], '') result = cmd('cat {0}'.format(__file__)) # There are at least 30 lines in this source file ! self.greater(len(result['stdout'].splitlines()), 30)
def test_retry_first_try(self): log = Mock() cmd('ls', log=log, tries=5, delay_min=1, delay_max=1) validate_list(log.call_args_list, [r"call\(u*'Execute ls'\)"])