[tor-commits] [stem/master] Reverting __LeaveStreamsUnattached when test fails

atagar at torproject.org atagar at torproject.org
Mon Dec 31 03:13:07 UTC 2012


commit 11ef43c64479af8a9fe50b01e980d02234671977
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Dec 30 16:32:16 2012 -0800

    Reverting __LeaveStreamsUnattached when test fails
    
    Putting the cleanup activity for test_attachstream() into a finally block so we
    still do it when the test fails. We also forgot to remove the handle_circ
    listener.
---
 test/integ/control/controller.py |   58 +++++++++++++++++++------------------
 1 files changed, 30 insertions(+), 28 deletions(-)

diff --git a/test/integ/control/controller.py b/test/integ/control/controller.py
index 40c0f8c..f6fd147 100644
--- a/test/integ/control/controller.py
+++ b/test/integ/control/controller.py
@@ -722,42 +722,44 @@ class TestController(unittest.TestCase):
         if count > 10: break
   
   def test_attachstream(self):
-    
     if test.runner.require_control(self): return
     elif test.runner.require_online(self): return
     
-    runner = test.runner.get_runner()
+    def handle_streamcreated(stream):
+      if stream.status == "NEW":
+        controller.attach_stream(int(stream.id), int(circuit_id))
     
-    with runner.get_tor_controller() as controller:
+    circ_status_q = Queue()
+    def handle_circ(circuit):
+      circ_status_q.put(circuit)
+    
+    with test.runner.get_runner().get_tor_controller() as controller:
       controller.set_conf("__LeaveStreamsUnattached", "1")
-      socksport = int(controller.get_conf('SocksListenAddress').rsplit(':', 1)[1])
-      circ_status, circ_status_q = "", Queue()
-      
-      def handle_circ(circuit):
-        circ_status_q.put(circuit)
-      
-      def handle_streamcreated(stream):
-        if stream.status == "NEW":
-          controller.attach_stream(int(stream.id), int(circuit_id))
-      
       controller.add_event_listener(handle_circ, stem.control.EventType.CIRC)
-      while circ_status != "BUILT":
-        circuit_id = controller.new_circuit()
-        while not circ_status in ("BUILT", "FAILED"):
-          circ_event = circ_status_q.get()
-          if circ_event.id == circuit_id:
-            circ_status = circ_event.status
-      
       controller.add_event_listener(handle_streamcreated, stem.control.EventType.STREAM)
-      ip = test.util.external_ip('127.0.0.1', socksport)
-      exit_circuit = controller.get_circuit(circuit_id)
-      self.assertTrue(exit_circuit)
-      exit_ip = controller.get_network_status(exit_circuit.path[2][0]).address
-      
-      self.assertEquals(exit_ip, ip)
       
-      controller.remove_event_listener(handle_streamcreated)
-      controller.reset_conf("__LeaveStreamsUnattached")
+      try:
+        socksport = int(controller.get_conf('SocksListenAddress').rsplit(':', 1)[1])
+        circ_status = ""
+        
+        while circ_status != "BUILT":
+          circuit_id = controller.new_circuit()
+          
+          while not circ_status in ("BUILT", "FAILED"):
+            circ_event = circ_status_q.get()
+            if circ_event.id == circuit_id:
+              circ_status = circ_event.status
+        
+        ip = test.util.external_ip('127.0.0.1', socksport)
+        exit_circuit = controller.get_circuit(circuit_id)
+        self.assertTrue(exit_circuit)
+        exit_ip = controller.get_network_status(exit_circuit.path[2][0]).address
+        
+        self.assertEquals(exit_ip, ip)
+      finally:
+        controller.remove_event_listener(handle_circ)
+        controller.remove_event_listener(handle_streamcreated)
+        controller.reset_conf("__LeaveStreamsUnattached")
   
   def test_get_circuits(self):
     """





More information about the tor-commits mailing list