mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 13:54:47 -04:00
Optimise some references to hs.config (#7546)
These are surprisingly expensive, and we only really need to do them at startup.
This commit is contained in:
parent
2901f54359
commit
f4269694ce
8 changed files with 162 additions and 136 deletions
|
@ -17,47 +17,44 @@
|
|||
|
||||
import json
|
||||
|
||||
from mock import Mock
|
||||
|
||||
from synapse.api.auth_blocking import AuthBlocking
|
||||
from synapse.api.constants import LoginType
|
||||
from synapse.api.errors import Codes, HttpResponseException, SynapseError
|
||||
from synapse.rest.client.v2_alpha import register, sync
|
||||
|
||||
from tests import unittest
|
||||
from tests.unittest import override_config
|
||||
from tests.utils import default_config
|
||||
|
||||
|
||||
class TestMauLimit(unittest.HomeserverTestCase):
|
||||
|
||||
servlets = [register.register_servlets, sync.register_servlets]
|
||||
|
||||
def make_homeserver(self, reactor, clock):
|
||||
def default_config(self):
|
||||
config = default_config("test")
|
||||
|
||||
self.hs = self.setup_test_homeserver(
|
||||
"red", http_client=None, federation_client=Mock()
|
||||
config.update(
|
||||
{
|
||||
"registrations_require_3pid": [],
|
||||
"limit_usage_by_mau": True,
|
||||
"max_mau_value": 2,
|
||||
"mau_trial_days": 0,
|
||||
"server_notices": {
|
||||
"system_mxid_localpart": "server",
|
||||
"room_name": "Test Server Notice Room",
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
self.store = self.hs.get_datastore()
|
||||
# apply any additional config which was specified via the override_config
|
||||
# decorator.
|
||||
if self._extra_config is not None:
|
||||
config.update(self._extra_config)
|
||||
|
||||
self.hs.config.registrations_require_3pid = []
|
||||
self.hs.config.enable_registration_captcha = False
|
||||
self.hs.config.recaptcha_public_key = []
|
||||
return config
|
||||
|
||||
self.hs.config.limit_usage_by_mau = True
|
||||
self.hs.config.hs_disabled = False
|
||||
self.hs.config.max_mau_value = 2
|
||||
self.hs.config.server_notices_mxid = "@server:red"
|
||||
self.hs.config.server_notices_mxid_display_name = None
|
||||
self.hs.config.server_notices_mxid_avatar_url = None
|
||||
self.hs.config.server_notices_room_name = "Test Server Notice Room"
|
||||
self.hs.config.mau_trial_days = 0
|
||||
|
||||
# AuthBlocking reads config options during hs creation. Recreate the
|
||||
# hs' copy of AuthBlocking after we've updated config values above
|
||||
self.auth_blocking = AuthBlocking(self.hs)
|
||||
self.hs.get_auth()._auth_blocking = self.auth_blocking
|
||||
|
||||
return self.hs
|
||||
def prepare(self, reactor, clock, homeserver):
|
||||
self.store = homeserver.get_datastore()
|
||||
|
||||
def test_simple_deny_mau(self):
|
||||
# Create and sync so that the MAU counts get updated
|
||||
|
@ -66,6 +63,9 @@ class TestMauLimit(unittest.HomeserverTestCase):
|
|||
token2 = self.create_user("kermit2")
|
||||
self.do_sync_for_user(token2)
|
||||
|
||||
# check we're testing what we think we are: there should be two active users
|
||||
self.assertEqual(self.get_success(self.store.get_monthly_active_count()), 2)
|
||||
|
||||
# We've created and activated two users, we shouldn't be able to
|
||||
# register new users
|
||||
with self.assertRaises(SynapseError) as cm:
|
||||
|
@ -93,9 +93,8 @@ class TestMauLimit(unittest.HomeserverTestCase):
|
|||
token3 = self.create_user("kermit3")
|
||||
self.do_sync_for_user(token3)
|
||||
|
||||
@override_config({"mau_trial_days": 1})
|
||||
def test_trial_delay(self):
|
||||
self.hs.config.mau_trial_days = 1
|
||||
|
||||
# We should be able to register more than the limit initially
|
||||
token1 = self.create_user("kermit1")
|
||||
self.do_sync_for_user(token1)
|
||||
|
@ -127,8 +126,8 @@ class TestMauLimit(unittest.HomeserverTestCase):
|
|||
self.assertEqual(e.code, 403)
|
||||
self.assertEqual(e.errcode, Codes.RESOURCE_LIMIT_EXCEEDED)
|
||||
|
||||
@override_config({"mau_trial_days": 1})
|
||||
def test_trial_users_cant_come_back(self):
|
||||
self.auth_blocking._mau_trial_days = 1
|
||||
self.hs.config.mau_trial_days = 1
|
||||
|
||||
# We should be able to register more than the limit initially
|
||||
|
@ -176,11 +175,11 @@ class TestMauLimit(unittest.HomeserverTestCase):
|
|||
self.assertEqual(e.code, 403)
|
||||
self.assertEqual(e.errcode, Codes.RESOURCE_LIMIT_EXCEEDED)
|
||||
|
||||
@override_config(
|
||||
# max_mau_value should not matter
|
||||
{"max_mau_value": 1, "limit_usage_by_mau": False, "mau_stats_only": True}
|
||||
)
|
||||
def test_tracked_but_not_limited(self):
|
||||
self.auth_blocking._max_mau_value = 1 # should not matter
|
||||
self.auth_blocking._limit_usage_by_mau = False
|
||||
self.hs.config.mau_stats_only = True
|
||||
|
||||
# Simply being able to create 2 users indicates that the
|
||||
# limit was not reached.
|
||||
token1 = self.create_user("kermit1")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue