Exemplo n.º 1
0
 def test_get_engine_forked(self, create_engine):
     s = SessionManager()
     s._after_fork()
     engine = s.get_engine('dburi', foo=1)
     create_engine.assert_called_with('dburi', foo=1)
     assert engine is create_engine()
     engine2 = s.get_engine('dburi', foo=1)
     assert engine2 is engine
Exemplo n.º 2
0
 def test_get_engine_forked(self, create_engine):
     s = SessionManager()
     s._after_fork()
     engine = s.get_engine("dburi", foo=1)
     create_engine.assert_called_with("dburi", foo=1)
     self.assertIs(engine, create_engine())
     engine2 = s.get_engine("dburi", foo=1)
     self.assertIs(engine2, engine)
Exemplo n.º 3
0
 def test_create_session_forked(self, sessionmaker):
     s = SessionManager()
     s.get_engine = Mock(name="get_engine")
     s._after_fork()
     engine, session = s.create_session("dburi", short_lived_sessions=True)
     sessionmaker.assert_called_with(bind=s.get_engine())
     self.assertIs(session, sessionmaker())
     sessionmaker.return_value = Mock(name="new")
     engine, session2 = s.create_session("dburi", short_lived_sessions=True)
     sessionmaker.assert_called_with(bind=s.get_engine())
     self.assertIsNot(session2, session)
     sessionmaker.return_value = Mock(name="new2")
     engine, session3 = s.create_session("dburi", short_lived_sessions=False)
     sessionmaker.assert_called_with(bind=s.get_engine())
     self.assertIs(session3, session2)
Exemplo n.º 4
0
 def test_create_session_forked(self, sessionmaker):
     s = SessionManager()
     s.get_engine = Mock(name='get_engine')
     s._after_fork()
     engine, session = s.create_session('dburi', short_lived_sessions=True)
     sessionmaker.assert_called_with(bind=s.get_engine())
     assert session is sessionmaker()
     sessionmaker.return_value = Mock(name='new')
     engine, session2 = s.create_session('dburi', short_lived_sessions=True)
     sessionmaker.assert_called_with(bind=s.get_engine())
     assert session2 is not session
     sessionmaker.return_value = Mock(name='new2')
     engine, session3 = s.create_session(
         'dburi', short_lived_sessions=False)
     sessionmaker.assert_called_with(bind=s.get_engine())
     assert session3 is session2
Exemplo n.º 5
0
 def test_coverage_madness(self):
     prev, session.register_after_fork = (
         session.register_after_fork, None,
     )
     try:
         SessionManager()
     finally:
         session.register_after_fork = prev
Exemplo n.º 6
0
 def test_get_engine_forked(self, create_engine):
     s = SessionManager()
     s._after_fork()
     engine = s.get_engine('dburi', foo=1)
     create_engine.assert_called_with('dburi', foo=1)
     assert engine is create_engine()
     engine2 = s.get_engine('dburi', foo=1)
     assert engine2 is engine
Exemplo n.º 7
0
    def test_prepare_models_terminates(self, create_engine):
        """SessionManager.prepare_models has retry logic because the creation
        of database tables by multiple workers is racy. This test patches
        the used method to always raise, so we can verify that it does
        eventually terminate.
        """
        from sqlalchemy.dialects.sqlite import dialect
        from sqlalchemy.exc import DatabaseError

        sqlite = dialect.dbapi()
        manager = SessionManager()
        engine = manager.get_engine('dburi')

        def raise_err(bind):
            raise DatabaseError("", "", [], sqlite.DatabaseError)

        patch_create_all = patch.object(ResultModelBase.metadata,
                                        'create_all',
                                        side_effect=raise_err)

        with pytest.raises(DatabaseError), patch_create_all as mock_create_all:
            manager.prepare_models(engine)

        assert mock_create_all.call_count == PREPARE_MODELS_MAX_RETRIES + 1
Exemplo n.º 8
0
 def test_create_session_forked(self, sessionmaker):
     s = SessionManager()
     s.get_engine = Mock(name='get_engine')
     s._after_fork()
     engine, session = s.create_session('dburi', short_lived_sessions=True)
     sessionmaker.assert_called_with(bind=s.get_engine())
     assert session is sessionmaker()
     sessionmaker.return_value = Mock(name='new')
     engine, session2 = s.create_session('dburi', short_lived_sessions=True)
     sessionmaker.assert_called_with(bind=s.get_engine())
     assert session2 is not session
     sessionmaker.return_value = Mock(name='new2')
     engine, session3 = s.create_session('dburi',
                                         short_lived_sessions=False)
     sessionmaker.assert_called_with(bind=s.get_engine())
     assert session3 is session2
Exemplo n.º 9
0
 def test_after_fork(self):
     s = SessionManager()
     assert not s.forked
     s._after_fork()
     assert s.forked
Exemplo n.º 10
0
 def ResultSession(self, session_manager=SessionManager()):
     return session_manager.session_factory(
         dburi=self.url,
         short_lived_sessions=self.short_lived_sessions,
         **self.engine_options)
Exemplo n.º 11
0
 def test_after_fork(self):
     s = SessionManager()
     assert not s.forked
     s._after_fork()
     assert s.forked
Exemplo n.º 12
0
 def test_after_fork(self):
     s = SessionManager()
     self.assertFalse(s.forked)
     s._after_fork()
     self.assertTrue(s.forked)
Exemplo n.º 13
0
 def test_get_engine_kwargs(self, create_engine):
     s = SessionManager()
     engine = s.get_engine('dbur', foo=1, pool_size=5)
     assert engine is create_engine()
     engine2 = s.get_engine('dburi', foo=1)
     assert engine2 is engine
Exemplo n.º 14
0
 def test_after_fork(self):
     s = SessionManager()
     self.assertFalse(s.forked)
     s._after_fork()
     self.assertTrue(s.forked)