commit 435b980c62aa7bc68323de90911c9dbe4cb37b6d Author: Damian Johnson atagar@torproject.org Date: Thu Jul 23 15:37:07 2020 -0700
Tor added default IPv6 ORPort
Tor recently changed its ORPort behavior so it provides both an IPv4 and IPv6 endpoint by default...
https://github.com/torproject/stem/issues/70
Adjusting our tests. Our get_ports() method now provides a set rather than a list so we don't return duplicate values. --- stem/control.py | 8 ++++---- test/integ/control/controller.py | 18 +++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/stem/control.py b/stem/control.py index 7b90eed0..47b8a37c 100644 --- a/stem/control.py +++ b/stem/control.py @@ -271,7 +271,7 @@ import stem.version from stem import UNDEFINED, CircStatus, Signal from stem.util import Synchronous, log from types import TracebackType -from typing import Any, AsyncIterator, Awaitable, Callable, Dict, List, Mapping, Optional, Sequence, Tuple, Type, Union +from typing import Any, AsyncIterator, Awaitable, Callable, Dict, List, Mapping, Optional, Sequence, Set, Tuple, Type, Union
# When closing the controller we attempt to finish processing enqueued events, # but if it takes longer than this we terminate. @@ -1352,7 +1352,7 @@ class Controller(BaseController): return policy
@with_default() - async def get_ports(self, listener_type: 'stem.control.Listener', default: Any = UNDEFINED) -> Sequence[int]: + async def get_ports(self, listener_type: 'stem.control.Listener', default: Any = UNDEFINED) -> Set[int]: """ get_ports(listener_type, default = UNDEFINED)
@@ -1366,7 +1366,7 @@ class Controller(BaseController): :param listener_type: connection type being handled by the ports we return :param default: response if the query fails
- :returns: **list** of **ints** for the local ports where tor handles + :returns: **set** of **ints** for the local ports where tor handles connections of the given type
:raises: :class:`stem.ControllerError` if unable to determine the ports @@ -1385,7 +1385,7 @@ class Controller(BaseController): log.info("Request for %s ports got an address that's neither IPv4 or IPv6: %s" % (listener_type, address)) return False
- return [port for (addr, port) in (await self.get_listeners(listener_type)) if is_localhost(addr)] + return set([port for (addr, port) in (await self.get_listeners(listener_type)) if is_localhost(addr)])
@with_default() async def get_listeners(self, listener_type: 'stem.control.Listener', default: Any = UNDEFINED) -> Sequence[Tuple[str, int]]: diff --git a/test/integ/control/controller.py b/test/integ/control/controller.py index b539fc0e..40e036a7 100644 --- a/test/integ/control/controller.py +++ b/test/integ/control/controller.py @@ -951,17 +951,17 @@ class TestController(unittest.TestCase): runner = test.runner.get_runner()
async with await runner.get_tor_controller() as controller: - self.assertEqual([test.runner.ORPORT], await controller.get_ports(Listener.OR)) - self.assertEqual([], await controller.get_ports(Listener.DIR)) - self.assertEqual([test.runner.SOCKS_PORT], await controller.get_ports(Listener.SOCKS)) - self.assertEqual([], await controller.get_ports(Listener.TRANS)) - self.assertEqual([], await controller.get_ports(Listener.NATD)) - self.assertEqual([], await controller.get_ports(Listener.DNS)) + self.assertEqual(set([test.runner.ORPORT]), await controller.get_ports(Listener.OR)) + self.assertEqual(set(), await controller.get_ports(Listener.DIR)) + self.assertEqual(set([test.runner.SOCKS_PORT]), await controller.get_ports(Listener.SOCKS)) + self.assertEqual(set(), await controller.get_ports(Listener.TRANS)) + self.assertEqual(set(), await controller.get_ports(Listener.NATD)) + self.assertEqual(set(), await controller.get_ports(Listener.DNS))
if test.runner.Torrc.PORT in runner.get_options(): - self.assertEqual([test.runner.CONTROL_PORT], await controller.get_ports(Listener.CONTROL)) + self.assertEqual(set([test.runner.CONTROL_PORT]), await controller.get_ports(Listener.CONTROL)) else: - self.assertEqual([], await controller.get_ports(Listener.CONTROL)) + self.assertEqual(set(), await controller.get_ports(Listener.CONTROL))
@test.require.controller @async_test @@ -973,7 +973,7 @@ class TestController(unittest.TestCase): runner = test.runner.get_runner()
async with await runner.get_tor_controller() as controller: - self.assertEqual([('0.0.0.0', test.runner.ORPORT)], await controller.get_listeners(Listener.OR)) + self.assertEqual([('0.0.0.0', test.runner.ORPORT), ('::', test.runner.ORPORT)], await controller.get_listeners(Listener.OR)) self.assertEqual([], await controller.get_listeners(Listener.DIR)) self.assertEqual([('127.0.0.1', test.runner.SOCKS_PORT)], await controller.get_listeners(Listener.SOCKS)) self.assertEqual([], await controller.get_listeners(Listener.TRANS))
tor-commits@lists.torproject.org