[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [stem/master] Integ tests for launch_tor
commit bfb3973049c72a9bd6de951566417eca7e132e70
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
Date: Fri May 11 09:28:51 2012 -0700
Integ tests for launch_tor
I've been leaving launch_tor untested because it was exercised in order to run
the integ tests and any tests involving it would take a long time, on the order
of a dozen seconds! Hey, it's a long time when you run this as often as I do...
It's an important function and has more options than what's exercised for
running integ tests so adding some tests for it.
---
run_tests.py | 2 +
test/integ/__init__.py | 2 +-
test/integ/process.py | 65 ++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 68 insertions(+), 1 deletions(-)
diff --git a/run_tests.py b/run_tests.py
index 9ee6042..818bfb8 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -37,6 +37,7 @@ import test.integ.descriptor.reader
import test.integ.descriptor.server_descriptor
import test.integ.util.conf
import test.integ.util.system
+import test.integ.process
import test.integ.version
import stem.util.conf
@@ -106,6 +107,7 @@ INTEG_TESTS = (
test.integ.descriptor.reader.TestDescriptorReader,
test.integ.descriptor.server_descriptor.TestServerDescriptor,
test.integ.version.TestVersion,
+ test.integ.process.TestProcess,
test.integ.socket.control_socket.TestControlSocket,
test.integ.socket.control_message.TestControlMessage,
test.integ.connection.protocolinfo.TestProtocolInfo,
diff --git a/test/integ/__init__.py b/test/integ/__init__.py
index a50d3f3..a9bb9ef 100644
--- a/test/integ/__init__.py
+++ b/test/integ/__init__.py
@@ -2,5 +2,5 @@
Integration tests for the stem library.
"""
-__all__ = ["connection", "control", "descriptor", "socket", "util", "version"]
+__all__ = ["connection", "control", "descriptor", "process", "socket", "util", "version"]
diff --git a/test/integ/process.py b/test/integ/process.py
new file mode 100644
index 0000000..b03fb27
--- /dev/null
+++ b/test/integ/process.py
@@ -0,0 +1,65 @@
+"""
+Tests the stem.process functions with various use cases.
+"""
+
+import time
+import unittest
+
+import stem.socket
+import stem.process
+import test.runner
+
+# Tests are target independent. Only run once even if there's multiple targets.
+
+RAN_TESTS = []
+
+class TestProcess(unittest.TestCase):
+ def test_launch_tor_options(self):
+ """
+ Runs launch_tor with options specified via the commandline rather than the
+ torrc.
+ """
+
+ test_name = 'test_launch_tor_options'
+ if test_name in RAN_TESTS: self.skipTest("(already ran)")
+
+ # Launch tor without a torrc, but with a control port. Confirms that this
+ # works by checking that we're still able to access the new instance.
+
+ tor_process = stem.process.launch_tor(
+ options = {'SocksPort': '2777', 'ControlPort': '2778'},
+ torrc_path = stem.process.NO_TORRC,
+ completion_percent = 5
+ )
+
+ control_socket = None
+ try:
+ control_socket = stem.socket.ControlPort(control_port = 2778)
+ runner = test.runner.get_runner()
+ stem.connection.authenticate(control_socket, chroot_path = runner.get_chroot())
+
+ # exercises the socket
+ control_socket.send("GETINFO version")
+ version_response = control_socket.recv()
+ self.assertEquals("version=%s\nOK" % runner.get_tor_version(), str(version_response))
+ finally:
+ if control_socket: control_socket.close()
+ tor_process.kill()
+
+ RAN_TESTS.append(test_name)
+
+ def test_launch_tor_with_timeout(self):
+ """
+ Runs launch_tor where it times out before completing.
+ """
+
+ test_name = 'test_launch_tor_with_timeout'
+ if test_name in RAN_TESTS: self.skipTest("(already ran)")
+
+ start_time = time.time()
+ self.assertRaises(OSError, stem.process.launch_tor, "tor", {'SocksPort': '2777'}, stem.process.NO_TORRC, 100, None, 2)
+ runtime = time.time() - start_time
+ self.assertTrue(runtime > 2 and runtime < 3)
+
+ RAN_TESTS.append(test_name)
+
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits