[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [stem/master] Ensure port used by process tests is unused
commit d37810010f4f587dbb848e9ac69ab9f9472e47dd
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
Date: Fri Jul 14 12:40:47 2017 -0700
Ensure port used by process tests is unused
When running in a loop catalyst occasionally runs into...
OSError: Process terminated: Failed to bind one of the listener ports.
https://trac.torproject.org/projects/tor/ticket/22902
First guess is that maybe multiple tests pick the same random port, or
something that's coincidently being used by the system. Tried to use socket's
connect_ex() for this...
https://stackoverflow.com/questions/19196105/python-how-to-check-if-a-network-port-is-open-on-linux
But doing so causes exactly the binding failures we're attempting to avoid
(even with a sleep after closing). Weird. Just checking for process instead.
---
test/integ/process.py | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/test/integ/process.py b/test/integ/process.py
index 70f414c..dea0b4c 100644
--- a/test/integ/process.py
+++ b/test/integ/process.py
@@ -2,6 +2,8 @@
Tests the stem.process functions with various use cases.
"""
+from __future__ import absolute_import
+
import binascii
import hashlib
import os
@@ -45,7 +47,11 @@ DataDirectory %s
def random_port():
- return str(random.randint(1024, 65535))
+ while True:
+ port = random.randint(1024, 65535)
+
+ if stem.util.system.pid_by_port(port) is None:
+ return str(port)
@contextmanager
@@ -552,8 +558,8 @@ class TestProcess(unittest.TestCase):
except OSError:
runtime = time.time() - start_time
- if not (runtime > 0.05 and runtime < 1):
- raise AssertionError('Test should have taken 0.05-1 seconds, took %0.1f instead' % runtime)
+ if not (runtime > 0.05 and runtime < 3):
+ raise AssertionError('Test should have taken 0.05-3 seconds, took %0.1f instead' % runtime)
@asynchronous
def test_take_ownership_via_pid(tor_cmd):
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits