@@ -13,11 +13,9 @@ def test_publish_subscribe_unsubscribe_pubsub
13
13
14
14
thread = Thread . new do
15
15
redis . subscribe ( 'channel1' , 'channel2' ) do |on |
16
- on . subscribe { |_c , t | sub_cnt = t }
17
- on . unsubscribe { |_c , t | sub_cnt = t }
16
+ on . subscribe { sub_cnt += 1 }
18
17
on . message do |c , msg |
19
18
messages [ c ] = msg
20
- # FIXME: blocking occurs when `unsubscribe` method was called with channel arguments
21
19
redis . unsubscribe if messages . size == 2
22
20
end
23
21
end
@@ -27,28 +25,19 @@ def test_publish_subscribe_unsubscribe_pubsub
27
25
28
26
publisher = build_another_client
29
27
30
- assert_equal %w[ channel1 channel2 ] , publisher . pubsub ( :channels )
31
- assert_equal %w[ channel1 channel2 ] , publisher . pubsub ( :channels , 'cha*' )
32
- assert_equal [ ] , publisher . pubsub ( :channels , 'chachacha*' )
33
- assert_equal ( { } , publisher . pubsub ( :numsub ) )
28
+ assert_equal %w[ channel1 channel2 ] , publisher . pubsub ( :channels , 'channel*' )
34
29
assert_equal ( { 'channel1' => 1 , 'channel2' => 1 , 'channel3' => 0 } ,
35
30
publisher . pubsub ( :numsub , 'channel1' , 'channel2' , 'channel3' ) )
36
- assert_equal 0 , publisher . pubsub ( :numpat )
37
31
38
32
publisher . publish ( 'channel1' , 'one' )
39
33
publisher . publish ( 'channel2' , 'two' )
34
+ publisher . publish ( 'channel3' , 'three' )
40
35
41
36
thread . join
42
37
43
- assert_equal ( { 'channel1' => 'one' , 'channel2' => 'two' } , messages . sort . to_h )
44
-
45
- assert_equal [ ] , publisher . pubsub ( :channels )
46
- assert_equal [ ] , publisher . pubsub ( :channels , 'cha*' )
47
- assert_equal [ ] , publisher . pubsub ( :channels , 'chachacha*' )
48
- assert_equal ( { } , publisher . pubsub ( :numsub ) )
49
- assert_equal ( { 'channel1' => 0 , 'channel2' => 0 , 'channel3' => 0 } ,
50
- publisher . pubsub ( :numsub , 'channel1' , 'channel2' , 'channel3' ) )
51
- assert_equal 0 , publisher . pubsub ( :numpat )
38
+ assert_equal ( 2 , messages . size )
39
+ assert_equal ( 'one' , messages [ 'channel1' ] )
40
+ assert_equal ( 'two' , messages [ 'channel2' ] )
52
41
end
53
42
54
43
def test_publish_psubscribe_punsubscribe_pubsub
@@ -57,11 +46,9 @@ def test_publish_psubscribe_punsubscribe_pubsub
57
46
58
47
thread = Thread . new do
59
48
redis . psubscribe ( 'guc*' , 'her*' ) do |on |
60
- on . psubscribe { |_c , t | sub_cnt = t }
61
- on . punsubscribe { |_c , t | sub_cnt = t }
62
- on . pmessage do |_ptn , chn , msg |
63
- messages [ chn ] = msg
64
- # FIXME: blocking occurs when `unsubscribe` method was called with channel arguments
49
+ on . psubscribe { sub_cnt += 1 }
50
+ on . pmessage do |_ptn , c , msg |
51
+ messages [ c ] = msg
65
52
redis . punsubscribe if messages . size == 2
66
53
end
67
54
end
@@ -71,13 +58,6 @@ def test_publish_psubscribe_punsubscribe_pubsub
71
58
72
59
publisher = build_another_client
73
60
74
- assert_equal [ ] , publisher . pubsub ( :channels )
75
- assert_equal [ ] , publisher . pubsub ( :channels , 'bur*' )
76
- assert_equal [ ] , publisher . pubsub ( :channels , 'guc*' )
77
- assert_equal [ ] , publisher . pubsub ( :channels , 'her*' )
78
- assert_equal ( { } , publisher . pubsub ( :numsub ) )
79
- assert_equal ( { 'burberry1' => 0 , 'gucci2' => 0 , 'hermes3' => 0 } ,
80
- publisher . pubsub ( :numsub , 'burberry1' , 'gucci2' , 'hermes3' ) )
81
61
assert_equal 2 , publisher . pubsub ( :numpat )
82
62
83
63
publisher . publish ( 'burberry1' , 'one' )
@@ -86,15 +66,8 @@ def test_publish_psubscribe_punsubscribe_pubsub
86
66
87
67
thread . join
88
68
89
- assert_equal ( { 'gucci2' => 'two' , 'hermes3' => 'three' } , messages . sort . to_h )
90
-
91
- assert_equal [ ] , publisher . pubsub ( :channels )
92
- assert_equal [ ] , publisher . pubsub ( :channels , 'bur*' )
93
- assert_equal [ ] , publisher . pubsub ( :channels , 'guc*' )
94
- assert_equal [ ] , publisher . pubsub ( :channels , 'her*' )
95
- assert_equal ( { } , publisher . pubsub ( :numsub ) )
96
- assert_equal ( { 'burberry1' => 0 , 'gucci2' => 0 , 'hermes3' => 0 } ,
97
- publisher . pubsub ( :numsub , 'burberry1' , 'gucci2' , 'hermes3' ) )
98
- assert_equal 0 , publisher . pubsub ( :numpat )
69
+ assert_equal ( 2 , messages . size )
70
+ assert_equal ( 'two' , messages [ 'gucci2' ] )
71
+ assert_equal ( 'three' , messages [ 'hermes3' ] )
99
72
end
100
73
end
0 commit comments