示例#1
0
 def test__add_exception_encoutered():
     trm = TransactionsManager()
     try:
         raise Exception()
     except Exception as e:
         trm._add_exception_encoutered(e)
     assert len(trm.exceptions_encountered) == 1
示例#2
0
 def test_begin_exception_exception_during_rollback():
     trm = TransactionsManager()
     trh1 = TransactionHandlerMock(
         {"rollback": MagicMock(side_effect=Exception)})
     trm.add_transaction_handler(trh1)
     with pytest.raises(WeAreDoomedException):
         with trm.begin():
             raise Exception("I KILL YOU !")
     assert len(trm.exceptions_encountered) == 2
示例#3
0
 def test_begin():
     trm = TransactionsManager()
     trh1 = TransactionHandlerMock()
     trh2 = TransactionHandlerMock()
     trm.add_transaction_handler(trh1)
     trm.add_transaction_handler(trh2)
     with trm.begin():
         pass
     assert trh1.begin.called
     assert trh2.begin.called
示例#4
0
    def test_begin_exception():
        trm = TransactionsManager()
        trh1 = TransactionHandlerMock()
        trm.add_transaction_handler(trh1)

        class TestException(Exception):
            pass

        with pytest.raises(TestException):
            with trm.begin():
                raise TestException("I KILL YOU !")
        assert trh1.rollback.called
示例#5
0
 def test_mutex_handler_commit_last():
     trm = TransactionsManager()
     commits = []
     mh = TransactionHandlerMock({"commit": lambda: commits.append("A")})
     th = TransactionHandlerMock({"commit": lambda: commits.append("B")})
     trm.set_mutex_handler(mh)
     trm.add_transaction_handler(th)
     with trm.begin():
         trm.commit()
         assert commits == ["B", "A"]
示例#6
0
 def test_mutex_handler_rollback_last():
     trm = TransactionsManager()
     rollbacks = []
     mh = TransactionHandlerMock(
         {"rollback": lambda: rollbacks.append("A")})
     th = TransactionHandlerMock(
         {"rollback": lambda: rollbacks.append("B")})
     trm.set_mutex_handler(mh)
     trm.add_transaction_handler(th)
     with trm.begin():
         trm.rollback()
         assert rollbacks == ["B", "A"]
示例#7
0
 def test_begin_exception_already_rollbacked():
     trm = TransactionsManager()
     trh1 = TransactionHandlerMock()
     trm.add_transaction_handler(trh1)
     with pytest.raises(WeAreDoomedException):
         with trm.begin():
             trm.rollback()
             raise Exception("I KILL YOU !")
示例#8
0
 def test_mutex_handler_rollback_exception():
     trm = TransactionsManager()
     rollbacks = []
     th = TransactionHandlerMock(
         {"rollback": lambda: rollbacks.append("A")})
     trm.add_transaction_handler(th)
     mh = TransactionHandlerMock(
         {"rollback": MagicMock(side_effect=Exception())})
     trm.set_mutex_handler(mh)
     try:
         with trm.begin():
             trm.rollback()
     except Exception:
         pass
     assert rollbacks == ["A"]
     assert mh.rollback.called
示例#9
0
 def test_mutex_handler_begin_first():
     trm = TransactionsManager()
     begins = []
     mh = TransactionHandlerMock({"begin": lambda: begins.append("A")})
     th = TransactionHandlerMock({"begin": lambda: begins.append("B")})
     trm.set_mutex_handler(mh)
     trm.add_transaction_handler(th)
     with trm.begin():
         assert begins == ["A", "B"]
示例#10
0
 def test_rollback():
     trm = TransactionsManager()
     trh1 = TransactionHandlerMock()
     trh2 = TransactionHandlerMock()
     trm.add_transaction_handler(trh1)
     trm.add_transaction_handler(trh2)
     with trm.begin():
         trm.rollback()
     assert trh1.rollback.called
     assert trh2.rollback.called
示例#11
0
 def test_execute():
     trm = TransactionsManager()
     trh1 = TransactionHandlerMock()
     trh2 = TransactionHandlerMock()
     trm.add_transaction_handler(trh1)
     trm.add_transaction_handler(trh2)
     with trm.begin():
         trm.execute()
     assert trh1.execute.called
     assert trh2.execute.called
示例#12
0
 def test_rollback_exceptions():
     trm = TransactionsManager()
     trh1 = TransactionHandlerMock(
         {"rollback": MagicMock(side_effect=Exception)})
     trh2 = TransactionHandlerMock(
         {"rollback": MagicMock(side_effect=Exception)})
     trm.add_transaction_handler(trh1)
     trm.add_transaction_handler(trh2)
     with pytest.raises(Exception):
         with trm.begin():
             trm.rollback()
     assert trh1.rollback.called
     assert trh2.rollback.called
     assert len(trm.exceptions_encountered) == 2
示例#13
0
 def test_mutex_handler_begin_exception():
     trm = TransactionsManager()
     begins = []
     mh = TransactionHandlerMock({"begin": lambda: begins.append("A")})
     trm.set_mutex_handler(mh)
     th = TransactionHandlerMock(
         {"begin": MagicMock(side_effect=Exception())})
     trm.add_transaction_handler(th)
     try:
         with trm.begin():
             pass
     except Exception:
         pass
     assert begins == ["A"]
示例#14
0
 def test_commit_prepare_failed():
     trm = TransactionsManager()
     trh1 = TransactionHandlerMock({
         "can_prepare_commit":
         MagicMock(return_value=True),
         "prepare_commit":
         MagicMock(return_value=False),
     })
     trh2 = TransactionHandlerMock(
         {"can_prepare_commit": MagicMock(return_value=False)})
     trm.add_transaction_handler(trh1)
     trm.add_transaction_handler(trh2)
     trm.rollback = MagicMock()
     with trm.begin():
         trm.commit()
     assert trh1.can_prepare_commit.called
     assert trh2.can_prepare_commit.called
     assert trh1.prepare_commit.called
     assert not trh1.commit.called
     assert not trh2.commit.called
     assert trm.rollback.called
示例#15
0
 def test_add_mutex_handler():
     trm = TransactionsManager()
     th = TransactionHandlerMock()
     trm.set_mutex_handler(th)
     assert trm._mutex_handler == th
示例#16
0
 def test_rollback_not_begun():
     trm = TransactionsManager()
     with pytest.raises(TransactionException):
         trm.rollback()
示例#17
0
 def test_add_transaction_handler_begun():
     trm = TransactionsManager()
     with trm.begin():
         with pytest.raises(TransactionException):
             trm.add_transaction_handler(TransactionHandlerMock())
示例#18
0
 def test_add_transaction_handler():
     trm = TransactionsManager()
     th = TransactionHandlerMock()
     trm.add_transaction_handler(th)
     assert th in trm._transaction_handlers
示例#19
0
 def test_init():
     assert TransactionsManager()
示例#20
0
 def test_commit_not_begun():
     trm = TransactionsManager()
     with pytest.raises(TransactionException):
         trm.commit()
示例#21
0
 def test_execute_not_begun():
     trm = TransactionsManager()
     with pytest.raises(TransactionException):
         trm.execute()