aboutsummaryrefslogtreecommitdiff
path: root/src/test/test_rebind.py
diff options
context:
space:
mode:
authorrl1987 <rl1987@sdf.lonestar.org>2018-05-17 16:01:52 +0200
committerNick Mathewson <nickm@torproject.org>2018-09-12 09:06:16 -0400
commit762c27b907192d79fbef77caee8a8b457dc7ca4a (patch)
tree576c02d07f20ba6f1c3e5646c0ef1b75c8a1f572 /src/test/test_rebind.py
parentfbd50f599408ae5d5e7bd7d8d63b23b9039524c7 (diff)
downloadtor-762c27b907192d79fbef77caee8a8b457dc7ca4a.tar.gz
tor-762c27b907192d79fbef77caee8a8b457dc7ca4a.zip
Integration test for socket rebinding
squash! Integration test for socket rebinding
Diffstat (limited to 'src/test/test_rebind.py')
-rw-r--r--src/test/test_rebind.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/test/test_rebind.py b/src/test/test_rebind.py
new file mode 100644
index 0000000000..582e496012
--- /dev/null
+++ b/src/test/test_rebind.py
@@ -0,0 +1,64 @@
+import sys
+import subprocess
+import socket
+import os
+import time
+
+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)):
+ tor_process.terminate()
+ print 'FAIL'
+ sys.exit('Cannot connect to SOCKSPort')
+ socks_socket.close()
+
+def wait_for_log(s):
+ while True:
+ l = tor_process.stdout.readline()
+ if s in l:
+ return
+
+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',
+ '-FetchServerDescriptors', '0'],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+
+if tor_process == None:
+ sys.exit('ERROR: running tor failed')
+
+if len(sys.argv) < 2:
+ sys.exit('Usage: %s <path-to-tor>' % sys.argv[0])
+
+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)):
+ 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')
+wait_for_log('Opened Socks listener')
+
+try_connecting_to_socksport()
+
+control_socket.sendall('SETCONF SOCKSPort=127.0.0.1:9052\r\n')
+wait_for_log('Opened Socks listener')
+
+try_connecting_to_socksport()
+
+control_socket.sendall('SIGNAL HALT\r\n')
+
+time.sleep(0.1)
+print 'OK'
+tor_process.terminate()