[tor-commits] [tor/master] Pick random ports in test_rebind.py

nickm at torproject.org nickm at torproject.org
Wed Sep 12 13:06:41 UTC 2018


commit 4811869d7a603dfb6cc9881bb5aae9815ceab4e5
Author: rl1987 <rl1987 at sdf.lonestar.org>
Date:   Sat Jul 21 12:13:58 2018 +0300

    Pick random ports in test_rebind.py
---
 src/test/test_rebind.py | 33 +++++++++++++++++++++++++++------
 1 file changed, 27 insertions(+), 6 deletions(-)

diff --git a/src/test/test_rebind.py b/src/test/test_rebind.py
index 4a132411b..9472d5cef 100644
--- a/src/test/test_rebind.py
+++ b/src/test/test_rebind.py
@@ -5,10 +5,11 @@ import subprocess
 import socket
 import os
 import time
+import random
 
 def try_connecting_to_socksport():
     socks_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-    if socks_socket.connect_ex(('127.0.0.1', 9052)):
+    if socks_socket.connect_ex(('127.0.0.1', socks_port)):
         tor_process.terminate()
         print('FAIL')
         sys.exit('Cannot connect to SOCKSPort')
@@ -20,14 +21,34 @@ def wait_for_log(s):
         if s in l:
             return
 
+def pick_random_port():
+    port = 0
+    random.seed()
+
+    for i in xrange(8):
+        port = random.randint(10000, 60000)
+        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        if s.connect_ex(('127.0.0.1', port)) == 0:
+            s.close()
+        else:
+            break
+
+    return port
+
+control_port = pick_random_port()
+socks_port = pick_random_port()
+
+assert control_port != 0
+assert socks_port != 0
+
 if not os.path.exists(sys.argv[1]):
     sys.exit('ERROR: cannot find tor at %s' % sys.argv[1])
 
 tor_path = sys.argv[1]
 
 tor_process = subprocess.Popen([tor_path,
-                               '-ControlPort', '127.0.0.1:9053', 
-                               '-SOCKSPort', '127.0.0.1:9052',
+                               '-ControlPort', '127.0.0.1:{}'.format(control_port),
+                               '-SOCKSPort', '127.0.0.1:{}'.format(socks_port),
                                '-FetchServerDescriptors', '0'],
                                stdout=subprocess.PIPE,
                                stderr=subprocess.PIPE)
@@ -43,18 +64,18 @@ wait_for_log('Opened Control listener on')
 try_connecting_to_socksport()
 
 control_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-if control_socket.connect_ex(('127.0.0.1', 9053)):
+if control_socket.connect_ex(('127.0.0.1', control_port)):
     tor_process.terminate()
     print('FAIL')
     sys.exit('Cannot connect to ControlPort')
 
 control_socket.sendall('AUTHENTICATE \r\n')
-control_socket.sendall('SETCONF SOCKSPort=0.0.0.0:9052\r\n')
+control_socket.sendall('SETCONF SOCKSPort=0.0.0.0:{}\r\n'.format(socks_port))
 wait_for_log('Opened Socks listener')
 
 try_connecting_to_socksport()
 
-control_socket.sendall('SETCONF SOCKSPort=127.0.0.1:9052\r\n')
+control_socket.sendall('SETCONF SOCKSPort=127.0.0.1:{}\r\n'.format(socks_port))
 wait_for_log('Opened Socks listener')
 
 try_connecting_to_socksport()





More information about the tor-commits mailing list