Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/8515.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Apply some internal fixes to the `HomeServer` class to make its code more idiomatic and statically-verifiable.
14 changes: 9 additions & 5 deletions synapse/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,13 @@ class HomeServer(metaclass=abc.ABCMeta):
# instantiated during setup() for future return by get_datastore()
DATASTORE_CLASS = abc.abstractproperty()

def __init__(self, hostname: str, config: HomeServerConfig, reactor=None, **kwargs):
def __init__(
self,
hostname: str,
config: HomeServerConfig,
reactor=None,
version_string="Synapse",
):
"""
Args:
hostname : The hostname for the server.
Expand Down Expand Up @@ -231,11 +237,9 @@ def __init__(self, hostname: str, config: HomeServerConfig, reactor=None, **kwar
burst_count=config.rc_registration.burst_count,
)

self.datastores = None # type: Optional[Databases]
self.version_string = version_string

# Other kwargs are explicit dependencies
for depname in kwargs:
setattr(self, depname, kwargs[depname])
self.datastores = None # type: Optional[Databases]

def get_instance_id(self) -> str:
"""A unique ID for this synapse process instance.
Expand Down
2 changes: 1 addition & 1 deletion tests/app/test_frontend_proxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class FrontendProxyTests(HomeserverTestCase):
def make_homeserver(self, reactor, clock):

hs = self.setup_test_homeserver(
http_client=None, homeserverToUse=GenericWorkerServer
http_client=None, homeserver_to_use=GenericWorkerServer
)

return hs
Expand Down
4 changes: 2 additions & 2 deletions tests/app/test_openid_listener.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
class FederationReaderOpenIDListenerTests(HomeserverTestCase):
def make_homeserver(self, reactor, clock):
hs = self.setup_test_homeserver(
http_client=None, homeserverToUse=GenericWorkerServer
http_client=None, homeserver_to_use=GenericWorkerServer
)
return hs

Expand Down Expand Up @@ -84,7 +84,7 @@ def test_openid_listener(self, names, expectation):
class SynapseHomeserverOpenIDListenerTests(HomeserverTestCase):
def make_homeserver(self, reactor, clock):
hs = self.setup_test_homeserver(
http_client=None, homeserverToUse=SynapseHomeServer
http_client=None, homeserver_to_use=SynapseHomeServer
)
return hs

Expand Down
4 changes: 2 additions & 2 deletions tests/replication/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def prepare(self, reactor, clock, hs):
self.reactor.lookups["testserv"] = "1.2.3.4"
self.worker_hs = self.setup_test_homeserver(
http_client=None,
homeserverToUse=GenericWorkerServer,
homeserver_to_use=GenericWorkerServer,
config=self._get_worker_hs_config(),
reactor=self.reactor,
)
Expand Down Expand Up @@ -266,7 +266,7 @@ def make_worker_hs(
config.update(extra_config)

worker_hs = self.setup_test_homeserver(
homeserverToUse=GenericWorkerServer,
homeserver_to_use=GenericWorkerServer,
config=config,
reactor=self.reactor,
**kwargs
Expand Down
2 changes: 1 addition & 1 deletion tests/replication/test_federation_ack.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def default_config(self) -> dict:
return config

def make_homeserver(self, reactor, clock):
hs = self.setup_test_homeserver(homeserverToUse=GenericWorkerServer)
hs = self.setup_test_homeserver(homeserver_to_use=GenericWorkerServer)

return hs

Expand Down
31 changes: 17 additions & 14 deletions tests/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import uuid
import warnings
from inspect import getcallargs
from typing import Type
from urllib import parse as urlparse

from mock import Mock, patch
Expand Down Expand Up @@ -194,8 +195,8 @@ def setup_test_homeserver(
name="test",
config=None,
reactor=None,
homeserverToUse=TestHomeServer,
**kargs
homeserver_to_use: Type[HomeServer] = TestHomeServer,
**kwargs
):
"""
Setup a homeserver suitable for running tests against. Keyword arguments
Expand All @@ -218,8 +219,8 @@ def setup_test_homeserver(

config.ldap_enabled = False

if "clock" not in kargs:
kargs["clock"] = MockClock()
if "clock" not in kwargs:
kwargs["clock"] = MockClock()

if USE_POSTGRES_FOR_TESTS:
test_db = "synapse_test_%s" % uuid.uuid4().hex
Expand Down Expand Up @@ -264,18 +265,20 @@ def setup_test_homeserver(
cur.close()
db_conn.close()

hs = homeserverToUse(
name,
config=config,
version_string="Synapse/tests",
tls_server_context_factory=Mock(),
tls_client_options_factory=Mock(),
reactor=reactor,
**kargs
hs = homeserver_to_use(
name, config=config, version_string="Synapse/tests", reactor=reactor,
)

# Install @cache_in_self attributes
for key, val in kwargs.items():
setattr(hs, key, val)

# Mock TLS
hs.tls_server_context_factory = Mock()
hs.tls_client_options_factory = Mock()
Comment on lines +277 to +278
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if these are used anywhere...?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess remove them and see which tests fail?


hs.setup()
if homeserverToUse.__name__ == "TestHomeServer":
if homeserver_to_use == TestHomeServer:
hs.setup_background_tasks()

if isinstance(db_engine, PostgresEngine):
Expand Down Expand Up @@ -339,7 +342,7 @@ async def validate_hash(p, h):

hs.get_auth_handler().validate_hash = validate_hash

fed = kargs.get("resource_for_federation", None)
fed = kwargs.get("resource_for_federation", None)
if fed:
register_federation_servlets(hs, fed)

Expand Down