Skip to content

Commit

Permalink
Merge 0913fe8 into b99e701
Browse files Browse the repository at this point in the history
  • Loading branch information
yorinasub17 committed Feb 1, 2017
2 parents b99e701 + 0913fe8 commit 354a519
Show file tree
Hide file tree
Showing 6 changed files with 105 additions and 1 deletion.
10 changes: 10 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
language: python
python:
- "2.7"
- "3.4"
before_script:
- pip install python-coveralls coverage
# command to run tests
script: coverage run --source kombu_redis_priority setup.py test
after_success:
- coveralls
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,9 @@
# kombu-redis-priority

[![Build Status](https://travis-ci.org/Captricity/kombu-redis-priority.svg?branch=master)](https://travis-ci.org/Captricity/kombu-redis-priority) [![Coverage Status](https://coveralls.io/repos/Captricity/kombu-redis-priority/badge.png?branch=master)](https://coveralls.io/r/Captricity/kombu-redis-priority?branch=master)

Kombu Transport using Redis SortedSets

## Running tests

python setup.py test
9 changes: 8 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,12 @@
classifiers=[],
install_requires=[
'kombu'
]
],
tests_require=[
'six',
'mock==1.0.1',
'freezegun',
'fakeredis'
],
test_suite='tests'
)
Binary file added tests/.test_sortedset_transport.py.swp
Binary file not shown.
Empty file added tests/__init__.py
Empty file.
80 changes: 80 additions & 0 deletions tests/test_sortedset_transport.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
from __future__ import unicode_literals

import unittest
import mock
import fakeredis
import freezegun
import json
import time
import six

from kombu import Connection
from kombu_redis_priority.transport.redis_priority_async import redis, Transport


class TestSortedSetTransport(unittest.TestCase):
def setUp(self):
self.faker = fakeredis.FakeStrictRedis()
with mock.patch.object(redis, 'StrictRedis', fakeredis.FakeStrictRedis):
self.connection = self.create_connection()
self.channel = self.connection.default_channel

def tearDown(self):
self.faker.flushall()

def create_connection(self):
return Connection(transport=Transport)

def _prefixed_message(self, time_, msg_obj):
return six.b('{:011d}:'.format(int(time_)) + json.dumps(msg_obj))

def test_default_message_add(self):
raw_db = self.faker._db

# assert no queues exist
self.assertEqual(len(raw_db), 0)

# put a blank message, locking the time
with freezegun.freeze_time('1985-10-12'):
faketime = time.time()
self.channel._put('foo', {})

# verify queue is created
self.assertEqual(len(raw_db), 1)

# ... and verify queue has a message
raw_queue = raw_db['foo']
self.assertEqual(len(raw_queue), 1)

# verify message:
# - a time prefix is appended to the message
# - has default priority (0)
enqueued_msg, priority = next(six.iteritems(raw_queue))
self.assertEqual(enqueued_msg, self._prefixed_message(faketime, {}))
self.assertEqual(priority, 0.0)

def test_prioritized_message_add(self):
raw_db = self.faker._db
msg = {'properties': {'priority': 5}}

# assert no queues exist
self.assertEqual(len(raw_db), 0)

# put a blank message, locking the time
with freezegun.freeze_time('1985-10-12'):
faketime = time.time()
self.channel._put('foo', msg)

# verify queue is created
self.assertEqual(len(raw_db), 1)

# ... and verify queue has a message
raw_queue = raw_db['foo']
self.assertEqual(len(raw_queue), 1)

# verify message:
# - a time prefix is appended to the message
# - has default priority (0)
enqueued_msg, priority = next(six.iteritems(raw_queue))
self.assertEqual(enqueued_msg, self._prefixed_message(faketime, msg))
self.assertEqual(priority, 5.0)

0 comments on commit 354a519

Please sign in to comment.