close(wait=True): wait for connection to be dropped
This commit is contained in:
parent
c10fd98167
commit
c88d6937c2
|
@ -290,8 +290,11 @@ class Basic(unittest.TestCase):
|
||||||
self.assertEqual(w._drop_connection.mock_calls, [])
|
self.assertEqual(w._drop_connection.mock_calls, [])
|
||||||
|
|
||||||
response(w, type=u"released")
|
response(w, type=u"released")
|
||||||
self.successResultOf(d)
|
|
||||||
self.assertEqual(w._drop_connection.mock_calls, [mock.call()])
|
self.assertEqual(w._drop_connection.mock_calls, [mock.call()])
|
||||||
|
self.assertNoResult(d)
|
||||||
|
|
||||||
|
w._ws_closed(True, None, None)
|
||||||
|
self.successResultOf(d)
|
||||||
|
|
||||||
def test_close_wait_2(self):
|
def test_close_wait_2(self):
|
||||||
# close after both claiming the nameplate and opening the mailbox
|
# close after both claiming the nameplate and opening the mailbox
|
||||||
|
@ -314,10 +317,14 @@ class Basic(unittest.TestCase):
|
||||||
response(w, type=u"released")
|
response(w, type=u"released")
|
||||||
self.assertNoResult(d)
|
self.assertNoResult(d)
|
||||||
self.assertEqual(w._drop_connection.mock_calls, [])
|
self.assertEqual(w._drop_connection.mock_calls, [])
|
||||||
|
|
||||||
response(w, type=u"closed")
|
response(w, type=u"closed")
|
||||||
self.successResultOf(d)
|
self.assertNoResult(d)
|
||||||
self.assertEqual(w._drop_connection.mock_calls, [mock.call()])
|
self.assertEqual(w._drop_connection.mock_calls, [mock.call()])
|
||||||
|
|
||||||
|
w._ws_closed(True, None, None)
|
||||||
|
self.successResultOf(d)
|
||||||
|
|
||||||
def test_close_wait_3(self):
|
def test_close_wait_3(self):
|
||||||
# close after claiming the nameplate, opening the mailbox, then
|
# close after claiming the nameplate, opening the mailbox, then
|
||||||
# releasing the nameplate
|
# releasing the nameplate
|
||||||
|
@ -348,10 +355,14 @@ class Basic(unittest.TestCase):
|
||||||
response(w, type=u"released")
|
response(w, type=u"released")
|
||||||
self.assertNoResult(d)
|
self.assertNoResult(d)
|
||||||
self.assertEqual(w._drop_connection.mock_calls, [])
|
self.assertEqual(w._drop_connection.mock_calls, [])
|
||||||
|
|
||||||
response(w, type=u"closed")
|
response(w, type=u"closed")
|
||||||
self.successResultOf(d)
|
self.assertNoResult(d)
|
||||||
self.assertEqual(w._drop_connection.mock_calls, [mock.call()])
|
self.assertEqual(w._drop_connection.mock_calls, [mock.call()])
|
||||||
|
|
||||||
|
w._ws_closed(True, None, None)
|
||||||
|
self.successResultOf(d)
|
||||||
|
|
||||||
def test_get_code_mock(self):
|
def test_get_code_mock(self):
|
||||||
timing = DebugTiming()
|
timing = DebugTiming()
|
||||||
w = wormhole._Wormhole(APPID, u"relay_url", reactor, None, timing)
|
w = wormhole._Wormhole(APPID, u"relay_url", reactor, None, timing)
|
||||||
|
|
|
@ -235,6 +235,7 @@ class _Wormhole:
|
||||||
self._flag_need_to_send_PAKE = True
|
self._flag_need_to_send_PAKE = True
|
||||||
self._key = None
|
self._key = None
|
||||||
self._closed = False
|
self._closed = False
|
||||||
|
self._disconnect_waiter = defer.Deferred()
|
||||||
self._mood = u"happy"
|
self._mood = u"happy"
|
||||||
|
|
||||||
self._get_verifier_called = False
|
self._get_verifier_called = False
|
||||||
|
@ -611,6 +612,8 @@ class _Wormhole:
|
||||||
if self._mailbox_opened:
|
if self._mailbox_opened:
|
||||||
yield self._close_waiter
|
yield self._close_waiter
|
||||||
self._drop_connection()
|
self._drop_connection()
|
||||||
|
if wait:
|
||||||
|
yield self._disconnect_waiter
|
||||||
|
|
||||||
def _maybe_release_nameplate(self):
|
def _maybe_release_nameplate(self):
|
||||||
if self.DEBUG: print("_maybe_release_nameplate", self._nameplate_claimed, self._nameplate_released)
|
if self.DEBUG: print("_maybe_release_nameplate", self._nameplate_claimed, self._nameplate_released)
|
||||||
|
@ -635,7 +638,7 @@ class _Wormhole:
|
||||||
# calls _ws_closed() when done
|
# calls _ws_closed() when done
|
||||||
|
|
||||||
def _ws_closed(self, wasClean, code, reason):
|
def _ws_closed(self, wasClean, code, reason):
|
||||||
pass
|
self._disconnect_waiter.callback(None)
|
||||||
|
|
||||||
def wormhole(appid, relay_url, reactor, tor_manager=None, timing=None):
|
def wormhole(appid, relay_url, reactor, tor_manager=None, timing=None):
|
||||||
timing = timing or DebugTiming()
|
timing = timing or DebugTiming()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user