mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-11-13 05:00:37 -05:00
Merge remote-tracking branch 'origin/develop' into 3218-official-prom
This commit is contained in:
commit
a8990fa2ec
55 changed files with 1777 additions and 207 deletions
|
|
@ -2,6 +2,9 @@ from synapse.rest.client.transactions import HttpTransactionCache
|
|||
from synapse.rest.client.transactions import CLEANUP_PERIOD_MS
|
||||
from twisted.internet import defer
|
||||
from mock import Mock, call
|
||||
|
||||
from synapse.util import async
|
||||
from synapse.util.logcontext import LoggingContext
|
||||
from tests import unittest
|
||||
from tests.utils import MockClock
|
||||
|
||||
|
|
@ -39,6 +42,78 @@ class HttpTransactionCacheTestCase(unittest.TestCase):
|
|||
# expect only a single call to do the work
|
||||
cb.assert_called_once_with("some_arg", keyword="arg", changing_args=0)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_logcontexts_with_async_result(self):
|
||||
@defer.inlineCallbacks
|
||||
def cb():
|
||||
yield async.sleep(0)
|
||||
defer.returnValue("yay")
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test():
|
||||
with LoggingContext("c") as c1:
|
||||
res = yield self.cache.fetch_or_execute(self.mock_key, cb)
|
||||
self.assertIs(LoggingContext.current_context(), c1)
|
||||
self.assertEqual(res, "yay")
|
||||
|
||||
# run the test twice in parallel
|
||||
d = defer.gatherResults([test(), test()])
|
||||
self.assertIs(LoggingContext.current_context(), LoggingContext.sentinel)
|
||||
yield d
|
||||
self.assertIs(LoggingContext.current_context(), LoggingContext.sentinel)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_does_not_cache_exceptions(self):
|
||||
"""Checks that, if the callback throws an exception, it is called again
|
||||
for the next request.
|
||||
"""
|
||||
called = [False]
|
||||
|
||||
def cb():
|
||||
if called[0]:
|
||||
# return a valid result the second time
|
||||
return defer.succeed(self.mock_http_response)
|
||||
|
||||
called[0] = True
|
||||
raise Exception("boo")
|
||||
|
||||
with LoggingContext("test") as test_context:
|
||||
try:
|
||||
yield self.cache.fetch_or_execute(self.mock_key, cb)
|
||||
except Exception as e:
|
||||
self.assertEqual(e.message, "boo")
|
||||
self.assertIs(LoggingContext.current_context(), test_context)
|
||||
|
||||
res = yield self.cache.fetch_or_execute(self.mock_key, cb)
|
||||
self.assertEqual(res, self.mock_http_response)
|
||||
self.assertIs(LoggingContext.current_context(), test_context)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_does_not_cache_failures(self):
|
||||
"""Checks that, if the callback returns a failure, it is called again
|
||||
for the next request.
|
||||
"""
|
||||
called = [False]
|
||||
|
||||
def cb():
|
||||
if called[0]:
|
||||
# return a valid result the second time
|
||||
return defer.succeed(self.mock_http_response)
|
||||
|
||||
called[0] = True
|
||||
return defer.fail(Exception("boo"))
|
||||
|
||||
with LoggingContext("test") as test_context:
|
||||
try:
|
||||
yield self.cache.fetch_or_execute(self.mock_key, cb)
|
||||
except Exception as e:
|
||||
self.assertEqual(e.message, "boo")
|
||||
self.assertIs(LoggingContext.current_context(), test_context)
|
||||
|
||||
res = yield self.cache.fetch_or_execute(self.mock_key, cb)
|
||||
self.assertEqual(res, self.mock_http_response)
|
||||
self.assertIs(LoggingContext.current_context(), test_context)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_cleans_up(self):
|
||||
cb = Mock(
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ class EventPushActionsStoreTestCase(tests.unittest.TestCase):
|
|||
def _assert_counts(noitf_count, highlight_count):
|
||||
counts = yield self.store.runInteraction(
|
||||
"", self.store._get_unread_counts_by_pos_txn,
|
||||
room_id, user_id, 0, 0
|
||||
room_id, user_id, 0
|
||||
)
|
||||
self.assertEquals(
|
||||
counts,
|
||||
|
|
@ -86,7 +86,7 @@ class EventPushActionsStoreTestCase(tests.unittest.TestCase):
|
|||
def _mark_read(stream, depth):
|
||||
return self.store.runInteraction(
|
||||
"", self.store._remove_old_push_actions_before_txn,
|
||||
room_id, user_id, depth, stream
|
||||
room_id, user_id, stream
|
||||
)
|
||||
|
||||
yield _assert_counts(0, 0)
|
||||
|
|
|
|||
|
|
@ -42,9 +42,14 @@ class RegistrationStoreTestCase(unittest.TestCase):
|
|||
yield self.store.register(self.user_id, self.tokens[0], self.pwhash)
|
||||
|
||||
self.assertEquals(
|
||||
# TODO(paul): Surely this field should be 'user_id', not 'name'
|
||||
# Additionally surely it shouldn't come in a 1-element list
|
||||
{"name": self.user_id, "password_hash": self.pwhash, "is_guest": 0},
|
||||
{
|
||||
# TODO(paul): Surely this field should be 'user_id', not 'name'
|
||||
"name": self.user_id,
|
||||
"password_hash": self.pwhash,
|
||||
"is_guest": 0,
|
||||
"consent_version": None,
|
||||
"consent_server_notice_sent": None,
|
||||
},
|
||||
(yield self.store.get_user_by_id(self.user_id))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -63,6 +63,8 @@ def setup_test_homeserver(name="test", datastore=None, config=None, **kargs):
|
|||
config.federation_rc_concurrent = 10
|
||||
config.filter_timeline_limit = 5000
|
||||
config.user_directory_search_all_users = False
|
||||
config.user_consent_server_notice_content = None
|
||||
config.block_events_without_consent_error = None
|
||||
|
||||
# disable user directory updates, because they get done in the
|
||||
# background, which upsets the test runner.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue