Skip to content
Snippets Groups Projects
Commit 617836ef authored by Piotr Maślanka's avatar Piotr Maślanka
Browse files

fixes #3

parent 3abdfb2b
No related branches found
No related tags found
No related merge requests found
Pipeline #63421 failed with stages
in 1 minute and 8 seconds
......@@ -60,18 +60,18 @@ unittest_select:
unittest_epoll_python27:
extends: .before_test
stage: unittest
image: python:2.7
variables:
AMQP_HOST: "rabbitmq"
before_script:
- pip install nose2 nose2[coverage_plugin]
- pip install nose2 coverage requests yapf nose2[coverage_plugin]
- python setup.py install
script:
- nose2 -F -vv
variables:
AMQP_HOST: "rabbitmq"
after_script:
- mv .coverage .coverage.python27epoll
services:
- name: rabbitmq:3.10-management
alias: rabbitmq
unittest_epoll:
extends: .before_test
......
......@@ -27,6 +27,8 @@ def toutf8(q):
def tobytes(q):
if isinstance(q, memoryview):
return q.tobytes()
return q.encode('utf-8') if isinstance(q, six.text_type) else q
......@@ -287,8 +289,7 @@ class Queue(object):
if name is None:
self.name = None
else:
name = uuid.uuid4().hex if not name else name
self.name = tobytes(name)
self.name = tobytes(uuid.uuid4().hex if not name else name)
self.durable = durable
self.exchange = exchange
......@@ -303,10 +304,10 @@ class Queue(object):
if self.anonymous and (not self.auto_delete or self.durable):
raise ValueError('Zero sense to make a anonymous non-auto-delete or durable queue')
if not self.anonymous:
if self.auto_delete or self.exclusive:
warnings.warn('This may cause unpredictable behaviour', UserWarning)
elif self.durable:
if not self.anonymous and (self.auto_delete or self.exclusive):
warnings.warn('This may cause unpredictable behaviour', UserWarning)
if self.durable and self.anonymous:
raise ValueError('Cannot declare an anonymous durable queue')
if self.auto_delete and not self.exclusive and not self.anonymous:
......@@ -323,6 +324,9 @@ class Queue(object):
def __hash__(self):
return hash(self.name)
def __repr__(self):
return 'Queue(%s, %s, %s, %s, %s, %s' % (self.name, self.durable, self.exchange, self.exclusive, self.arguments)
class QueueBind(object):
"""An order to be declared which binds a given queue to an exchange"""
......
......@@ -13,6 +13,7 @@ from coolamqp.objects import Message, NodeDefinition, Queue, MessageProperties,
NODE = NodeDefinition(os.environ.get('AMQP_HOST', '127.0.0.1'), 'guest', 'guest', heartbeat=20)
logging.basicConfig(level=logging.DEBUG)
logging.getLogger('coolamqp').setLevel(logging.DEBUG)
logger = logging.getLogger(__name__)
class TestExchanges(unittest.TestCase):
......
# coding=UTF-8
from __future__ import print_function, absolute_import, division
import sys
import logging
import unittest
import io
......@@ -13,6 +14,8 @@ from coolamqp.objects import NodeDefinition, MessageProperties, Queue, argumenti
logger = logging.getLogger(__name__)
logging.getLogger('coolamqp').setLevel(logging.DEBUG)
IS_PY3 = sys.version.startswith('3')
class TestObjects(unittest.TestCase):
......@@ -21,14 +24,19 @@ class TestObjects(unittest.TestCase):
self.assertRaises(ValueError, Queue, 'test', auto_delete=True, durable=True)
self.assertRaises(ValueError, Queue, None, auto_delete=False)
self.assertRaises(ValueError, Queue, 'test', auto_delete=True, exclusive=False)
@unittest.skipIf(sys.version.startswith('3'), 'Needs Python 3.x')
def test_queue_warns(self):
warnings.resetwarnings()
with warnings.catch_warnings(record=True) as w:
Queue('test', auto_delete=True, exclusive=True)
Queue(auto_delete=True, exclusive=False)
self.assertEqual(len(w), 2)
logger.warning(repr(w))
self.assertEqual(len(w), 2 if IS_PY3 else 1)
self.assertTrue(issubclass(w[0].category, UserWarning))
self.assertTrue(issubclass(w[1].category, DeprecationWarning))
if IS_PY3:
self.assertTrue(issubclass(w[1].category, DeprecationWarning))
def test_queue_declare(self):
args = argumentify({'x-dead-letter-exchange': 'deadletter',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment