[stem/master] Testing each connection resolver separately

commit f3406f8058e6183e5029e309d4b6ecba23e32b2a Author: Damian Johnson <atagar@torproject.org> Date: Sun Dec 7 12:19:57 2014 -0800 Testing each connection resolver separately On Gentoo test_get_connections fails and, while that's all well and good, I can't tell from this single failure if just proc is broken or all linux connection resolvers. Testing each resolver separately so we'll be able to tell in the future. --- test/integ/util/connection.py | 61 +++++++++++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 11 deletions(-) diff --git a/test/integ/util/connection.py b/test/integ/util/connection.py index 589026a..9bc6591 100644 --- a/test/integ/util/connection.py +++ b/test/integ/util/connection.py @@ -7,27 +7,66 @@ import unittest import test.runner -from stem.util.connection import get_connections, system_resolvers +from stem.util.connection import Resolver, get_connections, system_resolvers class TestConnection(unittest.TestCase): - def test_get_connections(self): + def check_resolver(self, resolver): runner = test.runner.get_runner() if test.runner.Torrc.PORT not in runner.get_options(): test.runner.skip(self, '(no control port)') return - elif not test.runner.get_runner().is_ptraceable(): + elif not runner.is_ptraceable(): test.runner.skip(self, '(DisableDebuggerAttachment is set)') return + elif resolver not in system_resolvers(): + test.runner.skip(self, '(resolver unavailable on this platform)') + return + + with runner.get_tor_socket(): + connections = get_connections(resolver, process_pid = runner.get_pid()) + + for conn in connections: + if conn.local_address == '127.0.0.1' and conn.local_port == test.runner.CONTROL_PORT: + return + + self.fail('Unable to find localhost connection with %s:\n%s' % (resolver, '\n'.join(connections))) + + def test_get_connections_by_proc(self): + self.check_resolver(Resolver.PROC) + + def test_get_connections_by_netstat(self): + self.check_resolver(Resolver.NETSTAT) + + def test_get_connections_by_ss(self): + self.check_resolver(Resolver.SS) + + def test_get_connections_by_lsof(self): + self.check_resolver(Resolver.LSOF) + + def test_get_connections_by_sockstat(self): + self.check_resolver(Resolver.SOCKSTAT) + + def test_get_connections_by_bsd_sockstat(self): + self.check_resolver(Resolver.BSD_SOCKSTAT) + + def test_get_connections_by_bsd_procstat(self): + self.check_resolver(Resolver.BSD_PROCSTAT) - for resolver in system_resolvers(): - with runner.get_tor_socket(): - tor_pid = test.runner.get_runner().get_pid() - connections = get_connections(resolver, process_pid = tor_pid) + def test_that_we_are_checking_all_resolvers(self): + # Quick check to confirm that if we add a new Resolver, we include a test + # for it here. - for conn in connections: - if conn.local_address == '127.0.0.1' and conn.local_port == test.runner.CONTROL_PORT: - return + recognized_resolvers = ( + Resolver.PROC, + Resolver.NETSTAT, + Resolver.SS, + Resolver.LSOF, + Resolver.SOCKSTAT, + Resolver.BSD_SOCKSTAT, + Resolver.BSD_PROCSTAT, + ) - self.fail('Unable to find localhost connection with %s:\n%s' % (resolver, '\n'.join(connections))) + for resolver in Resolver: + self.assertTrue(resolver in recognized_resolvers)
participants (1)
-
atagar@torproject.org