Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 273853e

Browse files
committed
Faster unit tests!
One can set the env variable ZPC_TEST_TIME_FACTOR to something smaller than 1.0 in order to speedup testing. At some really small values, unit tests about timeouts are likely to fail! Example: $ ZPC_TEST_TIME_FACTOR=0.01 nosetests
1 parent 85836f3 commit 273853e

10 files changed

+120
-122
lines changed

tests/test_buffered_channel.py

Lines changed: 35 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
from zerorpc import zmq
3131
import zerorpc
32-
from testutils import teardown, random_ipc_endpoint
32+
from testutils import teardown, random_ipc_endpoint, TIME_FACTOR
3333

3434

3535
def test_close_server_bufchan():
@@ -43,17 +43,17 @@ def test_close_server_bufchan():
4343
client = zerorpc.ChannelMultiplexer(client_events, ignore_broadcast=True)
4444

4545
client_channel = client.channel()
46-
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=2)
46+
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=TIME_FACTOR * 2)
4747
client_bufchan = zerorpc.BufferedChannel(client_hbchan)
4848
client_bufchan.emit('openthat', None)
4949

5050
event = server.recv()
5151
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)
5353
server_bufchan = zerorpc.BufferedChannel(server_hbchan)
5454
server_bufchan.recv()
5555

56-
gevent.sleep(3)
56+
gevent.sleep(TIME_FACTOR * 3)
5757
print 'CLOSE SERVER SOCKET!!!'
5858
server_bufchan.close()
5959
if sys.version_info < (2, 7):
@@ -78,17 +78,17 @@ def test_close_client_bufchan():
7878
client = zerorpc.ChannelMultiplexer(client_events, ignore_broadcast=True)
7979

8080
client_channel = client.channel()
81-
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=2)
81+
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=TIME_FACTOR * 2)
8282
client_bufchan = zerorpc.BufferedChannel(client_hbchan)
8383
client_bufchan.emit('openthat', None)
8484

8585
event = server.recv()
8686
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)
8888
server_bufchan = zerorpc.BufferedChannel(server_hbchan)
8989
server_bufchan.recv()
9090

91-
gevent.sleep(3)
91+
gevent.sleep(TIME_FACTOR * 3)
9292
print 'CLOSE CLIENT SOCKET!!!'
9393
client_bufchan.close()
9494
if sys.version_info < (2, 7):
@@ -113,15 +113,15 @@ def test_heartbeat_can_open_channel_server_close():
113113
client = zerorpc.ChannelMultiplexer(client_events, ignore_broadcast=True)
114114

115115
client_channel = client.channel()
116-
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=2)
116+
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=TIME_FACTOR * 2)
117117
client_bufchan = zerorpc.BufferedChannel(client_hbchan)
118118

119119
event = server.recv()
120120
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)
122122
server_bufchan = zerorpc.BufferedChannel(server_hbchan)
123123

124-
gevent.sleep(3)
124+
gevent.sleep(TIME_FACTOR * 3)
125125
print 'CLOSE SERVER SOCKET!!!'
126126
server_bufchan.close()
127127
if sys.version_info < (2, 7):
@@ -146,15 +146,15 @@ def test_heartbeat_can_open_channel_client_close():
146146
client = zerorpc.ChannelMultiplexer(client_events, ignore_broadcast=True)
147147

148148
client_channel = client.channel()
149-
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=2)
149+
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=TIME_FACTOR * 2)
150150
client_bufchan = zerorpc.BufferedChannel(client_hbchan)
151151

152152
event = server.recv()
153153
server_channel = server.channel(event)
154-
server_hbchan = zerorpc.HeartBeatOnChannel(server_channel, freq=2)
154+
server_hbchan = zerorpc.HeartBeatOnChannel(server_channel, freq=TIME_FACTOR * 2)
155155
server_bufchan = zerorpc.BufferedChannel(server_hbchan)
156156

157-
gevent.sleep(3)
157+
gevent.sleep(TIME_FACTOR * 3)
158158
print 'CLOSE CLIENT SOCKET!!!'
159159
client_bufchan.close()
160160
client.close()
@@ -179,12 +179,12 @@ def test_do_some_req_rep():
179179
client = zerorpc.ChannelMultiplexer(client_events, ignore_broadcast=True)
180180

