Skip to content
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/18992.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Remove `MockClock()` in tests.
8 changes: 5 additions & 3 deletions synapse/app/phone_stats_home.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,17 @@
run_as_background_process,
)
from synapse.types import JsonDict
from synapse.util.constants import ONE_HOUR_SECONDS, ONE_MINUTE_SECONDS
from synapse.util.constants import (
MILLISECONDS_PER_SECOND,
ONE_HOUR_SECONDS,
ONE_MINUTE_SECONDS,
)

if TYPE_CHECKING:
from synapse.server import HomeServer

logger = logging.getLogger("synapse.app.homeserver")

MILLISECONDS_PER_SECOND = 1000

INITIAL_DELAY_BEFORE_FIRST_PHONE_HOME_SECONDS = 5 * ONE_MINUTE_SECONDS
"""
We wait 5 minutes to send the first set of stats as the server can be quite busy the
Expand Down
2 changes: 2 additions & 0 deletions synapse/util/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,5 @@
# readability and catching bugs.
ONE_MINUTE_SECONDS = 60
ONE_HOUR_SECONDS = 60 * ONE_MINUTE_SECONDS

MILLISECONDS_PER_SECOND = 1000
23 changes: 11 additions & 12 deletions tests/appservice/test_scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
# [This file includes modifications made by New Vector Limited]
#
#
from typing import List, Optional, Sequence, Tuple, cast
from typing import List, Optional, Sequence, Tuple
from unittest.mock import AsyncMock, Mock

from typing_extensions import TypeAlias
Expand All @@ -44,13 +44,12 @@
from synapse.util.clock import Clock

from tests import unittest

from ..utils import MockClock
from tests.server import get_clock


class ApplicationServiceSchedulerTransactionCtrlTestCase(unittest.TestCase):
def setUp(self) -> None:
self.clock = MockClock()
self.reactor, self.clock = get_clock()
self.store = Mock()
self.as_api = Mock()

Expand Down Expand Up @@ -170,14 +169,14 @@ def test_single_service_up_txn_not_sent(self) -> None:

class ApplicationServiceSchedulerRecovererTestCase(unittest.TestCase):
def setUp(self) -> None:
self.clock = MockClock()
self.reactor, self.clock = get_clock()
self.as_api = Mock()
self.store = Mock()
self.service = Mock()
self.callback = AsyncMock()
self.recoverer = _Recoverer(
server_name="test_server",
clock=cast(Clock, self.clock),
clock=self.clock,
as_api=self.as_api,
store=self.store,
service=self.service,
Expand All @@ -202,7 +201,7 @@ def take_txn(
txn.send = AsyncMock(return_value=True)
txn.complete = AsyncMock(return_value=None)
# wait for exp backoff
self.clock.advance_time(2)
self.reactor.advance(2)
self.assertEqual(1, txn.send.call_count)
self.assertEqual(1, txn.complete.call_count)
# 2 because it needs to get None to know there are no more txns
Expand All @@ -229,21 +228,21 @@ def take_txn(
self.assertEqual(0, self.store.get_oldest_unsent_txn.call_count)
txn.send = AsyncMock(return_value=False)
txn.complete = AsyncMock(return_value=None)
self.clock.advance_time(2)
self.reactor.advance(2)
self.assertEqual(1, txn.send.call_count)
self.assertEqual(0, txn.complete.call_count)
self.assertEqual(0, self.callback.call_count)
self.clock.advance_time(4)
self.reactor.advance(4)
self.assertEqual(2, txn.send.call_count)
self.assertEqual(0, txn.complete.call_count)
self.assertEqual(0, self.callback.call_count)
self.clock.advance_time(8)
self.reactor.advance(8)
self.assertEqual(3, txn.send.call_count)
self.assertEqual(0, txn.complete.call_count)
self.assertEqual(0, self.callback.call_count)
txn.send = AsyncMock(return_value=True) # successfully send the txn
pop_txn = True # returns the txn the first time, then no more.
self.clock.advance_time(16)
self.reactor.advance(16)
self.assertEqual(1, txn.send.call_count) # new mock reset call count
self.assertEqual(1, txn.complete.call_count)
self.callback.assert_called_once_with(self.recoverer)
Expand All @@ -268,7 +267,7 @@ def take_txn(
self.assertEqual(0, self.store.get_oldest_unsent_txn.call_count)
txn.send = AsyncMock(return_value=False)
txn.complete = AsyncMock(return_value=None)
self.clock.advance_time(2)
self.reactor.advance(2)
self.assertEqual(1, txn.send.call_count)
self.assertEqual(0, txn.complete.call_count)
self.assertEqual(0, self.callback.call_count)
Expand Down
10 changes: 8 additions & 2 deletions tests/config/test_oauth_delegation.py
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,10 @@ def test_auth_providers_cannot_be_enabled(self) -> None:
reactor, clock = get_clock()
with self.assertRaises(ConfigError):
setup_test_homeserver(
self.addCleanup, reactor=reactor, clock=clock, config=config
cleanup_func=self.addCleanup,
config=config,
reactor=reactor,
clock=clock,
)

def test_jwt_auth_cannot_be_enabled(self) -> None:
Expand Down Expand Up @@ -395,7 +398,10 @@ def test_auth_providers_cannot_be_enabled(self) -> None:
reactor, clock = get_clock()
with self.assertRaises(ConfigError):
setup_test_homeserver(
self.addCleanup, reactor=reactor, clock=clock, config=config
cleanup_func=self.addCleanup,
config=config,
reactor=reactor,
clock=clock,
)

@skip_unless(HAS_AUTHLIB, "requires authlib")
Expand Down
6 changes: 4 additions & 2 deletions tests/handlers/test_appservice.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@
from synapse.util.stringutils import random_string

from tests import unittest
from tests.server import get_clock
from tests.test_utils import event_injection
from tests.unittest import override_config
from tests.utils import MockClock


class AppServiceHandlerTestCase(unittest.TestCase):
Expand All @@ -61,14 +61,16 @@ def setUp(self) -> None:
self.mock_store = Mock()
self.mock_as_api = AsyncMock()
self.mock_scheduler = Mock()
self.reactor, self.clock = get_clock()

hs = Mock()
hs.get_datastores.return_value = Mock(main=self.mock_store)
self.mock_store.get_appservice_last_pos = AsyncMock(return_value=None)
self.mock_store.set_appservice_last_pos = AsyncMock(return_value=None)
self.mock_store.set_appservice_stream_type_pos = AsyncMock(return_value=None)
hs.get_application_service_api.return_value = self.mock_as_api
hs.get_application_service_scheduler.return_value = self.mock_scheduler
hs.get_clock.return_value = MockClock()
hs.get_clock.return_value = self.clock
self.handler = ApplicationServicesHandler(hs)
self.event_source = hs.get_event_sources()

Expand Down
3 changes: 1 addition & 2 deletions tests/handlers/test_e2e_room_keys.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
#

import copy
from unittest import mock

from twisted.internet.testing import MemoryReactor

Expand Down Expand Up @@ -50,7 +49,7 @@

class E2eRoomKeysHandlerTestCase(unittest.HomeserverTestCase):
def make_homeserver(self, reactor: MemoryReactor, clock: Clock) -> HomeServer:
return self.setup_test_homeserver(replication_layer=mock.Mock())
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Since I was dealing with setup_test_homeserver so much, I noticed this unused mock

return self.setup_test_homeserver()

def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
self.handler = hs.get_e2e_room_keys_handler()
Expand Down
4 changes: 2 additions & 2 deletions tests/http/federation/test_srv_resolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
from synapse.logging.context import LoggingContext, current_context

from tests import unittest
from tests.utils import MockClock
from tests.server import get_clock


class SrvResolverTestCase(unittest.TestCase):
Expand Down Expand Up @@ -105,7 +105,7 @@ def test_from_cache_expired_and_dns_fail(

@defer.inlineCallbacks
def test_from_cache(self) -> Generator["Deferred[object]", object, None]:
clock = MockClock()
reactor, clock = get_clock()

dns_client_mock = Mock(spec_set=["lookupService"])
dns_client_mock.lookupService = Mock(spec_set=[])
Expand Down
4 changes: 0 additions & 4 deletions tests/http/test_matrixfederationclient.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,6 @@ def check_logcontext(context: LoggingContextOrSentinel) -> None:


class FederationClientTests(HomeserverTestCase):
def make_homeserver(self, reactor: MemoryReactor, clock: Clock) -> HomeServer:
hs = self.setup_test_homeserver(reactor=reactor, clock=clock)
return hs

def prepare(
self, reactor: MemoryReactor, clock: Clock, homeserver: HomeServer
) -> None:
Expand Down
7 changes: 0 additions & 7 deletions tests/media/test_media_retention.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@

from tests import unittest
from tests.unittest import override_config
from tests.utils import MockClock


class MediaRetentionTestCase(unittest.HomeserverTestCase):
Expand All @@ -51,12 +50,6 @@ class MediaRetentionTestCase(unittest.HomeserverTestCase):
admin.register_servlets_for_client_rest_resource,
]

def make_homeserver(self, reactor: MemoryReactor, clock: Clock) -> HomeServer:
# We need to be able to test advancing time in the homeserver, so we
# replace the test homeserver's default clock with a MockClock, which
# supports advancing time.
return self.setup_test_homeserver(clock=MockClock())

def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
self.remote_server_name = "remote.homeserver"
self.store = hs.get_datastores().main
Expand Down
15 changes: 10 additions & 5 deletions tests/rest/client/test_transactions.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,19 @@
from synapse.rest.client.transactions import CLEANUP_PERIOD_MS, HttpTransactionCache
from synapse.types import ISynapseReactor, JsonDict
from synapse.util.clock import Clock
from synapse.util.constants import (
MILLISECONDS_PER_SECOND,
)

from tests import unittest
from tests.utils import MockClock
from tests.server import get_clock

reactor = cast(ISynapseReactor, _reactor)


class HttpTransactionCacheTestCase(unittest.TestCase):
def setUp(self) -> None:
self.clock = MockClock()
self.reactor, self.clock = get_clock()
self.hs = Mock()
self.hs.get_clock = Mock(return_value=self.clock)
self.hs.get_auth = Mock()
Expand Down Expand Up @@ -180,16 +183,18 @@ def test_cleans_up(self) -> Generator["defer.Deferred[Any]", object, None]:
yield self.cache.fetch_or_execute_request(
self.mock_request, self.mock_requester, cb, "an arg"
)
# should NOT have cleaned up yet
self.clock.advance_time_msec(CLEANUP_PERIOD_MS / 2)
# Advance time just under the cleanup period.
# Should NOT have cleaned up yet
self.reactor.advance((CLEANUP_PERIOD_MS - 1) / MILLISECONDS_PER_SECOND)

yield self.cache.fetch_or_execute_request(
self.mock_request, self.mock_requester, cb, "an arg"
)
# still using cache
cb.assert_called_once_with("an arg")

self.clock.advance_time_msec(CLEANUP_PERIOD_MS)
# Advance time just after the cleanup period.
self.reactor.advance(2 / MILLISECONDS_PER_SECOND)

yield self.cache.fetch_or_execute_request(
self.mock_request, self.mock_requester, cb, "an arg"
Expand Down
2 changes: 1 addition & 1 deletion tests/rest/key/v2/test_remote_key_resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ def default_config(self) -> Dict[str, Any]:
def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
# make a second homeserver, configured to use the first one as a key notary
self.http_client2 = Mock()
config = default_config(name="keyclient")
config = default_config(server_name="keyclient")
config["trusted_key_servers"] = [
{
"server_name": self.hs.hostname,
Expand Down
Loading
Loading