Skip to content

Commit 018e132

Browse files
committed
make sure we know the order of expected subscribe/unsubscribe messages
1 parent 169cc02 commit 018e132

File tree

4 files changed

+24
-17
lines changed

4 files changed

+24
-17
lines changed

tests/conftest.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import pytest
22
import redis
33

4+
from distutils.version import StrictVersion
5+
46

57
_REDIS_VERSIONS = {}
68

@@ -30,9 +32,8 @@ def teardown():
3032

3133

3234
def skip_if_server_version_lt(min_version):
33-
version = get_version()
34-
c = "StrictVersion('%s') < StrictVersion('%s')" % (version, min_version)
35-
return pytest.mark.skipif(c)
35+
check = StrictVersion(get_version()) < StrictVersion(min_version)
36+
return pytest.mark.skipif(check, reason="")
3637

3738

3839
@pytest.fixture()

tests/test_commands.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
from redis import exceptions
1212

1313
from .conftest import skip_if_server_version_lt
14-
# won't need this after next version of pytest
15-
from distutils.version import StrictVersion
1614

1715

1816
# RESPONSE CALLBACKS

tests/test_connection_pool.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@
99
from redis._compat import Queue
1010
from .conftest import skip_if_server_version_lt
1111

12-
# won't need this after next version of pytest
13-
from distutils.version import StrictVersion
14-
1512

1613
class DummyConnection(object):
1714
description_format = "DummyConnection<>"

tests/test_pubsub.py

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,15 @@ class TestPubSubSubscribeUnsubscribe(object):
5454

5555
def _test_subscribe_unsubscribe(self, p, sub_type, unsub_type, sub_func,
5656
unsub_func, keys):
57-
assert sub_func(*keys) is None
57+
assert sub_func(keys[0]) is None
58+
assert sub_func(keys[1]) is None
5859

5960
# should be 2 messages indicating that we've subscribed
6061
assert wait_for_message(p) == make_message(sub_type, keys[0], 1)
6162
assert wait_for_message(p) == make_message(sub_type, keys[1], 2)
6263

63-
assert unsub_func(*keys) is None
64+
assert unsub_func(keys[0]) is None
65+
assert unsub_func(keys[1]) is None
6466

6567
# should be 2 messages indicating that we've unsubscribed
6668
assert wait_for_message(p) == make_message(unsub_type, keys[0], 1)
@@ -76,19 +78,28 @@ def test_pattern_subscribe_unsubscribe(self, r):
7678

7779
def _test_resubscribe_on_reconnection(self, p, sub_type, unsub_type,
7880
sub_func, unsub_func, keys):
79-
assert sub_func(*keys) is None
81+
assert sub_func(keys[0]) is None
82+
assert sub_func(keys[1]) is None
8083

81-
for i, key in enumerate(keys):
82-
i += 1 # enumerate is 0 index, but we want 1 based indexing
83-
assert wait_for_message(p) == make_message(sub_type, key, i)
84+
# should be 2 messages indicating that we've subscribed
85+
assert wait_for_message(p) == make_message(sub_type, keys[0], 1)
86+
assert wait_for_message(p) == make_message(sub_type, keys[1], 2)
8487

8588
# manually disconnect
8689
p.connection.disconnect()
8790

8891
# calling get_message again reconnects and resubscribes
89-
for i, key in enumerate(keys):
90-
i += 1 # enumerate is 0 index, but we want 1 based indexing
91-
assert wait_for_message(p) == make_message(sub_type, key, i)
92+
# note, we may not re-subscribe to channels in exactly the same order
93+
message1 = wait_for_message(p)
94+
message2 = wait_for_message(p)
95+
96+
assert message1['type'] == sub_type
97+
assert message1['channel'] in keys
98+
assert message1['data'] == 1
99+
assert message2['type'] == sub_type
100+
assert message2['channel'] in keys
101+
assert message2['data'] == 2
102+
assert message1['channel'] != message2['channel']
92103

93104
def test_resubscribe_to_channels_on_reconnection(self, r):
94105
kwargs = make_subscribe_test_data(r.pubsub(), 'channel')

0 commit comments

Comments
 (0)