Skip to content
Snippets Groups Projects
Unverified Commit 99dd975d authored by Amber Brown's avatar Amber Brown Committed by GitHub
Browse files

Run tests under PostgreSQL (#3423)

parent a001038b
No related branches found
No related tags found
No related merge requests found
Showing
with 43 additions and 11 deletions
...@@ -8,6 +8,9 @@ before_script: ...@@ -8,6 +8,9 @@ before_script:
- git remote set-branches --add origin develop - git remote set-branches --add origin develop
- git fetch origin develop - git fetch origin develop
services:
- postgresql
matrix: matrix:
fast_finish: true fast_finish: true
include: include:
...@@ -20,6 +23,9 @@ matrix: ...@@ -20,6 +23,9 @@ matrix:
- python: 2.7 - python: 2.7
env: TOX_ENV=py27 env: TOX_ENV=py27
- python: 2.7
env: TOX_ENV=py27-postgres TRIAL_FLAGS="-j 4"
- python: 3.6 - python: 3.6
env: TOX_ENV=py36 env: TOX_ENV=py36
...@@ -29,6 +35,10 @@ matrix: ...@@ -29,6 +35,10 @@ matrix:
- python: 3.6 - python: 3.6
env: TOX_ENV=check-newsfragment env: TOX_ENV=check-newsfragment
allow_failures:
- python: 2.7
env: TOX_ENV=py27-postgres TRIAL_FLAGS="-j 4"
install: install:
- pip install tox - pip install tox
......
The test suite now can run under PostgreSQL.
...@@ -95,6 +95,7 @@ class PresenceHandler(object): ...@@ -95,6 +95,7 @@ class PresenceHandler(object):
Args: Args:
hs (synapse.server.HomeServer): hs (synapse.server.HomeServer):
""" """
self.hs = hs
self.is_mine = hs.is_mine self.is_mine = hs.is_mine
self.is_mine_id = hs.is_mine_id self.is_mine_id = hs.is_mine_id
self.clock = hs.get_clock() self.clock = hs.get_clock()
...@@ -230,6 +231,10 @@ class PresenceHandler(object): ...@@ -230,6 +231,10 @@ class PresenceHandler(object):
earlier than they should when synapse is restarted. This affect of this earlier than they should when synapse is restarted. This affect of this
is some spurious presence changes that will self-correct. is some spurious presence changes that will self-correct.
""" """
# If the DB pool has already terminated, don't try updating
if not self.hs.get_db_pool().running:
return
logger.info( logger.info(
"Performing _on_shutdown. Persisting %d unpersisted changes", "Performing _on_shutdown. Persisting %d unpersisted changes",
len(self.user_to_current_state) len(self.user_to_current_state)
......
...@@ -96,6 +96,11 @@ class ClientIpStore(background_updates.BackgroundUpdateStore): ...@@ -96,6 +96,11 @@ class ClientIpStore(background_updates.BackgroundUpdateStore):
self._batch_row_update[key] = (user_agent, device_id, now) self._batch_row_update[key] = (user_agent, device_id, now)
def _update_client_ips_batch(self): def _update_client_ips_batch(self):
# If the DB pool has already terminated, don't try updating
if not self.hs.get_db_pool().running:
return
def update(): def update():
to_update = self._batch_row_update to_update = self._batch_row_update
self._batch_row_update = {} self._batch_row_update = {}
......
...@@ -15,4 +15,7 @@ ...@@ -15,4 +15,7 @@
from twisted.trial import util from twisted.trial import util
from tests import utils
util.DEFAULT_TIMEOUT_DURATION = 10 util.DEFAULT_TIMEOUT_DURATION = 10
utils.setupdb()
...@@ -39,7 +39,7 @@ class AuthTestCase(unittest.TestCase): ...@@ -39,7 +39,7 @@ class AuthTestCase(unittest.TestCase):
self.state_handler = Mock() self.state_handler = Mock()
self.store = Mock() self.store = Mock()
self.hs = yield setup_test_homeserver(handlers=None) self.hs = yield setup_test_homeserver(self.addCleanup, handlers=None)
self.hs.get_datastore = Mock(return_value=self.store) self.hs.get_datastore = Mock(return_value=self.store)
self.hs.handlers = TestHandlers(self.hs) self.hs.handlers = TestHandlers(self.hs)
self.auth = Auth(self.hs) self.auth = Auth(self.hs)
......
...@@ -46,7 +46,10 @@ class FilteringTestCase(unittest.TestCase): ...@@ -46,7 +46,10 @@ class FilteringTestCase(unittest.TestCase):
self.mock_http_client.put_json = DeferredMockCallable() self.mock_http_client.put_json = DeferredMockCallable()
hs = yield setup_test_homeserver( hs = yield setup_test_homeserver(
handlers=None, http_client=self.mock_http_client, keyring=Mock() self.addCleanup,
handlers=None,
http_client=self.mock_http_client,
keyring=Mock(),
) )
self.filtering = hs.get_filtering() self.filtering = hs.get_filtering()
......
...@@ -58,12 +58,10 @@ class KeyringTestCase(unittest.TestCase): ...@@ -58,12 +58,10 @@ class KeyringTestCase(unittest.TestCase):
self.mock_perspective_server = MockPerspectiveServer() self.mock_perspective_server = MockPerspectiveServer()
self.http_client = Mock() self.http_client = Mock()
self.hs = yield utils.setup_test_homeserver( self.hs = yield utils.setup_test_homeserver(
handlers=None, http_client=self.http_client self.addCleanup, handlers=None, http_client=self.http_client
) )
keys = self.mock_perspective_server.get_verify_keys() keys = self.mock_perspective_server.get_verify_keys()
self.hs.config.perspectives = { self.hs.config.perspectives = {self.mock_perspective_server.server_name: keys}
self.mock_perspective_server.server_name: keys
}
def check_context(self, _, expected): def check_context(self, _, expected):
self.assertEquals( self.assertEquals(
......
...@@ -35,7 +35,7 @@ class AuthHandlers(object): ...@@ -35,7 +35,7 @@ class AuthHandlers(object):
class AuthTestCase(unittest.TestCase): class AuthTestCase(unittest.TestCase):
@defer.inlineCallbacks @defer.inlineCallbacks
def setUp(self): def setUp(self):
self.hs = yield setup_test_homeserver(handlers=None) self.hs = yield setup_test_homeserver(self.addCleanup, handlers=None)
self.hs.handlers = AuthHandlers(self.hs) self.hs.handlers = AuthHandlers(self.hs)
self.auth_handler = self.hs.handlers.auth_handler self.auth_handler = self.hs.handlers.auth_handler
self.macaroon_generator = self.hs.get_macaroon_generator() self.macaroon_generator = self.hs.get_macaroon_generator()
......
...@@ -34,7 +34,7 @@ class DeviceTestCase(unittest.TestCase): ...@@ -34,7 +34,7 @@ class DeviceTestCase(unittest.TestCase):
@defer.inlineCallbacks @defer.inlineCallbacks
def setUp(self): def setUp(self):
hs = yield utils.setup_test_homeserver() hs = yield utils.setup_test_homeserver(self.addCleanup)
self.handler = hs.get_device_handler() self.handler = hs.get_device_handler()
self.store = hs.get_datastore() self.store = hs.get_datastore()
self.clock = hs.get_clock() self.clock = hs.get_clock()
......
...@@ -46,6 +46,7 @@ class DirectoryTestCase(unittest.TestCase): ...@@ -46,6 +46,7 @@ class DirectoryTestCase(unittest.TestCase):
self.mock_registry.register_query_handler = register_query_handler self.mock_registry.register_query_handler = register_query_handler
hs = yield setup_test_homeserver( hs = yield setup_test_homeserver(
self.addCleanup,
http_client=None, http_client=None,
resource_for_federation=Mock(), resource_for_federation=Mock(),
federation_client=self.mock_federation, federation_client=self.mock_federation,
......
...@@ -34,7 +34,7 @@ class E2eKeysHandlerTestCase(unittest.TestCase): ...@@ -34,7 +34,7 @@ class E2eKeysHandlerTestCase(unittest.TestCase):
@defer.inlineCallbacks @defer.inlineCallbacks
def setUp(self): def setUp(self):
self.hs = yield utils.setup_test_homeserver( self.hs = yield utils.setup_test_homeserver(
handlers=None, federation_client=mock.Mock() self.addCleanup, handlers=None, federation_client=mock.Mock()
) )
self.handler = synapse.handlers.e2e_keys.E2eKeysHandler(self.hs) self.handler = synapse.handlers.e2e_keys.E2eKeysHandler(self.hs)
......
...@@ -48,6 +48,7 @@ class ProfileTestCase(unittest.TestCase): ...@@ -48,6 +48,7 @@ class ProfileTestCase(unittest.TestCase):
self.mock_registry.register_query_handler = register_query_handler self.mock_registry.register_query_handler = register_query_handler
hs = yield setup_test_homeserver( hs = yield setup_test_homeserver(
self.addCleanup,
http_client=None, http_client=None,
handlers=None, handlers=None,
resource_for_federation=Mock(), resource_for_federation=Mock(),
......
...@@ -40,6 +40,7 @@ class RegistrationTestCase(unittest.TestCase): ...@@ -40,6 +40,7 @@ class RegistrationTestCase(unittest.TestCase):
self.mock_distributor.declare("registered_user") self.mock_distributor.declare("registered_user")
self.mock_captcha_client = Mock() self.mock_captcha_client = Mock()
self.hs = yield setup_test_homeserver( self.hs = yield setup_test_homeserver(
self.addCleanup,
handlers=None, handlers=None,
http_client=None, http_client=None,
expire_access_token=True, expire_access_token=True,
......
...@@ -67,6 +67,7 @@ class TypingNotificationsTestCase(unittest.TestCase): ...@@ -67,6 +67,7 @@ class TypingNotificationsTestCase(unittest.TestCase):
self.state_handler = Mock() self.state_handler = Mock()
hs = yield setup_test_homeserver( hs = yield setup_test_homeserver(
self.addCleanup,
"test", "test",
auth=self.auth, auth=self.auth,
clock=self.clock, clock=self.clock,
......
...@@ -54,6 +54,7 @@ class BaseSlavedStoreTestCase(unittest.TestCase): ...@@ -54,6 +54,7 @@ class BaseSlavedStoreTestCase(unittest.TestCase):
@defer.inlineCallbacks @defer.inlineCallbacks
def setUp(self): def setUp(self):
self.hs = yield setup_test_homeserver( self.hs = yield setup_test_homeserver(
self.addCleanup,
"blue", "blue",
http_client=None, http_client=None,
federation_client=Mock(), federation_client=Mock(),
......
...@@ -51,7 +51,7 @@ class UserRegisterTestCase(unittest.TestCase): ...@@ -51,7 +51,7 @@ class UserRegisterTestCase(unittest.TestCase):
self.secrets = Mock() self.secrets = Mock()
self.hs = setup_test_homeserver( self.hs = setup_test_homeserver(
http_client=None, clock=self.hs_clock, reactor=self.clock self.addCleanup, http_client=None, clock=self.hs_clock, reactor=self.clock
) )
self.hs.config.registration_shared_secret = u"shared" self.hs.config.registration_shared_secret = u"shared"
......
...@@ -41,6 +41,7 @@ class EventStreamPermissionsTestCase(RestTestCase): ...@@ -41,6 +41,7 @@ class EventStreamPermissionsTestCase(RestTestCase):
self.mock_resource = MockHttpResource(prefix=PATH_PREFIX) self.mock_resource = MockHttpResource(prefix=PATH_PREFIX)
hs = yield setup_test_homeserver( hs = yield setup_test_homeserver(
self.addCleanup,
http_client=None, http_client=None,
federation_client=Mock(), federation_client=Mock(),
ratelimiter=NonCallableMock(spec_set=["send_message"]), ratelimiter=NonCallableMock(spec_set=["send_message"]),
......
...@@ -46,6 +46,7 @@ class ProfileTestCase(unittest.TestCase): ...@@ -46,6 +46,7 @@ class ProfileTestCase(unittest.TestCase):
) )
hs = yield setup_test_homeserver( hs = yield setup_test_homeserver(
self.addCleanup,
"test", "test",
http_client=None, http_client=None,
resource_for_client=self.mock_resource, resource_for_client=self.mock_resource,
......
...@@ -49,7 +49,7 @@ class CreateUserServletTestCase(unittest.TestCase): ...@@ -49,7 +49,7 @@ class CreateUserServletTestCase(unittest.TestCase):
self.hs_clock = Clock(self.clock) self.hs_clock = Clock(self.clock)
self.hs = self.hs = setup_test_homeserver( self.hs = self.hs = setup_test_homeserver(
http_client=None, clock=self.hs_clock, reactor=self.clock self.addCleanup, http_client=None, clock=self.hs_clock, reactor=self.clock
) )
self.hs.get_datastore = Mock(return_value=self.datastore) self.hs.get_datastore = Mock(return_value=self.datastore)
self.hs.get_handlers = Mock(return_value=handlers) self.hs.get_handlers = Mock(return_value=handlers)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment