vitaly-krugl: @lukebakken, I haven't forgotten - will catch up in the next couple of days.
lukebakken: @vitaly-krugl no hurry at all! Thanks again.
lukebakken: @vitaly-krugl the `queue.declare` method never makes it to RabbitMQ. An `AssertionError` is thrown [here](https://github.com/pika/pika/blob/master/pika/spec.py#L1003-L1004) which gums up the works when the `with` clause tries to exit.
vitaly-krugl: Would this alone punch at the heart of the problem [here](https://github.com/pika/pika/blob/b7f27983cfbcbaf34a06b6fc9259a7fd50b8838d/pika/channel.py#L1382)?
```
try:
    self._send_method(method)
except Exception:
    self._blocking = None
    raise
```

lukebakken: I'll try that out.
vitaly-krugl: Don't try it out just yet, I missed something there (and the fix in the PR did, too, I think)
vitaly-krugl: The [if acceptable_replies:](https://github.com/pika/pika/blob/b7f27983cfbcbaf34a06b6fc9259a7fd50b8838d/pika/channel.py#L1361) block sets `self._blocking` and also registers a number of callbacks. If `self._send_method(method)` (as in this case), we really don't want any of those registered callbacks to remain there either.

Since a successful `self._send_method(method)` call will ultimately just enqueue some data on the output write buffer, it should be possible to move the (https://github.com/pika/pika/blob/b7f27983cfbcbaf34a06b6fc9259a7fd50b8838d/pika/channel.py#L1361) block after [self._send_method(method)](https://github.com/pika/pika/blob/b7f27983cfbcbaf34a06b6fc9259a7fd50b8838d/pika/channel.py#L1382).

Furthermore, to ensure that an incomplete message doesn't get placed in the output buffer (due to marshaling failure of one of its subframes), [Connection._send_message()](https://github.com/pika/pika/blob/b7f27983cfbcbaf34a06b6fc9259a7fd50b8838d/pika/connection.py#L2273) needs to be modified to pre-marshal all of its parts and then append them to the output frame buffer only after all marshaling is done, updating the stats and finally calling `self._flush_outbound() ` and `self._detect_backpressure()` like [Connection._send_frame()](https://github.com/pika/pika/blob/b7f27983cfbcbaf34a06b6fc9259a7fd50b8838d/pika/connection.py#L2251-L2257). To this end,  `Connection._send_message()` and `Connection._send_frame()` should share a method (e.g.,  `Connection._output_marshaled_frame()` that updates `self.bytes_sent` and `self.frames_sent` and appends the marshaled frame data to `self.outbound_buffer` .
lukebakken: @vitaly-krugl - ready for re-review. Thanks!
lukebakken: @vitaly-krugl - I have merged in the tests you provided and this is ready for another review. Thanks!
vitaly-krugl: @lukebakken, I renamed this PR "Request marshaling error should not corrupt a channel", which reflects issues #990 and #912 more accurately. 
vitaly-krugl: On broker's Channel.Close, the draining is necessary because ANQP says to
ignore all incoming  requests after  channel is closed except
Channel.Close. So, draining in that case helps break the gridlock.

However, in the case the client is closing the channel with some blocking
requests still pending normally, we have a perfectly healthy channel and
nothing special is needed. The normal course of events will see it through.

On Tue, Apr 10, 2018, 5:00 AM Luke Bakken <notifications@github.com> wrote:

> *@lukebakken* commented on this pull request.
> ------------------------------
>
> In pika/channel.py
> <https://github.com/pika/pika/pull/991#discussion_r180392933>:
>
> > @@ -1327,9 +1327,10 @@ def _on_synchronous_complete(self, _method_frame_unused):
>          while self._blocked and self._blocking is None:
>              self._rpc(*self._blocked.popleft())
>
> -    def _drain_blocked_methods_on_remote_close(self):
>
> If we think we need an "emergency channel-close" method that purges
> queued-up requests (I don't think we do
>
> Draining blocked methods on a broker-initiated close was introduced in
> #957 <https://github.com/pika/pika/pull/957> - please check that PR out
> again. I still think it's necessary.
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/pika/pika/pull/991#discussion_r180392933>, or mute
> the thread
> <https://github.com/notifications/unsubscribe-auth/ABX9KigMj1hv6PIavaR70oqFZk9LqB0iks5tnJ7igaJpZM4Sg71J>
> .
>

vitaly-krugl: @lukebakken, is this PR ready for re-review?
vitaly-krugl: I think I might not have ended that review ??

On Mon, Apr 16, 2018, 6:22 AM Luke Bakken <notifications@github.com> wrote:

> @vitaly-krugl <https://github.com/vitaly-krugl> if I re-select your name
> in the "Reviewers" dropdown, the status icon changes back to an orange disk
> ... do you not get a new email saying I re-requested a review? I assumed
> that you did. If you don't get an email, I can @-mention you in a comment.
> Thanks for the re-re-reviews 😄
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/pika/pika/pull/991#issuecomment-381597285>, or mute
> the thread
> <https://github.com/notifications/unsubscribe-auth/ABX9KmC9Xn-wJn2vurcgpPYZe9kJuVEtks5tpJsrgaJpZM4Sg71J>
> .
>

lukebakken: @vitaly-krugl thanks! Sorry I missed the previous comment about that test.
lukebakken: @vitaly-krugl - changes made. I'll merge this once builds complete. Thanks!
diff --git a/pika/channel.py b/pika/channel.py
index fb67a0d..282f53c 100644
--- a/pika/channel.py
+++ b/pika/channel.py
@@ -1347,7 +1347,7 @@ class Channel(object):
         sent, and thus its completion callback would never be called.
 
         """
-        LOGGER.debug('Draining %i blocked frames due to remote Channel.Close',
+        LOGGER.debug('Draining %i blocked frames due to broker-requested Channel.Close',
                      len(self._blocked))
         while self._blocked:
             method = self._blocked.popleft()[0]
@@ -1408,6 +1408,12 @@ class Channel(object):
             self._blocked.append([method, callback, acceptable_replies])
             return
 
+        # Note: _send_method can throw exceptions if there are framing errors
+        # or invalid data passed in. Call it here to prevent self._blocking
+        # from being set if an exception is thrown. This also prevents
+        # acceptable_replies registering callbacks when exceptions are thrown
+        self._send_method(method)
+
         # If acceptable replies are set, add callbacks
         if acceptable_replies:
             # Block until a response frame is received for synchronous frames
@@ -1430,8 +1436,6 @@ class Channel(object):
                     self.callbacks.add(self.channel_number, reply, callback,
                                        arguments=arguments)
 
-        self._send_method(method)
-
     def _raise_if_not_open(self):
         """If channel is not in the OPEN state, raises ChannelClosed with
         `reply_code` and `reply_text` corresponding to current state. If channel
diff --git a/pika/connection.py b/pika/connection.py
index be2b1bc..271b198 100644
--- a/pika/connection.py
+++ b/pika/connection.py
@@ -2306,11 +2306,7 @@ class Connection(pika.compat.AbstractBase):
                 'Attempted to send a frame on closed connection.')
 
         marshaled_frame = frame_value.marshal()
-        self.bytes_sent += len(marshaled_frame)
-        self.frames_sent += 1
-        self._adapter_emit_data(marshaled_frame)
-        if self.params.backpressure_detection:
-            self._detect_backpressure()
+        self._output_marshaled_frames([marshaled_frame])
 
     def _send_method(self, channel_number, method, content=None):
         """Constructs a RPC method frame and then sends it to the broker.
@@ -2336,8 +2332,14 @@ class Connection(pika.compat.AbstractBase):
 
         """
         length = len(content[1])
-        self._send_frame(frame.Method(channel_number, method_frame))
-        self._send_frame(frame.Header(channel_number, length, content[0]))
+        marshaled_body_frames = []
+
+        # Note: we construct the Method, Header and Content objects, marshal them
+        # *then* output in case the marshaling operation throws an exception
+        frame_method = frame.Method(channel_number, method_frame)
+        frame_header = frame.Header(channel_number, length, content[0])
+        marshaled_body_frames.append(frame_method.marshal())
+        marshaled_body_frames.append(frame_header.marshal())
 
         if content[1]:
             chunks = int(math.ceil(float(length) / self._body_max_length))
@@ -2346,7 +2348,10 @@ class Connection(pika.compat.AbstractBase):
                 end = start + self._body_max_length
                 if end > length:
                     end = length
-                self._send_frame(frame.Body(channel_number, content[1][start:end]))
+                frame_body = frame.Body(channel_number, content[1][start:end])
+                marshaled_body_frames.append(frame_body.marshal())
+
+        self._output_marshaled_frames(marshaled_body_frames)
 
     def _set_connection_state(self, connection_state):
         """Set the connection state.
@@ -2382,3 +2387,16 @@ class Connection(pika.compat.AbstractBase):
         """
         self._frame_buffer = self._frame_buffer[byte_count:]
         self.bytes_received += byte_count
+
+    def _output_marshaled_frames(self, marshaled_frames):
+        """Output list of marshaled frames to buffer and update stats
+
+        :param list marshaled_frames: A list of frames marshaled to bytes
+
+        """
+        for marshaled_frame in marshaled_frames:
+            self.bytes_sent += len(marshaled_frame)
+            self.frames_sent += 1
+            self._adapter_emit_data(marshaled_frame)
+        if self.params.backpressure_detection:
+            self._detect_backpressure()

BlockingChannel.queue_declare hanging on non-string queue parameters
Under Python 3.6.4 and Pika 0.11.2, the `BlockingChannel.queue_declare` method hangs when setting its `queue` parameter to a value that is not of `str` type (e.g., `int`, `bool`, `list`, `dict`, `tuple`, `NoneType`).

Input:

```
$ python3 <<EOF
import pika
with pika.BlockingConnection() as connection:
    channel = connection.channel()
    channel.queue_declare(queue=[1, 2, 3])
EOF
```
diff --git a/tests/acceptance/async_adapter_tests.py b/tests/acceptance/async_adapter_tests.py
index 2a51ae1..967e109 100644
--- a/tests/acceptance/async_adapter_tests.py
+++ b/tests/acceptance/async_adapter_tests.py
@@ -625,8 +625,9 @@ class TestExchangeRedeclareWithDifferentValues(AsyncTestCase, AsyncAdapters):
         raise AssertionError("Should not have received an Exchange.DeclareOk")
 
 
-class TestPassiveExchangeDeclareWithConcurrentClose(AsyncTestCase, AsyncAdapters):
-    DESCRIPTION = "should close channel: declare passive exchange with close"
+class TestNoDeadlockWhenClosingChannelWithPendingBlockedRequestsAndConcurrentChannelCloseFromBroker(
+        AsyncTestCase, AsyncAdapters):
+    DESCRIPTION = "No deadlock when closing a channel with pending blocked requests and concurrent Channel.Close from broker."
 
     # To observe the behavior that this is testing, comment out this line
     # in pika/channel.py - _on_close:
@@ -636,10 +637,12 @@ class TestPassiveExchangeDeclareWithConcurrentClose(AsyncTestCase, AsyncAdapters
     # With the above line commented out, this test will hang
 
     def begin(self, channel):
-        self.name = self.__class__.__name__ + ':' + uuid.uuid1().hex
+        base_exch_name = self.__class__.__name__ + ':' + uuid.uuid1().hex
         self.channel.add_on_close_callback(self.on_channel_closed)
         for i in range(0, 99):
-            exch_name = self.name + ':' + str(i)
+            # Passively declare a non-existent exchange to force Channel.Close
+            # from broker
+            exch_name = base_exch_name + ':' + str(i)
             cb = functools.partial(self.on_bad_result, exch_name)
             channel.exchange_declare(exch_name,
                                      exchange_type='direct',
@@ -648,15 +651,49 @@ class TestPassiveExchangeDeclareWithConcurrentClose(AsyncTestCase, AsyncAdapters
         channel.close()
 
     def on_channel_closed(self, channel, reply_code, reply_text):
+        # The close is expected because the requested exchange doesn't exist
         self.stop()
 
     def on_bad_result(self, exch_name, frame):
-        self.channel.exchange_delete(exch_name)
-        raise AssertionError("Should not have received an Exchange.DeclareOk")
+        self.fail("Should not have received an Exchange.DeclareOk")
 
 
-class TestQueueDeclareAndDelete(AsyncTestCase, AsyncAdapters):
-    DESCRIPTION = "Create and delete a queue"
+class TestClosingAChannelPermitsBlockedRequestToComplete(AsyncTestCase,
+                                                         AsyncAdapters):
+    DESCRIPTION = "Closing a channel permits blocked requests to complete."
+
+    def begin(self, channel):
+        self._queue_deleted = False
+
+        channel.add_on_close_callback(self.on_channel_closed)
+
+        q_name = self.__class__.__name__ + ':' + uuid.uuid1().hex
+        # NOTE we pass callback to make it a blocking request
+        channel.queue_declare(q_name,
+                              exclusive=True,
+                              callback=lambda _frame: None)
+
+        self.assertIsNotNone(channel._blocking)
+
+        # The Queue.Delete should block on completion of Queue.Declare
+        channel.queue_delete(q_name, callback=self.on_queue_deleted)
+        self.assertTrue(channel._blocked)
+
+        # This Channel.Close should allow the blocked Queue.Delete to complete
+        # Before closing the channel
+        channel.close()
+
+    def on_queue_deleted(self, _frame):
+        # Getting this callback shows that the blocked request was processed
+        self._queue_deleted = True
+
+    def on_channel_closed(self, _channel, _reply_code, _reply_text):
+        self.assertTrue(self._queue_deleted)
+        self.stop()
+
+
+class TestQueueUnnamedDeclareAndDelete(AsyncTestCase, AsyncAdapters):
+    DESCRIPTION = "Create and delete an unnamed queue"
 
     def begin(self, channel):
         channel.queue_declare(queue='',
@@ -673,11 +710,11 @@ class TestQueueDeclareAndDelete(AsyncTestCase, AsyncAdapters):
 
     def on_queue_delete(self, frame):
         self.assertIsInstance(frame.method, spec.Queue.DeleteOk)
+        # NOTE: with event loops that suppress exceptions from callbacks
         self.stop()
 
 
-
-class TestQueueNameDeclareAndDelete(AsyncTestCase, AsyncAdapters):
+class TestQueueNamedDeclareAndDelete(AsyncTestCase, AsyncAdapters):
     DESCRIPTION = "Create and delete a named queue"
 
     def begin(self, channel):
@@ -701,7 +738,6 @@ class TestQueueNameDeclareAndDelete(AsyncTestCase, AsyncAdapters):
         self.stop()
 
 
-
 class TestQueueRedeclareWithDifferentValues(AsyncTestCase, AsyncAdapters):
     DESCRIPTION = "Should close chan: re-declared queue w/ diff params"
 
@@ -745,7 +781,6 @@ class TestTX1_Select(AsyncTestCase, AsyncAdapters):  # pylint: disable=C0103
         self.stop()
 
 
-
 class TestTX2_Commit(AsyncTestCase, AsyncAdapters):  # pylint: disable=C0103
     DESCRIPTION = "Start a transaction, and commit it"
 
diff --git a/tests/acceptance/blocking_adapter_test.py b/tests/acceptance/blocking_adapter_test.py
index d79ded2..d0ed48e 100644
--- a/tests/acceptance/blocking_adapter_test.py
+++ b/tests/acceptance/blocking_adapter_test.py
@@ -50,7 +50,6 @@ def setUpModule():
     logging.basicConfig(level=logging.DEBUG)
 
 
-#@unittest.skip('SKIPPING WHILE DEBUGGING SOME CHANGES. DO NOT MERGE LIKE THIS')
 class BlockingTestCaseBase(unittest.TestCase):
 
     TIMEOUT = DEFAULT_TIMEOUT
@@ -355,6 +354,16 @@ class TestCreateAndCloseConnectionWithChannelAndConsumer(BlockingTestCaseBase):
         self.assertFalse(ch._impl._consumers)
 
 
+class TestUsingInvalidQueueArgument(BlockingTestCaseBase):
+    def test(self):
+        """BlockingConnection raises expected exception when invalid queue parameter is used
+        """
+        connection = self._connect()
+        ch = connection.channel()
+        with self.assertRaises(AssertionError):
+            ch.queue_declare(queue=[1, 2, 3])
+
+
 class TestSuddenBrokerDisconnectBeforeChannel(BlockingTestCaseBase):
 
     def test(self):
diff --git a/tests/unit/channel_tests.py b/tests/unit/channel_tests.py
index 10e594e..dc353ef 100644
--- a/tests/unit/channel_tests.py
+++ b/tests/unit/channel_tests.py
@@ -1587,3 +1587,18 @@ class ChannelTests(unittest.TestCase):
         self.assertRaises(TypeError,
                           self.obj._validate_rpc_completion_callback,
                           'foo')
+
+    def test_no_side_effects_from_send_method_error(self):
+        self.obj._set_state(self.obj.OPEN)
+
+        self.assertIsNone(self.obj._blocking)
+
+        with mock.patch.object(self.obj.callbacks, 'add') as cb_add_mock:
+            with mock.patch.object(self.obj, '_send_method',
+                                   side_effect=TypeError) as send_method_mock:
+                with self.assertRaises(TypeError):
+                    self.obj.queue_delete('', callback=lambda _frame: None)
+
+        self.assertEqual(send_method_mock.call_count, 1)
+        self.assertIsNone(self.obj._blocking)
+        self.assertEqual(cb_add_mock.call_count, 0)
diff --git a/tests/unit/connection_tests.py b/tests/unit/connection_tests.py
index 19df873..04fd543 100644
--- a/tests/unit/connection_tests.py
+++ b/tests/unit/connection_tests.py
@@ -983,3 +983,31 @@ class ConnectionTests(unittest.TestCase):  # pylint: disable=R0904
 
         # Make sure _detect_backpressure doesn't throw
         self.connection._detect_backpressure()
+
+
+    def test_no_side_effects_from_message_marshal_error(self):
+        # Verify that frame buffer is empty on entry
+        self.assertEqual(b'', self.connection._frame_buffer)
+
+        # Use Basic.Public with invalid body to trigger marshalling error
+        method = spec.Basic.Publish()
+        properties = spec.BasicProperties()
+        # Verify that marshalling of method and header won't trigger error
+        frame.Method(1, method).marshal()
+        frame.Header(1, body_size=10, props=properties).marshal()
+        # Create bogus body that should trigger an error during marshalling
+        body = [1,2,3,4]
+        # Verify that frame body can be created using the bogus body, but
+        # that marshalling will fail
+        frame.Body(1, body)
+        with self.assertRaises(TypeError):
+            frame.Body(1, body).marshal()
+
+        # Now, attempt to send the method with the bogus body
+        with self.assertRaises(TypeError):
+            self.connection._send_method(channel_number=1,
+                                    method=method,
+                                    content=(properties, body))
+
+        # Now make sure that nothing is enqueued on frame buffer
+        self.assertEqual(b'', self.connection._frame_buffer)

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-asyncio coverage codecov mock tornado twisted
apt-get update apt-get install -y gcc
3.9
test-requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==25.3.0
Automat==24.8.1
certifi==2025.1.31
charset-normalizer==3.4.1
codecov==2.1.13
constantly==23.10.4
coverage==7.8.0
exceptiongroup==1.2.2
hyperlink==21.0.0
idna==3.10
incremental==24.7.2
iniconfig==2.1.0
mock==5.2.0
nose==1.3.7
packaging==24.2
-e git+https://github.com/pika/pika.git@16cdb80b4c0aacc9766abf033fccecb2c1ccb1a3#egg=pika
pluggy==1.5.0
pytest==8.3.5
pytest-asyncio==0.26.0
requests==2.32.3
tomli==2.2.1
tornado==6.4.2
Twisted==24.11.0
typing_extensions==4.13.0
urllib3==2.3.0
zope.interface==7.2

name: pika
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==25.3.0
      - automat==24.8.1
      - certifi==2025.1.31
      - charset-normalizer==3.4.1
      - codecov==2.1.13
      - constantly==23.10.4
      - coverage==7.8.0
      - exceptiongroup==1.2.2
      - hyperlink==21.0.0
      - idna==3.10
      - incremental==24.7.2
      - iniconfig==2.1.0
      - mock==5.2.0
      - nose==1.3.7
      - packaging==24.2
      - pluggy==1.5.0
      - pytest==8.3.5
      - pytest-asyncio==0.26.0
      - requests==2.32.3
      - tomli==2.2.1
      - tornado==6.4.2
      - twisted==24.11.0
      - typing-extensions==4.13.0
      - urllib3==2.3.0
      - zope-interface==7.2
prefix: /opt/conda/envs/pika

tests/unit/channel_tests.py::ChannelTests::test_no_side_effects_from_send_method_error tests/unit/connection_tests.py::ConnectionTests::test_no_side_effects_from_message_marshal_error
tests/acceptance/async_adapter_tests.py::TestA_Connect::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestA_Connect::test_with_select_default tests/acceptance/async_adapter_tests.py::TestA_Connect::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestA_Connect::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestA_Connect::test_with_select_select tests/acceptance/async_adapter_tests.py::TestA_Connect::test_with_tornado tests/acceptance/async_adapter_tests.py::TestConstructAndImmediatelyCloseConnection::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestConstructAndImmediatelyCloseConnection::test_with_select_default tests/acceptance/async_adapter_tests.py::TestConstructAndImmediatelyCloseConnection::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestConstructAndImmediatelyCloseConnection::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestConstructAndImmediatelyCloseConnection::test_with_select_select tests/acceptance/async_adapter_tests.py::TestConstructAndImmediatelyCloseConnection::test_with_tornado tests/acceptance/async_adapter_tests.py::TestCloseConnectionDuringAMQPHandshake::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestCloseConnectionDuringAMQPHandshake::test_with_select_default tests/acceptance/async_adapter_tests.py::TestCloseConnectionDuringAMQPHandshake::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestCloseConnectionDuringAMQPHandshake::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestCloseConnectionDuringAMQPHandshake::test_with_select_select tests/acceptance/async_adapter_tests.py::TestCloseConnectionDuringAMQPHandshake::test_with_tornado tests/acceptance/async_adapter_tests.py::TestSocketConnectTimeoutWithTinySocketTimeout::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestSocketConnectTimeoutWithTinySocketTimeout::test_with_select_default tests/acceptance/async_adapter_tests.py::TestSocketConnectTimeoutWithTinySocketTimeout::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestSocketConnectTimeoutWithTinySocketTimeout::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestSocketConnectTimeoutWithTinySocketTimeout::test_with_select_select tests/acceptance/async_adapter_tests.py::TestSocketConnectTimeoutWithTinySocketTimeout::test_with_tornado tests/acceptance/async_adapter_tests.py::TestStackConnectionTimeoutWithTinyStackTimeout::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestStackConnectionTimeoutWithTinyStackTimeout::test_with_select_default tests/acceptance/async_adapter_tests.py::TestStackConnectionTimeoutWithTinyStackTimeout::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestStackConnectionTimeoutWithTinyStackTimeout::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestStackConnectionTimeoutWithTinyStackTimeout::test_with_select_select tests/acceptance/async_adapter_tests.py::TestStackConnectionTimeoutWithTinyStackTimeout::test_with_tornado tests/acceptance/async_adapter_tests.py::TestCreateConnectionViaDefaultConnectionWorkflow::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestCreateConnectionViaDefaultConnectionWorkflow::test_with_select_default tests/acceptance/async_adapter_tests.py::TestCreateConnectionViaDefaultConnectionWorkflow::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestCreateConnectionViaDefaultConnectionWorkflow::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestCreateConnectionViaDefaultConnectionWorkflow::test_with_select_select tests/acceptance/async_adapter_tests.py::TestCreateConnectionViaDefaultConnectionWorkflow::test_with_tornado tests/acceptance/async_adapter_tests.py::TestCreateConnectionViaCustomConnectionWorkflow::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestCreateConnectionViaCustomConnectionWorkflow::test_with_select_default tests/acceptance/async_adapter_tests.py::TestCreateConnectionViaCustomConnectionWorkflow::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestCreateConnectionViaCustomConnectionWorkflow::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestCreateConnectionViaCustomConnectionWorkflow::test_with_select_select tests/acceptance/async_adapter_tests.py::TestCreateConnectionViaCustomConnectionWorkflow::test_with_tornado tests/acceptance/async_adapter_tests.py::TestCreateConnectionMultipleConfigsDefaultConnectionWorkflow::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestCreateConnectionMultipleConfigsDefaultConnectionWorkflow::test_with_select_default tests/acceptance/async_adapter_tests.py::TestCreateConnectionMultipleConfigsDefaultConnectionWorkflow::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestCreateConnectionMultipleConfigsDefaultConnectionWorkflow::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestCreateConnectionMultipleConfigsDefaultConnectionWorkflow::test_with_select_select tests/acceptance/async_adapter_tests.py::TestCreateConnectionMultipleConfigsDefaultConnectionWorkflow::test_with_tornado tests/acceptance/async_adapter_tests.py::TestCreateConnectionRetriesWithDefaultConnectionWorkflow::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestCreateConnectionRetriesWithDefaultConnectionWorkflow::test_with_select_default tests/acceptance/async_adapter_tests.py::TestCreateConnectionRetriesWithDefaultConnectionWorkflow::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestCreateConnectionRetriesWithDefaultConnectionWorkflow::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestCreateConnectionRetriesWithDefaultConnectionWorkflow::test_with_select_select tests/acceptance/async_adapter_tests.py::TestCreateConnectionRetriesWithDefaultConnectionWorkflow::test_with_tornado tests/acceptance/async_adapter_tests.py::TestCreateConnectionConnectionWorkflowSocketConnectionFailure::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestCreateConnectionConnectionWorkflowSocketConnectionFailure::test_with_select_default tests/acceptance/async_adapter_tests.py::TestCreateConnectionConnectionWorkflowSocketConnectionFailure::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestCreateConnectionConnectionWorkflowSocketConnectionFailure::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestCreateConnectionConnectionWorkflowSocketConnectionFailure::test_with_select_select tests/acceptance/async_adapter_tests.py::TestCreateConnectionConnectionWorkflowSocketConnectionFailure::test_with_tornado tests/acceptance/async_adapter_tests.py::TestCreateConnectionAMQPHandshakeTimesOutDefaultWorkflow::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestCreateConnectionAMQPHandshakeTimesOutDefaultWorkflow::test_with_select_default tests/acceptance/async_adapter_tests.py::TestCreateConnectionAMQPHandshakeTimesOutDefaultWorkflow::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestCreateConnectionAMQPHandshakeTimesOutDefaultWorkflow::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestCreateConnectionAMQPHandshakeTimesOutDefaultWorkflow::test_with_select_select tests/acceptance/async_adapter_tests.py::TestCreateConnectionAMQPHandshakeTimesOutDefaultWorkflow::test_with_tornado tests/acceptance/async_adapter_tests.py::TestCreateConnectionAndImmediatelyAbortDefaultConnectionWorkflow::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestCreateConnectionAndImmediatelyAbortDefaultConnectionWorkflow::test_with_select_default tests/acceptance/async_adapter_tests.py::TestCreateConnectionAndImmediatelyAbortDefaultConnectionWorkflow::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestCreateConnectionAndImmediatelyAbortDefaultConnectionWorkflow::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestCreateConnectionAndImmediatelyAbortDefaultConnectionWorkflow::test_with_select_select tests/acceptance/async_adapter_tests.py::TestCreateConnectionAndImmediatelyAbortDefaultConnectionWorkflow::test_with_tornado tests/acceptance/async_adapter_tests.py::TestCreateConnectionAndAsynchronouslyAbortDefaultConnectionWorkflow::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestCreateConnectionAndAsynchronouslyAbortDefaultConnectionWorkflow::test_with_select_default tests/acceptance/async_adapter_tests.py::TestCreateConnectionAndAsynchronouslyAbortDefaultConnectionWorkflow::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestCreateConnectionAndAsynchronouslyAbortDefaultConnectionWorkflow::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestCreateConnectionAndAsynchronouslyAbortDefaultConnectionWorkflow::test_with_select_select tests/acceptance/async_adapter_tests.py::TestCreateConnectionAndAsynchronouslyAbortDefaultConnectionWorkflow::test_with_tornado tests/acceptance/async_adapter_tests.py::TestConfirmSelect::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestConfirmSelect::test_with_select_default tests/acceptance/async_adapter_tests.py::TestConfirmSelect::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestConfirmSelect::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestConfirmSelect::test_with_select_select tests/acceptance/async_adapter_tests.py::TestConfirmSelect::test_with_tornado tests/acceptance/async_adapter_tests.py::TestBlockingNonBlockingBlockingRPCWontStall::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestBlockingNonBlockingBlockingRPCWontStall::test_with_select_default tests/acceptance/async_adapter_tests.py::TestBlockingNonBlockingBlockingRPCWontStall::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestBlockingNonBlockingBlockingRPCWontStall::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestBlockingNonBlockingBlockingRPCWontStall::test_with_select_select tests/acceptance/async_adapter_tests.py::TestBlockingNonBlockingBlockingRPCWontStall::test_with_tornado tests/acceptance/async_adapter_tests.py::TestConsumeCancel::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestConsumeCancel::test_with_select_default tests/acceptance/async_adapter_tests.py::TestConsumeCancel::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestConsumeCancel::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestConsumeCancel::test_with_select_select tests/acceptance/async_adapter_tests.py::TestConsumeCancel::test_with_tornado tests/acceptance/async_adapter_tests.py::TestExchangeDeclareAndDelete::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestExchangeDeclareAndDelete::test_with_select_default tests/acceptance/async_adapter_tests.py::TestExchangeDeclareAndDelete::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestExchangeDeclareAndDelete::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestExchangeDeclareAndDelete::test_with_select_select tests/acceptance/async_adapter_tests.py::TestExchangeDeclareAndDelete::test_with_tornado tests/acceptance/async_adapter_tests.py::TestExchangeRedeclareWithDifferentValues::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestExchangeRedeclareWithDifferentValues::test_with_select_default tests/acceptance/async_adapter_tests.py::TestExchangeRedeclareWithDifferentValues::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestExchangeRedeclareWithDifferentValues::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestExchangeRedeclareWithDifferentValues::test_with_select_select tests/acceptance/async_adapter_tests.py::TestExchangeRedeclareWithDifferentValues::test_with_tornado tests/acceptance/async_adapter_tests.py::TestNoDeadlockWhenClosingChannelWithPendingBlockedRequestsAndConcurrentChannelCloseFromBroker::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestNoDeadlockWhenClosingChannelWithPendingBlockedRequestsAndConcurrentChannelCloseFromBroker::test_with_select_default tests/acceptance/async_adapter_tests.py::TestNoDeadlockWhenClosingChannelWithPendingBlockedRequestsAndConcurrentChannelCloseFromBroker::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestNoDeadlockWhenClosingChannelWithPendingBlockedRequestsAndConcurrentChannelCloseFromBroker::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestNoDeadlockWhenClosingChannelWithPendingBlockedRequestsAndConcurrentChannelCloseFromBroker::test_with_select_select tests/acceptance/async_adapter_tests.py::TestNoDeadlockWhenClosingChannelWithPendingBlockedRequestsAndConcurrentChannelCloseFromBroker::test_with_tornado tests/acceptance/async_adapter_tests.py::TestClosingAChannelPermitsBlockedRequestToComplete::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestClosingAChannelPermitsBlockedRequestToComplete::test_with_select_default tests/acceptance/async_adapter_tests.py::TestClosingAChannelPermitsBlockedRequestToComplete::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestClosingAChannelPermitsBlockedRequestToComplete::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestClosingAChannelPermitsBlockedRequestToComplete::test_with_select_select tests/acceptance/async_adapter_tests.py::TestClosingAChannelPermitsBlockedRequestToComplete::test_with_tornado tests/acceptance/async_adapter_tests.py::TestQueueUnnamedDeclareAndDelete::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestQueueUnnamedDeclareAndDelete::test_with_select_default tests/acceptance/async_adapter_tests.py::TestQueueUnnamedDeclareAndDelete::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestQueueUnnamedDeclareAndDelete::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestQueueUnnamedDeclareAndDelete::test_with_select_select tests/acceptance/async_adapter_tests.py::TestQueueUnnamedDeclareAndDelete::test_with_tornado tests/acceptance/async_adapter_tests.py::TestQueueNamedDeclareAndDelete::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestQueueNamedDeclareAndDelete::test_with_select_default tests/acceptance/async_adapter_tests.py::TestQueueNamedDeclareAndDelete::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestQueueNamedDeclareAndDelete::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestQueueNamedDeclareAndDelete::test_with_select_select tests/acceptance/async_adapter_tests.py::TestQueueNamedDeclareAndDelete::test_with_tornado tests/acceptance/async_adapter_tests.py::TestQueueRedeclareWithDifferentValues::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestQueueRedeclareWithDifferentValues::test_with_select_default tests/acceptance/async_adapter_tests.py::TestQueueRedeclareWithDifferentValues::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestQueueRedeclareWithDifferentValues::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestQueueRedeclareWithDifferentValues::test_with_select_select tests/acceptance/async_adapter_tests.py::TestQueueRedeclareWithDifferentValues::test_with_tornado tests/acceptance/async_adapter_tests.py::TestTX1_Select::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestTX1_Select::test_with_select_default tests/acceptance/async_adapter_tests.py::TestTX1_Select::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestTX1_Select::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestTX1_Select::test_with_select_select tests/acceptance/async_adapter_tests.py::TestTX1_Select::test_with_tornado tests/acceptance/async_adapter_tests.py::TestTX2_Commit::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestTX2_Commit::test_with_select_default tests/acceptance/async_adapter_tests.py::TestTX2_Commit::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestTX2_Commit::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestTX2_Commit::test_with_select_select tests/acceptance/async_adapter_tests.py::TestTX2_Commit::test_with_tornado tests/acceptance/async_adapter_tests.py::TestTX2_CommitFailure::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestTX2_CommitFailure::test_with_select_default tests/acceptance/async_adapter_tests.py::TestTX2_CommitFailure::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestTX2_CommitFailure::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestTX2_CommitFailure::test_with_select_select tests/acceptance/async_adapter_tests.py::TestTX2_CommitFailure::test_with_tornado tests/acceptance/async_adapter_tests.py::TestTX3_Rollback::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestTX3_Rollback::test_with_select_default tests/acceptance/async_adapter_tests.py::TestTX3_Rollback::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestTX3_Rollback::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestTX3_Rollback::test_with_select_select tests/acceptance/async_adapter_tests.py::TestTX3_Rollback::test_with_tornado tests/acceptance/async_adapter_tests.py::TestTX3_RollbackFailure::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestTX3_RollbackFailure::test_with_select_default tests/acceptance/async_adapter_tests.py::TestTX3_RollbackFailure::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestTX3_RollbackFailure::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestTX3_RollbackFailure::test_with_select_select tests/acceptance/async_adapter_tests.py::TestTX3_RollbackFailure::test_with_tornado tests/acceptance/async_adapter_tests.py::TestZ_PublishAndConsume::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestZ_PublishAndConsume::test_with_select_default tests/acceptance/async_adapter_tests.py::TestZ_PublishAndConsume::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestZ_PublishAndConsume::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestZ_PublishAndConsume::test_with_select_select tests/acceptance/async_adapter_tests.py::TestZ_PublishAndConsume::test_with_tornado tests/acceptance/async_adapter_tests.py::TestZ_PublishAndConsumeBig::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestZ_PublishAndConsumeBig::test_with_select_default tests/acceptance/async_adapter_tests.py::TestZ_PublishAndConsumeBig::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestZ_PublishAndConsumeBig::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestZ_PublishAndConsumeBig::test_with_select_select tests/acceptance/async_adapter_tests.py::TestZ_PublishAndConsumeBig::test_with_tornado tests/acceptance/async_adapter_tests.py::TestZ_PublishAndGet::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestZ_PublishAndGet::test_with_select_default tests/acceptance/async_adapter_tests.py::TestZ_PublishAndGet::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestZ_PublishAndGet::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestZ_PublishAndGet::test_with_select_select tests/acceptance/async_adapter_tests.py::TestZ_PublishAndGet::test_with_tornado tests/acceptance/async_adapter_tests.py::TestZ_AccessDenied::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestZ_AccessDenied::test_with_select_default tests/acceptance/async_adapter_tests.py::TestZ_AccessDenied::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestZ_AccessDenied::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestZ_AccessDenied::test_with_select_select tests/acceptance/async_adapter_tests.py::TestZ_AccessDenied::test_with_tornado tests/acceptance/async_adapter_tests.py::TestBlockedConnectionTimesOut::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestBlockedConnectionTimesOut::test_with_select_default tests/acceptance/async_adapter_tests.py::TestBlockedConnectionTimesOut::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestBlockedConnectionTimesOut::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestBlockedConnectionTimesOut::test_with_select_select tests/acceptance/async_adapter_tests.py::TestBlockedConnectionTimesOut::test_with_tornado tests/acceptance/async_adapter_tests.py::TestBlockedConnectionUnblocks::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestBlockedConnectionUnblocks::test_with_select_default tests/acceptance/async_adapter_tests.py::TestBlockedConnectionUnblocks::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestBlockedConnectionUnblocks::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestBlockedConnectionUnblocks::test_with_select_select tests/acceptance/async_adapter_tests.py::TestBlockedConnectionUnblocks::test_with_tornado tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeRequestBeforeIOLoopStarts::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeRequestBeforeIOLoopStarts::test_with_select_default tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeRequestBeforeIOLoopStarts::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeRequestBeforeIOLoopStarts::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeRequestBeforeIOLoopStarts::test_with_select_select tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeRequestBeforeIOLoopStarts::test_with_tornado tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeFromIOLoopThread::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeFromIOLoopThread::test_with_select_default tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeFromIOLoopThread::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeFromIOLoopThread::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeFromIOLoopThread::test_with_select_select tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeFromIOLoopThread::test_with_tornado tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeFromAnotherThread::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeFromAnotherThread::test_with_select_default tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeFromAnotherThread::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeFromAnotherThread::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeFromAnotherThread::test_with_select_select tests/acceptance/async_adapter_tests.py::TestAddCallbackThreadsafeFromAnotherThread::test_with_tornado tests/acceptance/async_adapter_tests.py::TestIOLoopStopBeforeIOLoopStarts::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestIOLoopStopBeforeIOLoopStarts::test_with_select_default tests/acceptance/async_adapter_tests.py::TestIOLoopStopBeforeIOLoopStarts::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestIOLoopStopBeforeIOLoopStarts::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestIOLoopStopBeforeIOLoopStarts::test_with_select_select tests/acceptance/async_adapter_tests.py::TestIOLoopStopBeforeIOLoopStarts::test_with_tornado tests/acceptance/async_adapter_tests.py::TestViabilityOfMultipleTimeoutsWithSameDeadlineAndCallback::test_with_asyncio tests/acceptance/async_adapter_tests.py::TestViabilityOfMultipleTimeoutsWithSameDeadlineAndCallback::test_with_select_default tests/acceptance/async_adapter_tests.py::TestViabilityOfMultipleTimeoutsWithSameDeadlineAndCallback::test_with_select_epoll tests/acceptance/async_adapter_tests.py::TestViabilityOfMultipleTimeoutsWithSameDeadlineAndCallback::test_with_select_poll tests/acceptance/async_adapter_tests.py::TestViabilityOfMultipleTimeoutsWithSameDeadlineAndCallback::test_with_select_select tests/acceptance/async_adapter_tests.py::TestViabilityOfMultipleTimeoutsWithSameDeadlineAndCallback::test_with_tornado tests/acceptance/blocking_adapter_test.py::TestCreateAndCloseConnection::test tests/acceptance/blocking_adapter_test.py::TestCreateConnectionWithNoneSocketAndStackTimeouts::test tests/acceptance/blocking_adapter_test.py::TestCreateConnectionFromTwoConfigsFirstUnreachable::test tests/acceptance/blocking_adapter_test.py::TestMultiCloseConnectionRaisesWrongState::test tests/acceptance/blocking_adapter_test.py::TestConnectionContextManagerClosesConnection::test tests/acceptance/blocking_adapter_test.py::TestConnectionContextManagerExitSurvivesClosedConnection::test tests/acceptance/blocking_adapter_test.py::TestConnectionContextManagerClosesConnectionAndPassesOriginalException::test tests/acceptance/blocking_adapter_test.py::TestConnectionContextManagerClosesConnectionAndPassesSystemException::test tests/acceptance/blocking_adapter_test.py::TestLostConnectionResultsInIsClosedConnectionAndChannel::test tests/acceptance/blocking_adapter_test.py::TestInvalidExchangeTypeRaisesConnectionClosed::test tests/acceptance/blocking_adapter_test.py::TestCreateAndCloseConnectionWithChannelAndConsumer::test tests/acceptance/blocking_adapter_test.py::TestUsingInvalidQueueArgument::test tests/acceptance/blocking_adapter_test.py::TestSuddenBrokerDisconnectBeforeChannel::test tests/acceptance/blocking_adapter_test.py::TestNoAccessToFileDescriptorAfterConnectionClosed::test tests/acceptance/blocking_adapter_test.py::TestDisconnectDuringConnectionStart::test tests/acceptance/blocking_adapter_test.py::TestDisconnectDuringConnectionTune::test tests/acceptance/blocking_adapter_test.py::TestProcessDataEvents::test tests/acceptance/blocking_adapter_test.py::TestConnectionRegisterForBlockAndUnblock::test tests/acceptance/blocking_adapter_test.py::TestBlockedConnectionTimeout::test tests/acceptance/blocking_adapter_test.py::TestAddCallbackThreadsafeFromSameThread::test tests/acceptance/blocking_adapter_test.py::TestAddCallbackThreadsafeFromAnotherThread::test tests/acceptance/blocking_adapter_test.py::TestAddTimeoutRemoveTimeout::test tests/acceptance/blocking_adapter_test.py::TestViabilityOfMultipleTimeoutsWithSameDeadlineAndCallback::test tests/acceptance/blocking_adapter_test.py::TestRemoveTimeoutFromTimeoutCallback::test tests/acceptance/blocking_adapter_test.py::TestSleep::test tests/acceptance/blocking_adapter_test.py::TestConnectionProperties::test tests/acceptance/blocking_adapter_test.py::TestCreateAndCloseChannel::test tests/acceptance/blocking_adapter_test.py::TestExchangeDeclareAndDelete::test tests/acceptance/blocking_adapter_test.py::TestExchangeBindAndUnbind::test tests/acceptance/blocking_adapter_test.py::TestQueueDeclareAndDelete::test tests/acceptance/blocking_adapter_test.py::TestPassiveQueueDeclareOfUnknownQueueRaisesChannelClosed::test tests/acceptance/blocking_adapter_test.py::TestQueueBindAndUnbindAndPurge::test tests/acceptance/blocking_adapter_test.py::TestBasicGet::test tests/acceptance/blocking_adapter_test.py::TestBasicReject::test tests/acceptance/blocking_adapter_test.py::TestBasicRejectNoRequeue::test tests/acceptance/blocking_adapter_test.py::TestBasicNack::test tests/acceptance/blocking_adapter_test.py::TestBasicNackNoRequeue::test tests/acceptance/blocking_adapter_test.py::TestBasicNackMultiple::test tests/acceptance/blocking_adapter_test.py::TestBasicRecoverWithRequeue::test tests/acceptance/blocking_adapter_test.py::TestTxCommit::test tests/acceptance/blocking_adapter_test.py::TestTxRollback::test tests/acceptance/blocking_adapter_test.py::TestBasicConsumeFromUnknownQueueRaisesChannelClosed::test tests/acceptance/blocking_adapter_test.py::TestPublishAndBasicPublishWithPubacksUnroutable::test tests/acceptance/blocking_adapter_test.py::TestConfirmDeliveryAfterUnroutableMessage::test tests/acceptance/blocking_adapter_test.py::TestUnroutableMessagesReturnedInNonPubackMode::test tests/acceptance/blocking_adapter_test.py::TestUnroutableMessageReturnedInPubackMode::test tests/acceptance/blocking_adapter_test.py::TestBasicPublishDeliveredWhenPendingUnroutable::test tests/acceptance/blocking_adapter_test.py::TestPublishAndConsumeWithPubacksAndQosOfOne::test tests/acceptance/blocking_adapter_test.py::TestBasicConsumeWithAckFromAnotherThread::test tests/acceptance/blocking_adapter_test.py::TestConsumeGeneratorWithAckFromAnotherThread::test tests/acceptance/blocking_adapter_test.py::TestTwoBasicConsumersOnSameChannel::test tests/acceptance/blocking_adapter_test.py::TestBasicCancelPurgesPendingConsumerCancellationEvt::test tests/acceptance/blocking_adapter_test.py::TestBasicPublishWithoutPubacks::test tests/acceptance/blocking_adapter_test.py::TestPublishFromBasicConsumeCallback::test tests/acceptance/blocking_adapter_test.py::TestStopConsumingFromBasicConsumeCallback::test tests/acceptance/blocking_adapter_test.py::TestCloseChannelFromBasicConsumeCallback::test tests/acceptance/blocking_adapter_test.py::TestCloseConnectionFromBasicConsumeCallback::test tests/acceptance/blocking_adapter_test.py::TestStartConsumingRaisesChannelClosedOnSameChannelFailure::test tests/acceptance/blocking_adapter_test.py::TestStartConsumingReturnsAfterCancelFromBroker::test tests/acceptance/blocking_adapter_test.py::TestNonPubAckPublishAndConsumeHugeMessage::test tests/acceptance/blocking_adapter_test.py::TestNonPubAckPublishAndConsumeManyMessages::test tests/acceptance/blocking_adapter_test.py::TestBasicCancelWithNonAckableConsumer::test tests/acceptance/blocking_adapter_test.py::TestBasicCancelWithAckableConsumer::test tests/acceptance/blocking_adapter_test.py::TestUnackedMessageAutoRestoredToQueueOnChannelClose::test tests/acceptance/blocking_adapter_test.py::TestNoAckMessageNotRestoredToQueueOnChannelClose::test tests/acceptance/blocking_adapter_test.py::TestConsumeGeneratorInactivityTimeout::test tests/acceptance/blocking_adapter_test.py::TestConsumeGeneratorInterruptedByCancelFromBroker::test tests/acceptance/blocking_adapter_test.py::TestConsumeGeneratorCancelEncountersCancelFromBroker::test tests/acceptance/blocking_adapter_test.py::TestConsumeGeneratorPassesChannelClosedOnSameChannelFailure::test tests/acceptance/blocking_adapter_test.py::TestChannelFlow::test
tests/acceptance/blocking_adapter_test.py::TestCreateConnectionFromTwoUnreachableConfigs::test tests/acceptance/blocking_adapter_test.py::TestConnectWithDownedBroker::test tests/acceptance/blocking_adapter_test.py::TestDisconnectDuringConnectionProtocol::test tests/unit/channel_tests.py::ChannelTests::test_add_callback tests/unit/channel_tests.py::ChannelTests::test_add_callback_multiple_replies tests/unit/channel_tests.py::ChannelTests::test_add_callbacks_basic_cancel_empty_added tests/unit/channel_tests.py::ChannelTests::test_add_callbacks_basic_get_empty_added tests/unit/channel_tests.py::ChannelTests::test_add_callbacks_channel_close_added tests/unit/channel_tests.py::ChannelTests::test_add_callbacks_channel_flow_added tests/unit/channel_tests.py::ChannelTests::test_add_on_cancel_callback tests/unit/channel_tests.py::ChannelTests::test_add_on_close_callback tests/unit/channel_tests.py::ChannelTests::test_add_on_flow_callback tests/unit/channel_tests.py::ChannelTests::test_add_on_return_callback tests/unit/channel_tests.py::ChannelTests::test_basic_ack_calls_send_method tests/unit/channel_tests.py::ChannelTests::test_basic_ack_channel_closed tests/unit/channel_tests.py::ChannelTests::test_basic_cancel_asynch tests/unit/channel_tests.py::ChannelTests::test_basic_cancel_asynch_with_user_callback_raises_value_error tests/unit/channel_tests.py::ChannelTests::test_basic_cancel_calls_raise_if_not_open tests/unit/channel_tests.py::ChannelTests::test_basic_cancel_synch tests/unit/channel_tests.py::ChannelTests::test_basic_cancel_synch_no_user_callback_raises_value_error tests/unit/channel_tests.py::ChannelTests::test_basic_cancel_then_close tests/unit/channel_tests.py::ChannelTests::test_basic_cancel_unknown_consumer_tag tests/unit/channel_tests.py::ChannelTests::test_basic_consume_calls_raise_if_not_open tests/unit/channel_tests.py::ChannelTests::test_basic_consume_channel_closed tests/unit/channel_tests.py::ChannelTests::test_basic_consume_consumer_tag_cancelled_full tests/unit/channel_tests.py::ChannelTests::test_basic_consume_consumer_tag_in_consumers tests/unit/channel_tests.py::ChannelTests::test_basic_consume_consumer_tag_no_completion_callback tests/unit/channel_tests.py::ChannelTests::test_basic_consume_consumer_tag_with_completion_callback tests/unit/channel_tests.py::ChannelTests::test_basic_consume_consumers_callback_value tests/unit/channel_tests.py::ChannelTests::test_basic_consume_consumers_rpc_with_completion_callback tests/unit/channel_tests.py::ChannelTests::test_basic_consume_consumers_rpc_with_no_completion_callback tests/unit/channel_tests.py::ChannelTests::test_basic_consume_duplicate_consumer_tag_raises tests/unit/channel_tests.py::ChannelTests::test_basic_get_callback tests/unit/channel_tests.py::ChannelTests::test_basic_get_calls_require_callback tests/unit/channel_tests.py::ChannelTests::test_basic_get_send_method_called tests/unit/channel_tests.py::ChannelTests::test_basic_get_send_method_called_auto_ack tests/unit/channel_tests.py::ChannelTests::test_basic_nack_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_basic_nack_send_method_request tests/unit/channel_tests.py::ChannelTests::test_basic_publish_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_basic_publish_send_method_request tests/unit/channel_tests.py::ChannelTests::test_basic_qos_invalid_prefetch_count_raises_error tests/unit/channel_tests.py::ChannelTests::test_basic_qos_invalid_prefetch_size_raises_error tests/unit/channel_tests.py::ChannelTests::test_basic_qos_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_basic_qos_rpc_request tests/unit/channel_tests.py::ChannelTests::test_basic_recover_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_basic_recover_rpc_request tests/unit/channel_tests.py::ChannelTests::test_basic_reject_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_basic_reject_send_method_request_with_int_tag tests/unit/channel_tests.py::ChannelTests::test_basic_reject_send_method_request_with_long_tag tests/unit/channel_tests.py::ChannelTests::test_basic_reject_spec_with_int_tag tests/unit/channel_tests.py::ChannelTests::test_basic_reject_spec_with_long_tag tests/unit/channel_tests.py::ChannelTests::test_channel_open_add_callbacks_called tests/unit/channel_tests.py::ChannelTests::test_cleanup tests/unit/channel_tests.py::ChannelTests::test_close_basic_cancel_called tests/unit/channel_tests.py::ChannelTests::test_close_in_closed_state_raises_channel_error_and_stays_closed tests/unit/channel_tests.py::ChannelTests::test_close_in_closing_state_raises_already_closing tests/unit/channel_tests.py::ChannelTests::test_close_in_open_state_transitions_to_closing tests/unit/channel_tests.py::ChannelTests::test_close_in_opening_state tests/unit/channel_tests.py::ChannelTests::test_confirm_delivery_async tests/unit/channel_tests.py::ChannelTests::test_confirm_delivery_callback_basic_ack tests/unit/channel_tests.py::ChannelTests::test_confirm_delivery_callback_basic_nack tests/unit/channel_tests.py::ChannelTests::test_confirm_delivery_callback_without_nowait_selectok tests/unit/channel_tests.py::ChannelTests::test_confirm_delivery_callback_yes_basic_ack_callback tests/unit/channel_tests.py::ChannelTests::test_confirm_delivery_callback_yes_basic_nack_callback tests/unit/channel_tests.py::ChannelTests::test_confirm_delivery_no_callback_callback_call_count tests/unit/channel_tests.py::ChannelTests::test_confirm_delivery_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_confirm_delivery_raises_method_not_implemented_for_confirms tests/unit/channel_tests.py::ChannelTests::test_confirm_delivery_raises_method_not_implemented_for_nack tests/unit/channel_tests.py::ChannelTests::test_confirm_delivery_with_bad_callback_raises_value_error tests/unit/channel_tests.py::ChannelTests::test_consumer_tags tests/unit/channel_tests.py::ChannelTests::test_exchange_bind_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_exchange_bind_raises_value_error_on_invalid_callback tests/unit/channel_tests.py::ChannelTests::test_exchange_bind_rpc_request tests/unit/channel_tests.py::ChannelTests::test_exchange_bind_rpc_request_nowait tests/unit/channel_tests.py::ChannelTests::test_exchange_declare_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_exchange_declare_raises_value_error_on_invalid_callback tests/unit/channel_tests.py::ChannelTests::test_exchange_declare_rpc_request tests/unit/channel_tests.py::ChannelTests::test_exchange_declare_rpc_request_nowait tests/unit/channel_tests.py::ChannelTests::test_exchange_delete_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_exchange_delete_raises_value_error_on_invalid_callback tests/unit/channel_tests.py::ChannelTests::test_exchange_delete_rpc_request tests/unit/channel_tests.py::ChannelTests::test_exchange_delete_rpc_request_nowait tests/unit/channel_tests.py::ChannelTests::test_exchange_unbind_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_exchange_unbind_raises_value_error_on_invalid_callback tests/unit/channel_tests.py::ChannelTests::test_exchange_unbind_rpc_request tests/unit/channel_tests.py::ChannelTests::test_exchange_unbind_rpc_request_nowait tests/unit/channel_tests.py::ChannelTests::test_flow_off_rpc_request tests/unit/channel_tests.py::ChannelTests::test_flow_on_flowok_callback tests/unit/channel_tests.py::ChannelTests::test_flow_on_rpc_request tests/unit/channel_tests.py::ChannelTests::test_flow_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_flow_raises_invalid_callback tests/unit/channel_tests.py::ChannelTests::test_handle_content_frame_basic_deliver_called tests/unit/channel_tests.py::ChannelTests::test_handle_content_frame_basic_get_called tests/unit/channel_tests.py::ChannelTests::test_handle_content_frame_basic_return_called tests/unit/channel_tests.py::ChannelTests::test_handle_content_frame_method_returns_none tests/unit/channel_tests.py::ChannelTests::test_handle_content_frame_sets_header_frame tests/unit/channel_tests.py::ChannelTests::test_handle_content_frame_sets_method_frame tests/unit/channel_tests.py::ChannelTests::test_has_content_false tests/unit/channel_tests.py::ChannelTests::test_has_content_true tests/unit/channel_tests.py::ChannelTests::test_immediate_called_logger_warning tests/unit/channel_tests.py::ChannelTests::test_init_blocked tests/unit/channel_tests.py::ChannelTests::test_init_blocking tests/unit/channel_tests.py::ChannelTests::test_init_callbacks tests/unit/channel_tests.py::ChannelTests::test_init_cancelled tests/unit/channel_tests.py::ChannelTests::test_init_channel_number tests/unit/channel_tests.py::ChannelTests::test_init_connection tests/unit/channel_tests.py::ChannelTests::test_init_consumers tests/unit/channel_tests.py::ChannelTests::test_init_content_frame_assembler tests/unit/channel_tests.py::ChannelTests::test_init_flow tests/unit/channel_tests.py::ChannelTests::test_init_has_on_flow_callback tests/unit/channel_tests.py::ChannelTests::test_init_invalid_channel_number tests/unit/channel_tests.py::ChannelTests::test_init_on_flowok_callback tests/unit/channel_tests.py::ChannelTests::test_init_on_getok_callback tests/unit/channel_tests.py::ChannelTests::test_init_on_openok_callback tests/unit/channel_tests.py::ChannelTests::test_init_state tests/unit/channel_tests.py::ChannelTests::test_is_closed_false tests/unit/channel_tests.py::ChannelTests::test_is_closed_true tests/unit/channel_tests.py::ChannelTests::test_is_closing_false tests/unit/channel_tests.py::ChannelTests::test_is_closing_true tests/unit/channel_tests.py::ChannelTests::test_on_cancel_not_appended_cancelled tests/unit/channel_tests.py::ChannelTests::test_on_cancel_removed_consumer tests/unit/channel_tests.py::ChannelTests::test_on_cancelok_removed_consumer tests/unit/channel_tests.py::ChannelTests::test_on_close_from_broker_in_closing_state tests/unit/channel_tests.py::ChannelTests::test_on_close_from_broker_in_open_state tests/unit/channel_tests.py::ChannelTests::test_on_close_from_broker_warning tests/unit/channel_tests.py::ChannelTests::test_on_close_meta_in_closed_state_is_suppressed tests/unit/channel_tests.py::ChannelTests::test_on_close_meta_in_closing_state_transitions_to_closed tests/unit/channel_tests.py::ChannelTests::test_on_close_meta_in_open_state_transitions_to_closed tests/unit/channel_tests.py::ChannelTests::test_on_close_meta_in_opening_state_transitions_to_closed tests/unit/channel_tests.py::ChannelTests::test_on_closeok tests/unit/channel_tests.py::ChannelTests::test_on_closeok_following_close_from_broker tests/unit/channel_tests.py::ChannelTests::test_on_confirm_selectok tests/unit/channel_tests.py::ChannelTests::test_on_deliver_callback_called tests/unit/channel_tests.py::ChannelTests::test_on_eventok tests/unit/channel_tests.py::ChannelTests::test_on_flow tests/unit/channel_tests.py::ChannelTests::test_on_flow_with_callback tests/unit/channel_tests.py::ChannelTests::test_on_flowok tests/unit/channel_tests.py::ChannelTests::test_on_flowok_callback_reset tests/unit/channel_tests.py::ChannelTests::test_on_flowok_calls_callback tests/unit/channel_tests.py::ChannelTests::test_on_getempty tests/unit/channel_tests.py::ChannelTests::test_on_getok_callback_called tests/unit/channel_tests.py::ChannelTests::test_on_getok_callback_reset tests/unit/channel_tests.py::ChannelTests::test_on_getok_no_callback tests/unit/channel_tests.py::ChannelTests::test_on_openok_callback_called tests/unit/channel_tests.py::ChannelTests::test_on_openok_no_callback tests/unit/channel_tests.py::ChannelTests::test_on_synchronous_complete tests/unit/channel_tests.py::ChannelTests::test_onreturn tests/unit/channel_tests.py::ChannelTests::test_onreturn_warning tests/unit/channel_tests.py::ChannelTests::test_queue_bind_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_queue_bind_raises_value_error_on_invalid_callback tests/unit/channel_tests.py::ChannelTests::test_queue_bind_rpc_request tests/unit/channel_tests.py::ChannelTests::test_queue_bind_rpc_request_nowait tests/unit/channel_tests.py::ChannelTests::test_queue_declare_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_queue_declare_raises_value_error_on_invalid_callback tests/unit/channel_tests.py::ChannelTests::test_queue_declare_rpc_request tests/unit/channel_tests.py::ChannelTests::test_queue_declare_rpc_request_nowait tests/unit/channel_tests.py::ChannelTests::test_queue_delete_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_queue_delete_raises_value_error_on_invalid_callback tests/unit/channel_tests.py::ChannelTests::test_queue_delete_rpc_request tests/unit/channel_tests.py::ChannelTests::test_queue_delete_rpc_request_nowait tests/unit/channel_tests.py::ChannelTests::test_queue_purge_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_queue_purge_raises_value_error_on_invalid_callback tests/unit/channel_tests.py::ChannelTests::test_queue_purge_rpc_request tests/unit/channel_tests.py::ChannelTests::test_queue_purge_rpc_request_nowait tests/unit/channel_tests.py::ChannelTests::test_queue_unbind_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_queue_unbind_raises_value_error_on_invalid_callback tests/unit/channel_tests.py::ChannelTests::test_queue_unbind_rpc_request tests/unit/channel_tests.py::ChannelTests::test_raise_if_not_open_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_repr tests/unit/channel_tests.py::ChannelTests::test_rpc_adds_callback tests/unit/channel_tests.py::ChannelTests::test_rpc_enters_blocking_and_adds_on_synchronous_complete tests/unit/channel_tests.py::ChannelTests::test_rpc_not_blocking_and_no_on_synchronous_complete_when_no_replies tests/unit/channel_tests.py::ChannelTests::test_rpc_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_rpc_throws_type_error_with_invalid_callback tests/unit/channel_tests.py::ChannelTests::test_rpc_throws_value_error_with_unacceptable_replies tests/unit/channel_tests.py::ChannelTests::test_rpc_while_blocking_appends_blocked_collection tests/unit/channel_tests.py::ChannelTests::test_send_method tests/unit/channel_tests.py::ChannelTests::test_set_state tests/unit/channel_tests.py::ChannelTests::test_tx_commit_raises_channel_closed tests/unit/channel_tests.py::ChannelTests::test_tx_commit_rpc_request tests/unit/channel_tests.py::ChannelTests::test_tx_rollback_rpc_request tests/unit/channel_tests.py::ChannelTests::test_tx_select_rpc_request tests/unit/channel_tests.py::ChannelTests::test_validate_callback_raises_value_error_not_callable tests/unit/connection_tests.py::ConnectionTests::test_add_callbacks tests/unit/connection_tests.py::ConnectionTests::test_add_on_close_callback tests/unit/connection_tests.py::ConnectionTests::test_add_on_connection_blocked_callback tests/unit/connection_tests.py::ConnectionTests::test_add_on_connection_unblocked_callback tests/unit/connection_tests.py::ConnectionTests::test_add_on_open_error_callback tests/unit/connection_tests.py::ConnectionTests::test_blocked_connection_multiple_blocked_in_a_row_sets_timer_once tests/unit/connection_tests.py::ConnectionTests::test_blocked_connection_multiple_unblocked_in_a_row_removes_timer_once tests/unit/connection_tests.py::ConnectionTests::test_blocked_connection_on_stream_terminated_removes_timer tests/unit/connection_tests.py::ConnectionTests::test_blocked_connection_timeout_terminates_connection tests/unit/connection_tests.py::ConnectionTests::test_blocked_connection_unblocked_removes_timer tests/unit/connection_tests.py::ConnectionTests::test_channel tests/unit/connection_tests.py::ConnectionTests::test_channel_on_closed_connection_raises_connection_closed tests/unit/connection_tests.py::ConnectionTests::test_channel_on_closing_connection_raises_connection_closed tests/unit/connection_tests.py::ConnectionTests::test_channel_on_init_connection_raises_connection_closed tests/unit/connection_tests.py::ConnectionTests::test_channel_on_protocol_connection_raises_connection_closed tests/unit/connection_tests.py::ConnectionTests::test_channel_on_start_connection_raises_connection_closed tests/unit/connection_tests.py::ConnectionTests::test_channel_on_tune_connection_raises_connection_closed tests/unit/connection_tests.py::ConnectionTests::test_client_properties tests/unit/connection_tests.py::ConnectionTests::test_client_properties_default tests/unit/connection_tests.py::ConnectionTests::test_client_properties_override tests/unit/connection_tests.py::ConnectionTests::test_close_calls_on_close_ready_when_no_channels tests/unit/connection_tests.py::ConnectionTests::test_close_channels tests/unit/connection_tests.py::ConnectionTests::test_close_closes_open_channels tests/unit/connection_tests.py::ConnectionTests::test_close_closes_opening_channels tests/unit/connection_tests.py::ConnectionTests::test_close_does_not_close_closing_channels tests/unit/connection_tests.py::ConnectionTests::test_close_raises_wrong_state_when_already_closed_or_closing tests/unit/connection_tests.py::ConnectionTests::test_connect_no_adapter_connect_from_constructor_with_external_workflow tests/unit/connection_tests.py::ConnectionTests::test_connection_blocked_sets_timer tests/unit/connection_tests.py::ConnectionTests::test_create_with_blocked_connection_timeout_config tests/unit/connection_tests.py::ConnectionTests::test_deliver_frame_to_channel_with_frame_for_unknown_channel tests/unit/connection_tests.py::ConnectionTests::test_new_conn_should_use_first_channel tests/unit/connection_tests.py::ConnectionTests::test_next_channel_number_returns_lowest_unused tests/unit/connection_tests.py::ConnectionTests::test_on_channel_cleanup_closing_state_last_channel_calls_on_close_ready tests/unit/connection_tests.py::ConnectionTests::test_on_channel_cleanup_closing_state_more_channels_no_on_close_ready tests/unit/connection_tests.py::ConnectionTests::test_on_channel_cleanup_non_closing_state tests/unit/connection_tests.py::ConnectionTests::test_on_channel_cleanup_with_closing_channels tests/unit/connection_tests.py::ConnectionTests::test_on_connection_close_from_broker_passes_correct_exception tests/unit/connection_tests.py::ConnectionTests::test_on_connection_close_ok tests/unit/connection_tests.py::ConnectionTests::test_on_connection_start tests/unit/connection_tests.py::ConnectionTests::test_on_connection_tune tests/unit/connection_tests.py::ConnectionTests::test_on_data_available tests/unit/connection_tests.py::ConnectionTests::test_on_stream_connected tests/unit/connection_tests.py::ConnectionTests::test_on_stream_terminated_cleans_up tests/unit/connection_tests.py::ConnectionTests::test_on_stream_terminated_invokes_access_denied_on_connection_error_and_closed tests/unit/connection_tests.py::ConnectionTests::test_on_stream_terminated_invokes_auth_on_connection_error_and_closed tests/unit/connection_tests.py::ConnectionTests::test_on_stream_terminated_invokes_connection_closed_callback tests/unit/connection_tests.py::ConnectionTests::test_on_stream_terminated_invokes_protocol_on_connection_error_and_closed tests/unit/connection_tests.py::ConnectionTests::test_send_message_updates_frames_sent_and_bytes_sent tests/unit/connection_tests.py::ConnectionTests::test_set_backpressure_multiplier
pika/channel.py pika/connection.py
pika/channel.py pika/connection.py