tests: Import Latch soak test
parent
15194abb8c
commit
a8a31728a0
@ -0,0 +1,51 @@
|
||||
"""
|
||||
Used for stressing Latch.get/put. Swap the number of producer/consumer threads
|
||||
below to try both -- there are many conditions in the Latch code that require
|
||||
testing of both.
|
||||
"""
|
||||
|
||||
import logging
|
||||
import random
|
||||
import threading
|
||||
import time
|
||||
import mitogen.core
|
||||
import mitogen.utils
|
||||
|
||||
mitogen.utils.log_to_file()
|
||||
mitogen.core.IOLOG.setLevel(logging.DEBUG)
|
||||
mitogen.core._v = True
|
||||
mitogen.core._vv = True
|
||||
|
||||
l = mitogen.core.Latch()
|
||||
consumed = 0
|
||||
produced = 0
|
||||
crash = 0
|
||||
|
||||
def cons():
|
||||
global consumed, crash
|
||||
try:
|
||||
while 1:
|
||||
g = l.get()
|
||||
print 'got=%s consumed=%s produced=%s crash=%s' % (g, consumed, produced, crash)
|
||||
consumed += 1
|
||||
time.sleep(g)
|
||||
for x in xrange(int(g * 1000)):
|
||||
pass
|
||||
except:
|
||||
crash += 1
|
||||
|
||||
def prod():
|
||||
global produced
|
||||
while 1:
|
||||
l.put(random.random()/10)
|
||||
produced += 1
|
||||
time.sleep(random.random()/10)
|
||||
|
||||
allc = [threading.Thread(target=cons) for x in range(64)]
|
||||
allp = [threading.Thread(target=prod) for x in range(8)]
|
||||
for th in allc+allp:
|
||||
th.setDaemon(True)
|
||||
th.start()
|
||||
|
||||
raw_input()
|
||||
exit()
|
Loading…
Reference in New Issue