commit 20284e9785e408a85ea5e45aba0e4adc5cc77dc7 Author: Damian Johnson atagar@torproject.org Date: Sun Jan 22 14:12:56 2017 -0800
Allow float timeout when starting tor
Supporting floats for our timeout when spawning tor. This in turn lets us shave a couple more seconds off our test runtime. Trick is thanks to...
https://stackoverflow.com/questions/11901328/how-to-timeout-function-in-pyth... --- stem/process.py | 5 ++++- test/integ/process.py | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/stem/process.py b/stem/process.py index a9c8e76..08e0426 100644 --- a/stem/process.py +++ b/stem/process.py @@ -50,6 +50,9 @@ def launch_tor(tor_cmd = 'tor', args = None, torrc_path = None, completion_perce Note: The timeout argument does not work on Windows, and relies on the global state of the signal module.
+ .. versionchanged:: 1.6.0 + Allowing the timeout argument to be a float. + :param str tor_cmd: command for starting tor :param list args: additional arguments for tor :param str torrc_path: location of the torrc for us to use @@ -119,7 +122,7 @@ def launch_tor(tor_cmd = 'tor', args = None, torrc_path = None, completion_perce raise OSError('reached a %i second timeout without success' % timeout)
signal.signal(signal.SIGALRM, timeout_handler) - signal.alarm(timeout) + signal.setitimer(signal.ITIMER_REAL, timeout)
bootstrap_line = re.compile('Bootstrapped ([0-9]+)%: ') problem_line = re.compile('[(warn|err)] (.*)$') diff --git a/test/integ/process.py b/test/integ/process.py index 9e13be5..b082d0b 100644 --- a/test/integ/process.py +++ b/test/integ/process.py @@ -378,11 +378,11 @@ class TestProcess(unittest.TestCase): runner = test.runner.get_runner() start_time = time.time() config = {'SocksPort': '2777', 'DataDirectory': self.data_directory} - self.assertRaises(OSError, stem.process.launch_tor_with_config, config, runner.get_tor_command(), 100, None, 2) + self.assertRaises(OSError, stem.process.launch_tor_with_config, config, runner.get_tor_command(), 100, None, 0.05) runtime = time.time() - start_time
- if not (runtime > 2 and runtime < 3): - self.fail('Test should have taken 2-3 seconds, took %0.1f instead' % runtime) + if not (runtime > 0.05 and runtime < 1): + self.fail('Test should have taken 0.05-1 seconds, took %0.1f instead' % runtime)
@require_version(stem.version.Requirement.TAKEOWNERSHIP) @only_run_once