From: Mike Bayer Date: Sat, 10 May 2014 19:52:31 +0000 (-0400) Subject: - stress test for invalidation X-Git-Tag: rel_0_9_5~63 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=168ca1d37d0d6ddc3ef6dc993fa561c4f46d0f52;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - stress test for invalidation --- diff --git a/test/perf/invalidate_stresstest.py b/test/perf/invalidate_stresstest.py new file mode 100644 index 0000000000..51bd3669bf --- /dev/null +++ b/test/perf/invalidate_stresstest.py @@ -0,0 +1,51 @@ +import gevent.monkey +gevent.monkey.patch_all() + +import logging +logging.basicConfig() +#logging.getLogger("sqlalchemy.pool").setLevel(logging.INFO) +from sqlalchemy import event +import random +import sys +from sqlalchemy import create_engine +import traceback + +engine = create_engine('mysql+pymysql://scott:tiger@localhost/test', + pool_size=50, max_overflow=0) + +@event.listens_for(engine, "connect") +def conn(*arg): + print "new connection!" + +def worker(): + while True: + conn = engine.connect() + try: + trans = conn.begin() + for i in range(5): + conn.execute("SELECT 1+1") + gevent.sleep(random.random() * 1.01) + + except: + #traceback.print_exc() + sys.stderr.write('X') + else: + conn.close() + sys.stderr.write('.') + + +def main(): + for i in range(40): + gevent.spawn(worker) + + gevent.sleep(3) + + while True: + result = list(engine.execute("show processlist")) + engine.execute("kill %d" % result[-2][0]) + print "\n\n\n BOOM!!!!! \n\n\n" + gevent.sleep(5) + print(engine.pool.status()) + + +main()