181181
client_channel = client.channel()
182-
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=2)
182+
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=TIME_FACTOR * 2)
183183
client_bufchan = zerorpc.BufferedChannel(client_hbchan)
184184

185185
event = server.recv()
186186
server_channel = server.channel(event)
187-
server_hbchan = zerorpc.HeartBeatOnChannel(server_channel, freq=2)
187+
server_hbchan = zerorpc.HeartBeatOnChannel(server_channel, freq=TIME_FACTOR * 2)
188188
server_bufchan = zerorpc.BufferedChannel(server_hbchan)
189189

190190
def client_do():
@@ -225,7 +225,7 @@ def test_do_some_req_rep_lost_server():
225225
def client_do():
226226
print 'running'
227227
client_channel = client.channel()
228-
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=2)
228+
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=TIME_FACTOR * 2)
229229
client_bufchan = zerorpc.BufferedChannel(client_hbchan)
230230
for x in xrange(10):
231231
client_bufchan.emit('add', (x, x * x))
@@ -246,7 +246,7 @@ def client_do():
246246
def server_do():
247247
event = server.recv()
248248
server_channel = server.channel(event)
249-
server_hbchan = zerorpc.HeartBeatOnChannel(server_channel, freq=2)
249+
server_hbchan = zerorpc.HeartBeatOnChannel(server_channel, freq=TIME_FACTOR * 2)
250250
server_bufchan = zerorpc.BufferedChannel(server_hbchan)
251251
for x in xrange(10):
252252
event = server_bufchan.recv()
@@ -273,7 +273,7 @@ def test_do_some_req_rep_lost_client():
273273

274274
def client_do():
275275
client_channel = client.channel()
276-
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=2)
276+
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=TIME_FACTOR * 2)
277277
client_bufchan = zerorpc.BufferedChannel(client_hbchan)
278278

279279
for x in xrange(10):
@@ -289,7 +289,7 @@ def client_do():
289289
def server_do():
290290
event = server.recv()
291291
server_channel = server.channel(event)
292-
server_hbchan = zerorpc.HeartBeatOnChannel(server_channel, freq=2)
292+
server_hbchan = zerorpc.HeartBeatOnChannel(server_channel, freq=TIME_FACTOR * 2)
293293
server_bufchan = zerorpc.BufferedChannel(server_hbchan)
294294

295295
for x in xrange(10):
@@ -323,22 +323,22 @@ def test_do_some_req_rep_client_timeout():
323323

324324
def client_do():
325325
client_channel = client.channel()
326-
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=2)
326+
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=TIME_FACTOR * 2)
327327
client_bufchan = zerorpc.BufferedChannel(client_hbchan)
328328

329329
if sys.version_info < (2, 7):
330330
def _do_with_assert_raises():
331331
for x in xrange(10):
332332
client_bufchan.emit('sleep', (x,))
333-
event = client_bufchan.recv(timeout=3)
333+
event = client_bufchan.recv(timeout=TIME_FACTOR * 3)
334334
assert event.name == 'OK'
335335
assert list(event.args) == [x]
336336
assert_raises(zerorpc.TimeoutExpired, _do_with_assert_raises)
337337
else:
338338
with assert_raises(zerorpc.TimeoutExpired):
339339
for x in xrange(10):
340340
client_bufchan.emit('sleep', (x,))
341-
event = client_bufchan.recv(timeout=3)
341+
event = client_bufchan.recv(timeout=TIME_FACTOR * 3)
342342
assert event.name == 'OK'
343343
assert list(event.args) == [x]
344344
client_bufchan.close()
@@ -349,23 +349,23 @@ def _do_with_assert_raises():
349349
def server_do():
350350
event = server.recv()
351351
server_channel = server.channel(event)
352-
server_hbchan = zerorpc.HeartBeatOnChannel(server_channel, freq=2)
352+
server_hbchan = zerorpc.HeartBeatOnChannel(server_channel, freq=TIME_FACTOR * 2)
353353
server_bufchan = zerorpc.BufferedChannel(server_hbchan)
354354

