diff --git a/noblogsmv/state.py b/noblogsmv/state.py index 2e0288027d9778fdf24da877a9290741ff54ce51..dff4cce1d296d40590c2838ccbc01d4de65e4a6c 100644 --- a/noblogsmv/state.py +++ b/noblogsmv/state.py @@ -158,7 +158,7 @@ def transaction(db): @contextlib.contextmanager def readonly_transaction(db): - for i in xrange(3): + for i in xrange(10): try: with transaction(db) as session: yield session diff --git a/noblogsmv/test/test_state.py b/noblogsmv/test/test_state.py index 37ef33b318c3e404065aaffd693334760b3ebe0f..2f1a208d540f6eac7be9a4d6694668a6c9e22fff 100644 --- a/noblogsmv/test/test_state.py +++ b/noblogsmv/test/test_state.py @@ -96,9 +96,9 @@ class DatabaseTest(TestBase): self.assertTrue(self.db.are_we_done(session)) def test_loadtest(self): - nkeys = 100 + nkeys = 20 nloops = 100 - out = {'errors': 0} + out = {'errors': 0, 'fatals': 0} with state.transaction(self.db) as session: for i in xrange(nkeys): @@ -111,13 +111,17 @@ class DatabaseTest(TestBase): try: with state.work_transaction(self.db, key) as work: work.state = state.STATE_DONE - except Exception, e: + except sqlalchemy.exc.OperationalError, e: out['errors'] += 1 + except Exception, e: print e + out['fatals'] += 1 + return threads = [threading.Thread(target=loadfn, args=(i,)) for i in xrange(nkeys)] [x.start() for x in threads] [x.join() for x in threads] + self.assertEquals(0, out['fatals']) self.assertLess(out['errors'], 10)