Commit 0ef2f8d6 authored by Tres Seaver's avatar Tres Seaver

Factory out dummy logger.

parent 9fc779e7
......@@ -22,6 +22,24 @@ class DummyFile(object):
self._lines.extend(lines)
class DummyLogger(object):
def __init__(self):
self._clear()
def _clear(self):
self._log = []
def log(self, level, msg, *args, **kw):
if args:
self._log.append((level, msg % args))
elif kw:
self._log.append((level, msg % kw))
else:
self._log.append((level, msg))
def debug(self, msg, *args, **kw):
self.log('DEBUG', msg, *args, **kw)
def error(self, msg, *args, **kw):
self.log('error', msg, *args, **kw)
class Monkey(object):
# context-manager for replacing module names in the scope of a test.
def __init__(self, module, **kw):
......
......@@ -313,48 +313,57 @@ class TransactionManagerTests(unittest.TestCase):
# first the recoverable errors
def test_abort_w_broken_jar(self):
mgr, sub1, sub2, sub3, nosub1 = self._makePopulated()
sub1._p_jar = BasicJar(errors='abort')
nosub1.modify()
sub1.modify(nojar=1)
sub2.modify()
try:
mgr.abort()
except TestTxnException: pass
from transaction import _transaction
from transaction.tests.common import DummyLogger
from transaction.tests.common import Monkey
logger = DummyLogger()
with Monkey(_transaction, _LOGGER=logger):
mgr, sub1, sub2, sub3, nosub1 = self._makePopulated()
sub1._p_jar = BasicJar(errors='abort')
nosub1.modify()
sub1.modify(nojar=1)
sub2.modify()
try:
mgr.abort()
except TestTxnException:
pass
assert nosub1._p_jar.cabort == 1
assert sub2._p_jar.cabort == 1
def test_commit_w_broken_jar_commit(self):
mgr, sub1, sub2, sub3, nosub1 = self._makePopulated()
sub1._p_jar = BasicJar(errors='commit')
nosub1.modify()
sub1.modify(nojar=1)
try:
mgr.commit()
except TestTxnException: pass
from transaction import _transaction
from transaction.tests.common import DummyLogger
from transaction.tests.common import Monkey
logger = DummyLogger()
with Monkey(_transaction, _LOGGER=logger):
mgr, sub1, sub2, sub3, nosub1 = self._makePopulated()
sub1._p_jar = BasicJar(errors='commit')
nosub1.modify()
sub1.modify(nojar=1)
try:
mgr.commit()
except TestTxnException:
pass
assert nosub1._p_jar.ctpc_finish == 0
assert nosub1._p_jar.ccommit == 1
assert nosub1._p_jar.ctpc_abort == 1
def test_commit_w_broken_jar_tpc_vote(self):
mgr, sub1, sub2, sub3, nosub1 = self._makePopulated()
sub1._p_jar = BasicJar(errors='tpc_vote')
nosub1.modify()
sub1.modify(nojar=1)
try:
mgr.commit()
except TestTxnException: pass
from transaction import _transaction
from transaction.tests.common import DummyLogger
from transaction.tests.common import Monkey
logger = DummyLogger()
with Monkey(_transaction, _LOGGER=logger):
mgr, sub1, sub2, sub3, nosub1 = self._makePopulated()
sub1._p_jar = BasicJar(errors='tpc_vote')
nosub1.modify()
sub1.modify(nojar=1)
try:
mgr.commit()
except TestTxnException:
pass
assert nosub1._p_jar.ctpc_finish == 0
assert nosub1._p_jar.ccommit == 1
......@@ -371,31 +380,37 @@ class TransactionManagerTests(unittest.TestCase):
# sub calling method abort
# sub calling method tpc_abort
# nosub calling method tpc_abort
mgr, sub1, sub2, sub3, nosub1 = self._makePopulated()
sub1._p_jar = BasicJar(errors='tpc_begin')
nosub1.modify()
sub1.modify(nojar=1)
try:
mgr.commit()
except TestTxnException:
pass
from transaction import _transaction
from transaction.tests.common import DummyLogger
from transaction.tests.common import Monkey
logger = DummyLogger()
with Monkey(_transaction, _LOGGER=logger):
mgr, sub1, sub2, sub3, nosub1 = self._makePopulated()
sub1._p_jar = BasicJar(errors='tpc_begin')
nosub1.modify()
sub1.modify(nojar=1)
try:
mgr.commit()
except TestTxnException:
pass
assert nosub1._p_jar.ctpc_abort == 1
assert sub1._p_jar.ctpc_abort == 1
def test_commit_w_broken_jar_tpc_abort_tpc_vote(self):
mgr, sub1, sub2, sub3, nosub1 = self._makePopulated()
sub1._p_jar = BasicJar(errors=('tpc_abort', 'tpc_vote'))
nosub1.modify()
sub1.modify(nojar=1)
try:
mgr.commit()
except TestTxnException:
pass
from transaction import _transaction
from transaction.tests.common import DummyLogger
from transaction.tests.common import Monkey
logger = DummyLogger()
with Monkey(_transaction, _LOGGER=logger):
mgr, sub1, sub2, sub3, nosub1 = self._makePopulated()
sub1._p_jar = BasicJar(errors=('tpc_abort', 'tpc_vote'))
nosub1.modify()
sub1.modify(nojar=1)
try:
mgr.commit()
except TestTxnException:
pass
assert nosub1._p_jar.ctpc_abort == 1
......
......@@ -50,6 +50,7 @@ class TransactionTests(unittest.TestCase):
def test_ctor_defaults(self):
from transaction.weakset import WeakSet
from transaction.tests.common import DummyLogger
from transaction.tests.common import Monkey
from transaction import _transaction
logger = DummyLogger()
......@@ -198,6 +199,7 @@ class TransactionTests(unittest.TestCase):
from weakref import WeakKeyDictionary
from transaction import _transaction
from transaction._transaction import Savepoint
from transaction.tests.common import DummyLogger
from transaction.tests.common import Monkey
logger = DummyLogger()
with Monkey(_transaction, _LOGGER=logger):
......@@ -214,6 +216,7 @@ class TransactionTests(unittest.TestCase):
from transaction import _transaction
from transaction._transaction import Status
from transaction._compat import StringIO
from transaction.tests.common import DummyLogger
from transaction.tests.common import Monkey
logger = DummyLogger()
with Monkey(_transaction, _LOGGER=logger):
......@@ -255,6 +258,8 @@ class TransactionTests(unittest.TestCase):
def __init__(self, t, index):
self.transaction = t
self._index = index
def __lt__(self, other):
return self._index < other._index
def __repr__(self):
return '_SP: %d' % self._index
holdme = []
......@@ -385,24 +390,6 @@ class MiscellaneousTests(unittest.TestCase):
transaction.abort() # should do nothing
self.assertEqual(list(dm.keys()), ['a'])
class DummyLogger(object):
def __init__(self):
self._clear()
def _clear(self):
self._log = []
def log(self, level, msg, *args, **kw):
if args:
self._log.append((level, msg % args))
elif kw:
self._log.append((level, msg % kw))
else:
self._log.append((level, msg))
def debug(self, msg, *args, **kw):
self.log('DEBUG', msg, *args, **kw)
def error(self, msg, *args, **kw):
self.log('error', msg, *args, **kw)
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(TransactionTests),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment