summaryrefslogtreecommitdiff
path: root/funtests
diff options
context:
space:
mode:
authorAsk Solem <ask@celeryproject.org>2011-04-07 15:53:29 +0200
committerAsk Solem <ask@celeryproject.org>2011-04-07 15:53:29 +0200
commitd6601ec92cde9fe7f8a271d6bf1828557c1df32e (patch)
tree390a1580fa289311d1ca07b18ead102d8cee0d9c /funtests
parentbaeafa0b9fb8270bf10f9cd853ed4ebe9783155a (diff)
downloadkombu-d6601ec92cde9fe7f8a271d6bf1828557c1df32e.tar.gz
Closes cyclic reference in Connection
Diffstat (limited to 'funtests')
-rw-r--r--funtests/transport.py44
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()