29
29
30
30
from zerorpc import zmq
31
31
import zerorpc
32
- from testutils import teardown , random_ipc_endpoint
32
+ from testutils import teardown , random_ipc_endpoint , TIME_FACTOR
33
33
34
34
35
35
def test_close_server_bufchan ():
@@ -43,17 +43,17 @@ def test_close_server_bufchan():
43
43
client = zerorpc .ChannelMultiplexer (client_events , ignore_broadcast = True )
44
44
45
45
client_channel = client .channel ()
46
- client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = 2 )
46
+ client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = TIME_FACTOR * 2 )
47
47
client_bufchan = zerorpc .BufferedChannel (client_hbchan )
48
48
client_bufchan .emit ('openthat' , None )
49
49
50
50
event = server .recv ()
51
51
server_channel = server .channel (event )
52
- server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = 2 )
52
+ server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = TIME_FACTOR * 2 )
53
53
server_bufchan = zerorpc .BufferedChannel (server_hbchan )
54
54
server_bufchan .recv ()
55
55
56
- gevent .sleep (3 )
56
+ gevent .sleep (TIME_FACTOR * 3 )
57
57
print 'CLOSE SERVER SOCKET!!!'
58
58
server_bufchan .close ()
59
59
if sys .version_info < (2 , 7 ):
@@ -78,17 +78,17 @@ def test_close_client_bufchan():
78
78
client = zerorpc .ChannelMultiplexer (client_events , ignore_broadcast = True )
79
79
80
80
client_channel = client .channel ()
81
- client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = 2 )
81
+ client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = TIME_FACTOR * 2 )
82
82
client_bufchan = zerorpc .BufferedChannel (client_hbchan )
83
83
client_bufchan .emit ('openthat' , None )
84
84
85
85
event = server .recv ()
86
86
server_channel = server .channel (event )
87
- server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = 2 )
87
+ server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = TIME_FACTOR * 2 )
88
88
server_bufchan = zerorpc .BufferedChannel (server_hbchan )
89
89
server_bufchan .recv ()
90
90
91
- gevent .sleep (3 )
91
+ gevent .sleep (TIME_FACTOR * 3 )
92
92
print 'CLOSE CLIENT SOCKET!!!'
93
93
client_bufchan .close ()
94
94
if sys .version_info < (2 , 7 ):
@@ -113,15 +113,15 @@ def test_heartbeat_can_open_channel_server_close():
113
113
client = zerorpc .ChannelMultiplexer (client_events , ignore_broadcast = True )
114
114
115
115
client_channel = client .channel ()
116
- client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = 2 )
116
+ client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = TIME_FACTOR * 2 )
117
117
client_bufchan = zerorpc .BufferedChannel (client_hbchan )
118
118
119
119
event = server .recv ()
120
120
server_channel = server .channel (event )
121
- server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = 2 )
121
+ server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = TIME_FACTOR * 2 )
122
122
server_bufchan = zerorpc .BufferedChannel (server_hbchan )
123
123
124
- gevent .sleep (3 )
124
+ gevent .sleep (TIME_FACTOR * 3 )
125
125
print 'CLOSE SERVER SOCKET!!!'
126
126
server_bufchan .close ()
127
127
if sys .version_info < (2 , 7 ):
@@ -146,25 +146,31 @@ def test_heartbeat_can_open_channel_client_close():
146
146
client = zerorpc .ChannelMultiplexer (client_events , ignore_broadcast = True )
147
147
148
148
client_channel = client .channel ()
149
- client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = 2 )
149
+ client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = TIME_FACTOR * 2 )
150
150
client_bufchan = zerorpc .BufferedChannel (client_hbchan )
151
151
152
- event = server .recv ()
153
- server_channel = server .channel (event )
154
- server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = 2 )
155
- server_bufchan = zerorpc .BufferedChannel (server_hbchan )
156
-
157
- gevent .sleep (3 )
152
+ def server_fn ():
153
+ event = server .recv ()
154
+ server_channel = server .channel (event )
155
+ server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = TIME_FACTOR * 2 )
156
+ server_bufchan = zerorpc .BufferedChannel (server_hbchan )
157
+ try :
158
+ while True :
159
+ gevent .sleep (1 )
160
+ finally :
161
+ server_bufchan .close ()
162
+ server_coro = gevent .spawn (server_fn )
163
+
164
+ gevent .sleep (TIME_FACTOR * 3 )
158
165
print 'CLOSE CLIENT SOCKET!!!'
159
166
client_bufchan .close ()
160
167
client .close ()
161
168
if sys .version_info < (2 , 7 ):
162
- assert_raises (zerorpc .LostRemote , client_bufchan . recv )
169
+ assert_raises (zerorpc .LostRemote , server_coro . get () )
163
170
else :
164
171
with assert_raises (zerorpc .LostRemote ):
165
- client_bufchan . recv ()
172
+ server_coro . get ()
166
173
print 'SERVER LOST CLIENT :)'
167
- server_bufchan .close ()
168
174
server .close ()
169
175
170
176
@@ -178,16 +184,11 @@ def test_do_some_req_rep():
178
184
client_events .connect (endpoint )
179
185
client = zerorpc .ChannelMultiplexer (client_events , ignore_broadcast = True )
180
186
181
- client_channel = client .channel ()
182
- client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = 2 )
183
- client_bufchan = zerorpc .BufferedChannel (client_hbchan )
184
-
185
- event = server .recv ()
186
- server_channel = server .channel (event )
187
- server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = 2 )
188
- server_bufchan = zerorpc .BufferedChannel (server_hbchan )
189
187
190
188
def client_do ():
189
+ client_channel = client .channel ()
190
+ client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = TIME_FACTOR * 2 )
191
+ client_bufchan = zerorpc .BufferedChannel (client_hbchan )
191
192
for x in xrange (20 ):
192
193
client_bufchan .emit ('add' , (x , x * x ))
193
194
event = client_bufchan .recv ()
@@ -199,6 +200,11 @@ def client_do():
199
200
coro_pool .spawn (client_do )
200
201
201
202
def server_do ():
203
+ event = server .recv ()
204
+ server_channel = server .channel (event )
205
+ server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = TIME_FACTOR * 2 )
206
+ server_bufchan = zerorpc .BufferedChannel (server_hbchan )
207
+
202
208
for x in xrange (20 ):
203
209
event = server_bufchan .recv ()
204
210
assert event .name == 'add'
@@ -225,7 +231,7 @@ def test_do_some_req_rep_lost_server():
225
231
def client_do ():
226
232
print 'running'
227
233
client_channel = client .channel ()
228
- client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = 2 )
234
+ client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = TIME_FACTOR * 2 )
229
235
client_bufchan = zerorpc .BufferedChannel (client_hbchan )
230
236
for x in xrange (10 ):
231
237
client_bufchan .emit ('add' , (x , x * x ))
@@ -246,7 +252,7 @@ def client_do():
246
252
def server_do ():
247
253
event = server .recv ()
248
254
server_channel = server .channel (event )
249
- server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = 2 )
255
+ server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = TIME_FACTOR * 2 )
250
256
server_bufchan = zerorpc .BufferedChannel (server_hbchan )
251
257
for x in xrange (10 ):
252
258
event = server_bufchan .recv ()
@@ -273,7 +279,7 @@ def test_do_some_req_rep_lost_client():
273
279
274
280
def client_do ():
275
281
client_channel = client .channel ()
276
- client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = 2 )
282
+ client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = TIME_FACTOR * 2 )
277
283
client_bufchan = zerorpc .BufferedChannel (client_hbchan )
278
284
279
285
for x in xrange (10 ):
@@ -289,7 +295,7 @@ def client_do():
289
295
def server_do ():
290
296
event = server .recv ()
291
297
server_channel = server .channel (event )
292
- server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = 2 )
298
+ server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = TIME_FACTOR * 2 )
293
299
server_bufchan = zerorpc .BufferedChannel (server_hbchan )
294
300
295
301
for x in xrange (10 ):
@@ -323,22 +329,22 @@ def test_do_some_req_rep_client_timeout():
323
329
324
330
def client_do ():
325
331
client_channel = client .channel ()
326
- client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = 2 )
332
+ client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = TIME_FACTOR * 2 )
327
333
client_bufchan = zerorpc .BufferedChannel (client_hbchan )
328
334
329
335
if sys .version_info < (2 , 7 ):
330
336
def _do_with_assert_raises ():
331
337
for x in xrange (10 ):
332
338
client_bufchan .emit ('sleep' , (x ,))
333
- event = client_bufchan .recv (timeout = 3 )
339
+ event = client_bufchan .recv (timeout = TIME_FACTOR * 3 )
334
340
assert event .name == 'OK'
335
341
assert list (event .args ) == [x ]
336
342
assert_raises (zerorpc .TimeoutExpired , _do_with_assert_raises )
337
343
else :
338
344
with assert_raises (zerorpc .TimeoutExpired ):
339
345
for x in xrange (10 ):
340
346
client_bufchan .emit ('sleep' , (x ,))
341
- event = client_bufchan .recv (timeout = 3 )
347
+ event = client_bufchan .recv (timeout = TIME_FACTOR * 3 )
342
348
assert event .name == 'OK'
343
349
assert list (event .args ) == [x ]
344
350
client_bufchan .close ()
@@ -349,23 +355,23 @@ def _do_with_assert_raises():
349
355
def server_do ():
350
356
event = server .recv ()
351
357
server_channel = server .channel (event )
352
- server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = 2 )
358
+ server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = TIME_FACTOR * 2 )
353
359
server_bufchan = zerorpc .BufferedChannel (server_hbchan )
354
360
355
361
if sys .version_info < (2 , 7 ):
356
362
def _do_with_assert_raises ():
357
363
for x in xrange (20 ):
358
364
event = server_bufchan .recv ()
359
365
assert event .name == 'sleep'
360
- gevent .sleep (event .args [0 ])
366
+ gevent .sleep (TIME_FACTOR * event .args [0 ])
361
367
server_bufchan .emit ('OK' , event .args )
362
368
assert_raises (zerorpc .LostRemote , _do_with_assert_raises )
363
369
else :
364
370
with assert_raises (zerorpc .LostRemote ):
365
371
for x in xrange (20 ):
366
372
event = server_bufchan .recv ()
367
373
assert event .name == 'sleep'
368
- gevent .sleep (event .args [0 ])
374
+ gevent .sleep (TIME_FACTOR * event .args [0 ])
369
375
server_bufchan .emit ('OK' , event .args )
370
376
server_bufchan .close ()
371
377
@@ -377,10 +383,6 @@ def _do_with_assert_raises():
377
383
server .close ()
378
384
379
385
380
- class CongestionError (Exception ):
381
- pass
382
-
383
-
384
386
def test_congestion_control_server_pushing ():
385
387
endpoint = random_ipc_endpoint ()
386
388
server_events = zerorpc .Events (zmq .ROUTER )
@@ -391,56 +393,56 @@ def test_congestion_control_server_pushing():
391
393
client_events .connect (endpoint )
392
394
client = zerorpc .ChannelMultiplexer (client_events , ignore_broadcast = True )
393
395
394
- client_channel = client .channel ()
395
- client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = 2 )
396
- client_bufchan = zerorpc .BufferedChannel (client_hbchan )
397
-
398
- event = server .recv ()
399
- server_channel = server .channel (event )
400
- server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = 2 )
401
- server_bufchan = zerorpc .BufferedChannel (server_hbchan )
396
+ read_cnt = 0
402
397
403
398
def client_do ():
399
+ client_channel = client .channel ()
400
+ client_hbchan = zerorpc .HeartBeatOnChannel (client_channel , freq = TIME_FACTOR * 2 )
401
+ client_bufchan = zerorpc .BufferedChannel (client_hbchan , inqueue_size = 100 )
404
402
for x in xrange (200 ):
405
403
event = client_bufchan .recv ()
406
404
assert event .name == 'coucou'
407
405
assert event .args == x
406
+ global read_cnt
407
+ read_cnt += 1
408
+ client_bufchan .close ()
408
409
409
410
coro_pool = gevent .pool .Pool ()
410
411
coro_pool .spawn (client_do )
411
412
412
413
def server_do ():
414
+ event = server .recv ()
415
+ server_channel = server .channel (event )
416
+ server_hbchan = zerorpc .HeartBeatOnChannel (server_channel , freq = TIME_FACTOR * 2 )
417
+ server_bufchan = zerorpc .BufferedChannel (server_hbchan , inqueue_size = 100 )
413
418
if sys .version_info < (2 , 7 ):
414
419
def _do_with_assert_raises ():
415
420
for x in xrange (200 ):
416
- if not server_bufchan .emit ('coucou' , x , block = False ):
417
- raise CongestionError () # will fail when x == 1
418
- assert_raises (CongestionError , _do_with_assert_raises )
421
+ server_bufchan .emit ('coucou' , x , timeout = 0 ) # will fail when x == 1
422
+ assert_raises (zerorpc .TimeoutExpired , _do_with_assert_raises )
419
423
else :
420
- with assert_raises (CongestionError ):
424
+ with assert_raises (zerorpc . TimeoutExpired ):
421
425
for x in xrange (200 ):
422
- if not server_bufchan .emit ('coucou' , x , block = False ):
423
- raise CongestionError () # will fail when x == 1
426
+ server_bufchan .emit ('coucou' , x , timeout = 0 ) # will fail when x == 1
424
427
server_bufchan .emit ('coucou' , 1 ) # block until receiver is ready
425
428
if sys .version_info < (2 , 7 ):
426
429
def _do_with_assert_raises ():
427
430
for x in xrange (2 , 200 ):
428
- if not server_bufchan .emit ('coucou' , x , block = False ):
429
- raise CongestionError () # will fail when x == 100
430
- assert_raises (CongestionError , _do_with_assert_raises )
431
+ server_bufchan .emit ('coucou' , x , timeout = 0 ) # will fail when x == 100
432
+ assert_raises (zerorpc .TimeoutExpired , _do_with_assert_raises )
431
433
else :
432
- with assert_raises (CongestionError ):
434
+ with assert_raises (zerorpc . TimeoutExpired ):
433
435
for x in xrange (2 , 200 ):
434
- if not server_bufchan .emit ('coucou' , x , block = False ):
435
- raise CongestionError () # will fail when x == 100
436
- for x in xrange (101 , 200 ):
436
+ server_bufchan .emit ('coucou' , x , timeout = 0 ) # will fail when x == 100
437
+ for x in xrange (read_cnt , 200 ):
437
438
server_bufchan .emit ('coucou' , x ) # block until receiver is ready
438
-
439
+ server_bufchan . close ()
439
440
440
441
coro_pool .spawn (server_do )
441
-
442
- coro_pool .join ()
443
- client_bufchan .close ()
444
- client .close ()
445
- server_bufchan .close ()
446
- server .close ()
442
+ try :
443
+ coro_pool .join ()
444
+ except zerorpc .LostRemote :
445
+ pass
446
+ finally :
447
+ client .close ()
448
+ server .close ()
0 commit comments