diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-05-10 15:52:31 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-05-10 15:52:31 -0400 |
| commit | 168ca1d37d0d6ddc3ef6dc993fa561c4f46d0f52 (patch) | |
| tree | a0ab3ae2899b500bf729e85f3303f4babd404e3e /test/perf | |
| parent | 85d1899b76a37b4bf922b1cea4f608ba806b41d0 (diff) | |
| download | sqlalchemy-168ca1d37d0d6ddc3ef6dc993fa561c4f46d0f52.tar.gz | |
- stress test for invalidation
Diffstat (limited to 'test/perf')
| -rw-r--r-- | test/perf/invalidate_stresstest.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/test/perf/invalidate_stresstest.py b/test/perf/invalidate_stresstest.py new file mode 100644 index 000000000..51bd3669b --- /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() |
