diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a6b992102320531951b13dee6cde2ca2d13fde18..9f427e0e805b588b2fceeeae35b4b2248b0767ef 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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 diff --git a/coolamqp/objects.py b/coolamqp/objects.py index 22fd7962a224c8a92f2eb97d1ff75be211df5b3f..f1cf91999c650bee2cc642c26ee4a5a7e0df4b88 100644 --- a/coolamqp/objects.py +++ b/coolamqp/objects.py @@ -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""" diff --git a/tests/test_clustering/test_exchanges.py b/tests/test_clustering/test_exchanges.py index 070825dc1f108285c146e23d6cb35e6f889551a5..7bccd7c55315a506b3d7f62010d4051b6955a5e1 100644 --- a/tests/test_clustering/test_exchanges.py +++ b/tests/test_clustering/test_exchanges.py @@ -36,6 +36,7 @@ class TestExchanges(unittest.TestCase): grave_queue_name = uuid.uuid4().hex DEADLETTER = Exchange(xchg_name, type=b'direct') QUEUE = Queue(dead_queue_name, durable=True, auto_delete=False, exclusive=False) + logger.warning() GRAVEYARD_QUEUE = Queue(grave_queue_name, durable=True, auto_delete=False, arguments={'x-dead-letter-exchange': xchg_name, 'x-message-ttl': 1000}) self.c.declare(DEADLETTER).result() diff --git a/tests/test_objects.py b/tests/test_objects.py index b7fa700ab48bb1c46b98b7d271ea7a102233ebc7..830967c2fbd2b931ed9d3a8368ef75f2de18498c 100644 --- a/tests/test_objects.py +++ b/tests/test_objects.py @@ -1,5 +1,6 @@ # 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): @@ -26,9 +29,11 @@ class TestObjects(unittest.TestCase): 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',