diff options
author | Ask Solem <ask@celeryproject.org> | 2011-04-07 15:53:29 +0200 |
---|---|---|
committer | Ask Solem <ask@celeryproject.org> | 2011-04-07 15:53:29 +0200 |
commit | d6601ec92cde9fe7f8a271d6bf1828557c1df32e (patch) | |
tree | 390a1580fa289311d1ca07b18ead102d8cee0d9c /funtests | |
parent | baeafa0b9fb8270bf10f9cd853ed4ebe9783155a (diff) | |
download | kombu-d6601ec92cde9fe7f8a271d6bf1828557c1df32e.tar.gz |
Closes cyclic reference in Connection
Diffstat (limited to 'funtests')
-rw-r--r-- | funtests/transport.py | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/funtests/transport.py b/funtests/transport.py index a25dafb3..bca28119 100644 --- a/funtests/transport.py +++ b/funtests/transport.py @@ -5,11 +5,13 @@ import sys import time import unittest2 as unittest import warnings +import weakref from nose import SkipTest from kombu import BrokerConnection from kombu import Producer, Consumer, Exchange, Queue +from kombu.tests.utils import skip_if_quick if sys.version_info >= (2, 5): from hashlib import sha256 as _digest @@ -119,6 +121,7 @@ class TransportCase(unittest.TestCase): def _digest(self, data): return _digest(data).hexdigest() + @skip_if_quick def test_produce__consume_large_messages(self, bytes=1048576, n=10, charset=string.punctuation + string.letters + string.digits): if not self.verify_alive(): @@ -156,8 +159,6 @@ class TransportCase(unittest.TestCase): chan1.close() self.purge([self.queue.name]) - - def P(self, rest): return "%s.%s" % (self.prefix, rest) @@ -214,6 +215,45 @@ class TransportCase(unittest.TestCase): self.assertEqual(m.payload, {"basic.get": "this"}) chan2.close() + def test_cyclic_reference_transport(self): + if not self.verify_alive(): + return + + def _createref(): + conn = self.get_connection() + conn.transport + conn.close() + return weakref.ref(conn) + + self.assertIsNone(_createref()()) + + + def test_cyclic_reference_connection(self): + if not self.verify_alive(): + return + + def _createref(): + conn = self.get_connection() + conn.connect() + conn.close() + return weakref.ref(conn) + + self.assertIsNone(_createref()()) + + def test_cyclic_reference_channel(self): + if not self.verify_alive(): + return + + def _createref(): + conn = self.get_connection() + conn.connect() + channel = conn.channel() + channel.close() + conn.close() + return weakref.ref(conn) + + self.assertIsNone(_createref()()) + def tearDown(self): if self.transport and self.connected: self.connection.close() |