class ConnectionPoolHelper(object): """ Connection pool setting-up facilities for tests that need a L{ConnectionPool}. """ dbtype = DatabaseType(POSTGRES_DIALECT, DEFAULT_PARAM_STYLE) def setUp(self, test=None, connect=None): """ Support inheritance by L{TestCase} classes. """ if test is None: test = self if connect is None: self.factory = ConnectionFactory() connect = self.factory.connect self.connect = connect self.paused = False self.holders = [] self.pool = ConnectionPool( connect, maxConnections=2, dbtype=self.dbtype, ) self.pool._createHolder = self.makeAHolder self.clock = self.pool.reactor = ClockWithThreads() self.pool.startService() test.addCleanup(self.flushHolders) def flushHolders(self): """ Flush all pending C{submit}s since C{pauseHolders} was called. This makes sure the service is stopped and the fake ThreadHolders are all executing their queues so failed tests can exit cleanly. """ self.paused = False for holder in self.holders: holder.flush() def pauseHolders(self): """ Pause all L{FakeThreadHolder}s, causing C{submit} to return an unfired L{Deferred}. """ self.paused = True def makeAHolder(self): """ Make a ThreadHolder-alike. """ fth = FakeThreadHolder(self) self.holders.append(fth) return fth def resultOf(self, it): return resultOf(it) def createTransaction(self): return self.pool.connection() def translateError(self, err): return err
class ConnectionPoolHelper(object): """ Connection pool setting-up facilities for tests that need a L{ConnectionPool}. """ dialect = POSTGRES_DIALECT paramstyle = DEFAULT_PARAM_STYLE def setUp(self, test=None, connect=None): """ Support inheritance by L{TestCase} classes. """ if test is None: test = self if connect is None: self.factory = ConnectionFactory() connect = self.factory.connect self.connect = connect self.paused = False self.holders = [] self.pool = ConnectionPool(connect, maxConnections=2, dialect=self.dialect, paramstyle=self.paramstyle) self.pool._createHolder = self.makeAHolder self.clock = self.pool.reactor = ClockWithThreads() self.pool.startService() test.addCleanup(self.flushHolders) def flushHolders(self): """ Flush all pending C{submit}s since C{pauseHolders} was called. This makes sure the service is stopped and the fake ThreadHolders are all executing their queues so failed tsets can exit cleanly. """ self.paused = False for holder in self.holders: holder.flush() def pauseHolders(self): """ Pause all L{FakeThreadHolder}s, causing C{submit} to return an unfired L{Deferred}. """ self.paused = True def makeAHolder(self): """ Make a ThreadHolder-alike. """ fth = FakeThreadHolder(self) self.holders.append(fth) return fth def resultOf(self, it): return resultOf(it) def createTransaction(self): return self.pool.connection() def translateError(self, err): return err