[tor-commits] [flashproxy/master] fix a bug in get_reg and fix tests to be able to expose that bug

infinity0 at torproject.org infinity0 at torproject.org
Mon Oct 28 14:47:41 UTC 2013


commit f644c0e11362b122bee5e3df6a229057b03e5fb0
Author: Ximin Luo <infinity0 at gmx.com>
Date:   Mon Oct 7 12:33:04 2013 +0100

    fix a bug in get_reg and fix tests to be able to expose that bug
---
 facilitator/fac.py           |   10 ++++++----
 facilitator/facilitator-test |   25 +++++++++++++------------
 2 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/facilitator/fac.py b/facilitator/fac.py
index 5e1737a..74ce27d 100644
--- a/facilitator/fac.py
+++ b/facilitator/fac.py
@@ -253,6 +253,8 @@ def transact(f, command, *params):
 def put_reg(facilitator_addr, client_addr, transport_chain, registrant_addr=None):
     """Send a registration to the facilitator using a one-time socket. Returns
     true iff the command was successful."""
+    # TODO(infinity0): replace "transport_chain" with better terminology, e.g.
+    # transport_pair
     f = fac_socket(facilitator_addr)
     params = [("CLIENT", format_addr(client_addr))]
     params.append(("TRANSPORT_CHAIN", transport_chain))
@@ -275,18 +277,18 @@ def get_reg(facilitator_addr, proxy_addr, transport_list):
     "relay-<transport>" if successful, or a dict with the key "client"
     mapped to the value "" if there are no registrations available for
     proxy_addr. Raises an exception otherwise."""
+    # TODO(infinity0): replace "transport_list" with better terminology, e.g.
+    # transport_suffix_list
     f = fac_socket(facilitator_addr)
 
     # Form a list (in transact() format) with the transports that we
     # should send to the facilitator.  Then pass that list to the
     # transact() function.
     # For example, TRANSPORT=obfs2 TRANSPORT=obfs3.
-    transports = []
-    for transport in transport_list:
-        transports += ("TRANSPORT", transport)
+    transports = [("TRANSPORT", transport) for transport in transport_list]
 
     try:
-        command, params = transact(f, "GET", ("FROM", format_addr(proxy_addr)), transports)
+        command, params = transact(f, "GET", ("FROM", format_addr(proxy_addr)), *transports)
     finally:
         f.close()
     response = {}
diff --git a/facilitator/facilitator-test b/facilitator/facilitator-test
index bd4894e..6b3b0f1 100755
--- a/facilitator/facilitator-test
+++ b/facilitator/facilitator-test
@@ -13,7 +13,8 @@ import fac
 FACILITATOR_HOST = "127.0.0.1"
 FACILITATOR_PORT = 39002 # diff port to not conflict with production service
 FACILITATOR_ADDR = (FACILITATOR_HOST, FACILITATOR_PORT)
-WS_TRANSPORT = ("websocket",)
+CLIENT_TP = "websocket"
+PROXY_TPS = ["websocket", "webrtc"]
 
 def gimme_socket(host, port):
     addrinfo = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM, socket.IPPROTO_TCP)[0]
@@ -81,34 +82,34 @@ class FacilitatorProcTest(unittest.TestCase):
 
     def test_af_v4_v4(self):
         """Test that IPv4 proxies can get IPv4 clients."""
-        fac.put_reg(FACILITATOR_ADDR, self.IPV4_CLIENT_ADDR, WS_TRANSPORT)
-        fac.put_reg(FACILITATOR_ADDR, self.IPV6_CLIENT_ADDR, WS_TRANSPORT)
-        reg = fac.get_reg(FACILITATOR_ADDR, self.IPV4_PROXY_ADDR, WS_TRANSPORT)
+        fac.put_reg(FACILITATOR_ADDR, self.IPV4_CLIENT_ADDR, CLIENT_TP)
+        fac.put_reg(FACILITATOR_ADDR, self.IPV6_CLIENT_ADDR, CLIENT_TP)
+        reg = fac.get_reg(FACILITATOR_ADDR, self.IPV4_PROXY_ADDR, PROXY_TPS)
         self.assertEqual(reg["client"], fac.format_addr(self.IPV4_CLIENT_ADDR))
 
     def test_af_v4_v6(self):
         """Test that IPv4 proxies do not get IPv6 clients."""
-        fac.put_reg(FACILITATOR_ADDR, self.IPV6_CLIENT_ADDR, WS_TRANSPORT)
-        reg = fac.get_reg(FACILITATOR_ADDR, self.IPV4_PROXY_ADDR, WS_TRANSPORT)
+        fac.put_reg(FACILITATOR_ADDR, self.IPV6_CLIENT_ADDR, CLIENT_TP)
+        reg = fac.get_reg(FACILITATOR_ADDR, self.IPV4_PROXY_ADDR, PROXY_TPS)
         self.assertEqual(reg["client"], "")
 
     def test_af_v6_v4(self):
         """Test that IPv6 proxies do not get IPv4 clients."""
-        fac.put_reg(FACILITATOR_ADDR, self.IPV4_CLIENT_ADDR, WS_TRANSPORT)
-        reg = fac.get_reg(FACILITATOR_ADDR, self.IPV6_PROXY_ADDR, WS_TRANSPORT)
+        fac.put_reg(FACILITATOR_ADDR, self.IPV4_CLIENT_ADDR, CLIENT_TP)
+        reg = fac.get_reg(FACILITATOR_ADDR, self.IPV6_PROXY_ADDR, PROXY_TPS)
         self.assertEqual(reg["client"], "")
 
     def test_af_v6_v6(self):
         """Test that IPv6 proxies can get IPv6 clients."""
-        fac.put_reg(FACILITATOR_ADDR, self.IPV4_CLIENT_ADDR, WS_TRANSPORT)
-        fac.put_reg(FACILITATOR_ADDR, self.IPV6_CLIENT_ADDR, WS_TRANSPORT)
-        reg = fac.get_reg(FACILITATOR_ADDR, self.IPV6_PROXY_ADDR, WS_TRANSPORT)
+        fac.put_reg(FACILITATOR_ADDR, self.IPV4_CLIENT_ADDR, CLIENT_TP)
+        fac.put_reg(FACILITATOR_ADDR, self.IPV6_CLIENT_ADDR, CLIENT_TP)
+        reg = fac.get_reg(FACILITATOR_ADDR, self.IPV6_PROXY_ADDR, PROXY_TPS)
         self.assertEqual(reg["client"], fac.format_addr(self.IPV6_CLIENT_ADDR))
 
     def test_check_back_in(self):
         """Test that facilitator responses contain a CHECK-BACK-IN key with a
         numeric value."""
-        reg = fac.get_reg(FACILITATOR_ADDR, self.IPV6_PROXY_ADDR, WS_TRANSPORT)
+        reg = fac.get_reg(FACILITATOR_ADDR, self.IPV6_PROXY_ADDR, PROXY_TPS)
         self.assertGreater(int(reg["check-back-in"]), 0)
 
 #     def test_same_proxy(self):





More information about the tor-commits mailing list