355355
if sys.version_info < (2, 7):
356356
def _do_with_assert_raises():
357357
for x in xrange(20):
358358
event = server_bufchan.recv()
359359
assert event.name == 'sleep'
360-
gevent.sleep(event.args[0])
360+
gevent.sleep(TIME_FACTOR * event.args[0])
361361
server_bufchan.emit('OK', event.args)
362362
assert_raises(zerorpc.LostRemote, _do_with_assert_raises)
363363
else:
364364
with assert_raises(zerorpc.LostRemote):
365365
for x in xrange(20):
366366
event = server_bufchan.recv()
367367
assert event.name == 'sleep'
368-
gevent.sleep(event.args[0])
368+
gevent.sleep(TIME_FACTOR * event.args[0])
369369
server_bufchan.emit('OK', event.args)
370370
server_bufchan.close()
371371

@@ -377,10 +377,6 @@ def _do_with_assert_raises():
377377
server.close()
378378

379379

380-
class CongestionError(Exception):
381-
pass
382-
383-
384380
def test_congestion_control_server_pushing():
385381
endpoint = random_ipc_endpoint()
386382
server_events = zerorpc.Events(zmq.ROUTER)
@@ -392,12 +388,12 @@ def test_congestion_control_server_pushing():
392388
client = zerorpc.ChannelMultiplexer(client_events, ignore_broadcast=True)
393389

394390
client_channel = client.channel()
395-
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=2)
391+
client_hbchan = zerorpc.HeartBeatOnChannel(client_channel, freq=TIME_FACTOR * 2)
396392
client_bufchan = zerorpc.BufferedChannel(client_hbchan)
397393

398394
event = server.recv()
399395
server_channel = server.channel(event)
400-
server_hbchan = zerorpc.HeartBeatOnChannel(server_channel, freq=2)
396+
server_hbchan = zerorpc.HeartBeatOnChannel(server_channel, freq=TIME_FACTOR * 2)
401397
server_bufchan = zerorpc.BufferedChannel(server_hbchan)
402398

403399
def client_do():
@@ -413,26 +409,22 @@ def server_do():
413409
if sys.version_info < (2, 7):
414410
def _do_with_assert_raises():
415411
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)
412+
server_bufchan.emit('coucou', x, timeout=TIME_FACTOR * 0) # will fail when x == 1
413+
assert_raises(zerorpc.TimeoutExpired, _do_with_assert_raises)
419414
else:
420-
with assert_raises(CongestionError):
415+
with assert_raises(zerorpc.TimeoutExpired):
421416
for x in xrange(200):
422-
if not server_bufchan.emit('coucou', x, block=False):
423-
raise CongestionError() # will fail when x == 1
417+
server_bufchan.emit('coucou', x, timeout=TIME_FACTOR * 0) # will fail when x == 1
424418
server_bufchan.emit('coucou', 1) # block until receiver is ready
425419
if sys.version_info < (2, 7):
426420
def _do_with_assert_raises():
427421
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)
422+
server_bufchan.emit('coucou', x, timeout=TIME_FACTOR * 0) # will fail when x == 100
423+
assert_raises(zerorpc.TimeoutExpired, _do_with_assert_raises)
431424
else:
432-
with assert_raises(CongestionError):
425+
with assert_raises(zerorpc.TimeoutExpired):
433426
for x in xrange(2, 200):
434-
if not server_bufchan.emit('coucou', x, block=False):
435-
raise CongestionError() # will fail when x == 100
427+
server_bufchan.emit('coucou', x, timeout=TIME_FACTOR * 0) # will fail when x == 100
436428
for x in xrange(101, 200):
437429
server_bufchan.emit('coucou', x) # block until receiver is ready
438430

tests/test_client_async.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
from zerorpc import zmq
3131
import zerorpc
32-
from testutils import teardown, random_ipc_endpoint
32+
from testutils import teardown, random_ipc_endpoint, TIME_FACTOR
3333

3434

3535
def test_client_server_client_timeout_with_async():
@@ -41,14 +41,14 @@ def lolita(self):
4141
return 42
4242

4343
def add(self, a, b):
44-
gevent.sleep(10)
44+
gevent.sleep(TIME_FACTOR * 10)
4545
return a + b
4646

4747
srv = MySrv()
4848
srv.bind(endpoint)
4949
gevent.spawn(srv.run)
5050

51-
client = zerorpc.Client(timeout=2)
51+
client = zerorpc.Client(timeout=TIME_FACTOR * 2)
5252
client.connect(endpoint)
5353

5454
async_result = client.add(1, 4, async=True)

0 commit comments

Comments
 (0)