| Index: third_party/buildbot_8_4p1/buildbot/test/unit/test_db_pool.py
|
| diff --git a/third_party/buildbot_8_4p1/buildbot/test/unit/test_db_pool.py b/third_party/buildbot_8_4p1/buildbot/test/unit/test_db_pool.py
|
| index 09d0e21d7a35180933b924c4a11cb73eb31d02cc..35d480223928e6bddd678aaf55df0087d37f0082 100644
|
| --- a/third_party/buildbot_8_4p1/buildbot/test/unit/test_db_pool.py
|
| +++ b/third_party/buildbot_8_4p1/buildbot/test/unit/test_db_pool.py
|
| @@ -13,9 +13,11 @@
|
| #
|
| # Copyright Buildbot Team Members
|
|
|
| +import os
|
| +import time
|
| import sqlalchemy as sa
|
| from twisted.trial import unittest
|
| -from twisted.internet import defer
|
| +from twisted.internet import defer, reactor
|
| from buildbot.db import pool
|
| from buildbot.test.util import db
|
|
|
| @@ -103,6 +105,49 @@ class Basic(unittest.TestCase):
|
| d.addCallback( lambda r : self.pool.do_with_engine(insert_into_table))
|
| return d
|
|
|
| +
|
| +class Stress(unittest.TestCase):
|
| +
|
| + def setUp(self):
|
| + setup_engine = sa.create_engine('sqlite:///test.sqlite')
|
| + setup_engine.execute("pragma journal_mode = wal")
|
| + setup_engine.execute("CREATE TABLE test (a integer, b integer)")
|
| +
|
| + self.engine = sa.create_engine('sqlite:///test.sqlite')
|
| + self.engine.optimal_thread_pool_size = 2
|
| + self.pool = pool.DBThreadPool(self.engine)
|
| +
|
| + def tearDown(self):
|
| + self.pool.shutdown()
|
| + os.unlink("test.sqlite")
|
| +
|
| + @defer.deferredGenerator
|
| + def test_inserts(self):
|
| + def write(conn):
|
| + trans = conn.begin()
|
| + conn.execute("INSERT INTO test VALUES (1, 1)")
|
| + time.sleep(31)
|
| + trans.commit()
|
| + d1 = self.pool.do(write)
|
| +
|
| + def write2(conn):
|
| + trans = conn.begin()
|
| + conn.execute("INSERT INTO test VALUES (1, 1)")
|
| + trans.commit()
|
| + d2 = defer.Deferred()
|
| + d2.addCallback(lambda _ :
|
| + self.pool.do(write2))
|
| + reactor.callLater(0.1, d2.callback, None)
|
| +
|
| + wfd = defer.waitForDeferred(
|
| + defer.DeferredList([ d1, d2 ]))
|
| + yield wfd
|
| + wfd.getResult()
|
| +
|
| + # don't run this test, since it takes 30s
|
| + del test_inserts
|
| +
|
| +
|
| class Native(unittest.TestCase, db.RealDatabaseMixin):
|
|
|
| # similar tests, but using the BUILDBOT_TEST_DB_URL
|
|
|