summaryrefslogtreecommitdiff
path: root/test/perf
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-05-10 15:52:31 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2014-05-10 15:52:31 -0400
commit168ca1d37d0d6ddc3ef6dc993fa561c4f46d0f52 (patch)
treea0ab3ae2899b500bf729e85f3303f4babd404e3e /test/perf
parent85d1899b76a37b4bf922b1cea4f608ba806b41d0 (diff)
downloadsqlalchemy-168ca1d37d0d6ddc3ef6dc993fa561c4f46d0f52.tar.gz
- stress test for invalidation
Diffstat (limited to 'test/perf')
-rw-r--r--test/perf/invalidate_stresstest.py51
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()