1
1
<?php
2
2
3
+ namespace Clue \Tests \React \Redis ;
4
+
3
5
use Clue \React \Block ;
6
+ use Clue \React \Redis \Client ;
4
7
use Clue \React \Redis \Factory ;
5
8
use Clue \React \Redis \StreamingClient ;
9
+ use React \EventLoop \StreamSelectLoop ;
6
10
use React \Promise \Deferred ;
7
- use React \Stream \Stream ;
8
11
use React \Stream \DuplexResourceStream ;
9
12
10
13
class FunctionalTest extends TestCase
@@ -20,7 +23,7 @@ public function setUp()
20
23
$ this ->markTestSkipped ('No REDIS_URI environment variable given ' );
21
24
}
22
25
23
- $ this ->loop = new React \ EventLoop \ StreamSelectLoop ();
26
+ $ this ->loop = new StreamSelectLoop ();
24
27
$ this ->factory = new Factory ($ this ->loop );
25
28
$ this ->client = $ this ->createClient ($ uri );
26
29
}
@@ -55,10 +58,10 @@ public function testPipeline()
55
58
{
56
59
$ client = $ this ->client ;
57
60
58
- $ client ->set ('a ' , 1 )->then ($ this ->expectCallableOnce ('OK ' ));
59
- $ client ->incr ('a ' )->then ($ this ->expectCallableOnce (2 ));
60
- $ client ->incr ('a ' )->then ($ this ->expectCallableOnce (3 ));
61
- $ promise = $ client ->get ('a ' )->then ($ this ->expectCallableOnce ('3 ' ));
61
+ $ client ->set ('a ' , 1 )->then ($ this ->expectCallableOnceWith ('OK ' ));
62
+ $ client ->incr ('a ' )->then ($ this ->expectCallableOnceWith (2 ));
63
+ $ client ->incr ('a ' )->then ($ this ->expectCallableOnceWith (3 ));
64
+ $ promise = $ client ->get ('a ' )->then ($ this ->expectCallableOnceWith ('3 ' ));
62
65
63
66
Block \await ($ promise , $ this ->loop );
64
67
}
@@ -67,14 +70,18 @@ public function testInvalidCommand()
67
70
{
68
71
$ promise = $ this ->client ->doesnotexist (1 , 2 , 3 );
69
72
70
- $ this ->setExpectedException ('Exception ' );
73
+ if (method_exists ($ this , 'expectException ' )) {
74
+ $ this ->expectException ('Exception ' );
75
+ } else {
76
+ $ this ->setExpectedException ('Exception ' );
77
+ }
71
78
Block \await ($ promise , $ this ->loop );
72
79
}
73
80
74
81
public function testMultiExecEmpty ()
75
82
{
76
- $ this ->client ->multi ()->then ($ this ->expectCallableOnce ('OK ' ));
77
- $ promise = $ this ->client ->exec ()->then ($ this ->expectCallableOnce (array ()));
83
+ $ this ->client ->multi ()->then ($ this ->expectCallableOnceWith ('OK ' ));
84
+ $ promise = $ this ->client ->exec ()->then ($ this ->expectCallableOnceWith (array ()));
78
85
79
86
Block \await ($ promise , $ this ->loop );
80
87
}
@@ -83,12 +90,12 @@ public function testMultiExecQueuedExecHasValues()
83
90
{
84
91
$ client = $ this ->client ;
85
92
86
- $ client ->multi ()->then ($ this ->expectCallableOnce ('OK ' ));
87
- $ client ->set ('b ' , 10 )->then ($ this ->expectCallableOnce ('QUEUED ' ));
88
- $ client ->expire ('b ' , 20 )->then ($ this ->expectCallableOnce ('QUEUED ' ));
89
- $ client ->incrBy ('b ' , 2 )->then ($ this ->expectCallableOnce ('QUEUED ' ));
90
- $ client ->ttl ('b ' )->then ($ this ->expectCallableOnce ('QUEUED ' ));
91
- $ promise = $ client ->exec ()->then ($ this ->expectCallableOnce (array ('OK ' , 1 , 12 , 20 )));
93
+ $ client ->multi ()->then ($ this ->expectCallableOnceWith ('OK ' ));
94
+ $ client ->set ('b ' , 10 )->then ($ this ->expectCallableOnceWith ('QUEUED ' ));
95
+ $ client ->expire ('b ' , 20 )->then ($ this ->expectCallableOnceWith ('QUEUED ' ));
96
+ $ client ->incrBy ('b ' , 2 )->then ($ this ->expectCallableOnceWith ('QUEUED ' ));
97
+ $ client ->ttl ('b ' )->then ($ this ->expectCallableOnceWith ('QUEUED ' ));
98
+ $ promise = $ client ->exec ()->then ($ this ->expectCallableOnceWith (array ('OK ' , 1 , 12 , 20 )));
92
99
93
100
Block \await ($ promise , $ this ->loop );
94
101
}
@@ -107,7 +114,7 @@ public function testPubSub()
107
114
$ consumer ->subscribe ($ channel )->then ($ this ->expectCallableOnce ());
108
115
109
116
// producer sends a single message
110
- $ producer ->publish ($ channel , 'hello world ' )->then ($ this ->expectCallableOnce (1 ));
117
+ $ producer ->publish ($ channel , 'hello world ' )->then ($ this ->expectCallableOnceWith (1 ));
111
118
112
119
// expect "message" event to take no longer than 0.1s
113
120
Block \await ($ deferred ->promise (), $ this ->loop , 0.1 );
@@ -131,7 +138,11 @@ public function testInvalidProtocol()
131
138
132
139
$ promise = $ client ->get ('willBeRejectedDueToClosing ' );
133
140
134
- $ this ->setExpectedException ('Exception ' );
141
+ if (method_exists ($ this , 'expectException ' )) {
142
+ $ this ->expectException ('Exception ' );
143
+ } else {
144
+ $ this ->setExpectedException ('Exception ' );
145
+ }
135
146
Block \await ($ promise , $ this ->loop );
136
147
}
137
148
@@ -142,7 +153,7 @@ public function testInvalidServerRepliesWithDuplicateMessages()
142
153
$ client ->on ('error ' , $ this ->expectCallableOnce ());
143
154
$ client ->on ('close ' , $ this ->expectCallableOnce ());
144
155
145
- $ promise = $ client ->set ('a ' , 0 )->then ($ this ->expectCallableOnce ('OK ' ));
156
+ $ promise = $ client ->set ('a ' , 0 )->then ($ this ->expectCallableOnceWith ('OK ' ));
146
157
147
158
Block \await ($ promise , $ this ->loop );
148
159
}
@@ -162,15 +173,8 @@ protected function createClientResponse($response)
162
173
fwrite ($ fp , $ response );
163
174
fseek ($ fp , 0 );
164
175
165
- $ stream = class_exists ( ' React\Stream\DuplexResourceStream ' ) ? new DuplexResourceStream ( $ fp , $ this -> loop ) : new Stream ($ fp , $ this ->loop );
176
+ $ stream = new DuplexResourceStream ($ fp , $ this ->loop );
166
177
167
178
return new StreamingClient ($ stream );
168
179
}
169
-
170
- protected function createServer ($ response )
171
- {
172
- $ port = 1337 ;
173
- $ cmd = 'echo -e " ' . str_replace ("\r\n" , '\r\n ' , $ response ) . '" | nc -lC ' . $ port ;
174
-
175
- }
176
180
}
0 commit comments