Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit d666fc0

Browse files
authored
Add type hints to some tests files (#12371)
1 parent 42d8710 commit d666fc0

File tree

6 files changed

+58
-42
lines changed

6 files changed

+58
-42
lines changed

changelog.d/12371.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add type hints to tests files.

mypy.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ exclude = (?x)
7676
|tests/storage/test_base.py
7777
|tests/storage/test_roommember.py
7878
|tests/test_metrics.py
79-
|tests/test_phone_home.py
8079
|tests/test_server.py
8180
|tests/test_state.py
8281
|tests/test_terms_auth.py

tests/storage/test__base.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,18 @@
1414
# limitations under the License.
1515

1616
import secrets
17+
from typing import Any, Dict, Generator, List, Tuple
18+
19+
from twisted.test.proto_helpers import MemoryReactor
20+
21+
from synapse.server import HomeServer
22+
from synapse.util import Clock
1723

1824
from tests import unittest
1925

2026

2127
class UpsertManyTests(unittest.HomeserverTestCase):
22-
def prepare(self, reactor, clock, hs):
28+
def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
2329
self.storage = hs.get_datastores().main
2430

2531
self.table_name = "table_" + secrets.token_hex(6)
@@ -40,11 +46,13 @@ def prepare(self, reactor, clock, hs):
4046
)
4147
)
4248

43-
def _dump_to_tuple(self, res):
49+
def _dump_to_tuple(
50+
self, res: List[Dict[str, Any]]
51+
) -> Generator[Tuple[int, str, str], None, None]:
4452
for i in res:
4553
yield (i["id"], i["username"], i["value"])
4654

47-
def test_upsert_many(self):
55+
def test_upsert_many(self) -> None:
4856
"""
4957
Upsert_many will perform the upsert operation across a batch of data.
5058
"""

tests/storage/test_monthly_active_users.py

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,15 @@
1111
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
14+
from typing import Any, Dict, List
1415
from unittest.mock import Mock
1516

1617
from twisted.internet import defer
18+
from twisted.test.proto_helpers import MemoryReactor
1719

1820
from synapse.api.constants import UserTypes
21+
from synapse.server import HomeServer
22+
from synapse.util import Clock
1923

2024
from tests import unittest
2125
from tests.test_utils import make_awaitable
@@ -24,15 +28,15 @@
2428
FORTY_DAYS = 40 * 24 * 60 * 60
2529

2630

27-
def gen_3pids(count):
31+
def gen_3pids(count: int) -> List[Dict[str, Any]]:
2832
"""Generate `count` threepids as a list."""
2933
return [
3034
{"medium": "email", "address": "user%i@matrix.org" % i} for i in range(count)
3135
]
3236

3337

3438
class MonthlyActiveUsersTestCase(unittest.HomeserverTestCase):
35-
def default_config(self):
39+
def default_config(self) -> Dict[str, Any]:
3640
config = default_config("test")
3741

3842
config.update({"limit_usage_by_mau": True, "max_mau_value": 50})
@@ -44,10 +48,10 @@ def default_config(self):
4448

4549
return config
4650

47-
def prepare(self, reactor, clock, homeserver):
48-
self.store = homeserver.get_datastores().main
51+
def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
52+
self.store = hs.get_datastores().main
4953
# Advance the clock a bit
50-
reactor.advance(FORTY_DAYS)
54+
self.reactor.advance(FORTY_DAYS)
5155

5256
@override_config({"max_mau_value": 3, "mau_limit_reserved_threepids": gen_3pids(3)})
5357
def test_initialise_reserved_users(self):
@@ -245,17 +249,17 @@ def test_populate_monthly_users_is_guest(self):
245249
)
246250
self.get_success(d)
247251

248-
self.store.upsert_monthly_active_user = Mock(return_value=make_awaitable(None))
252+
self.store.upsert_monthly_active_user = Mock(return_value=make_awaitable(None)) # type: ignore[assignment]
249253

250254
d = self.store.populate_monthly_active_users(user_id)
251255
self.get_success(d)
252256

253257
self.store.upsert_monthly_active_user.assert_not_called()
254258

255259
def test_populate_monthly_users_should_update(self):
256-
self.store.upsert_monthly_active_user = Mock(return_value=make_awaitable(None))
260+
self.store.upsert_monthly_active_user = Mock(return_value=make_awaitable(None)) # type: ignore[assignment]
257261

258-
self.store.is_trial_user = Mock(return_value=defer.succeed(False))
262+
self.store.is_trial_user = Mock(return_value=defer.succeed(False)) # type: ignore[assignment]
259263

260264
self.store.user_last_seen_monthly_active = Mock(
261265
return_value=defer.succeed(None)
@@ -266,9 +270,9 @@ def test_populate_monthly_users_should_update(self):
266270
self.store.upsert_monthly_active_user.assert_called_once()
267271

268272
def test_populate_monthly_users_should_not_update(self):
269-
self.store.upsert_monthly_active_user = Mock(return_value=make_awaitable(None))
273+
self.store.upsert_monthly_active_user = Mock(return_value=make_awaitable(None)) # type: ignore[assignment]
270274

271-
self.store.is_trial_user = Mock(return_value=defer.succeed(False))
275+
self.store.is_trial_user = Mock(return_value=defer.succeed(False)) # type: ignore[assignment]
272276
self.store.user_last_seen_monthly_active = Mock(
273277
return_value=defer.succeed(self.hs.get_clock().time_msec())
274278
)
@@ -324,16 +328,15 @@ def test_support_user_not_add_to_mau_limits(self):
324328
count = self.get_success(self.store.get_monthly_active_count())
325329
self.assertEqual(count, 0)
326330

327-
d = self.store.register_user(
328-
user_id=support_user_id, password_hash=None, user_type=UserTypes.SUPPORT
331+
self.get_success(
332+
self.store.register_user(
333+
user_id=support_user_id, password_hash=None, user_type=UserTypes.SUPPORT
334+
)
329335
)
330-
self.get_success(d)
331336

332-
d = self.store.upsert_monthly_active_user(support_user_id)
333-
self.get_success(d)
337+
self.get_success(self.store.upsert_monthly_active_user(support_user_id))
334338

335-
d = self.store.get_monthly_active_count()
336-
count = self.get_success(d)
339+
count = self.get_success(self.store.get_monthly_active_count())
337340
self.assertEqual(count, 0)
338341

339342
# Note that the max_mau_value setting should not matter.
@@ -352,7 +355,7 @@ def test_track_monthly_users_without_cap(self):
352355

353356
@override_config({"limit_usage_by_mau": False, "mau_stats_only": False})
354357
def test_no_users_when_not_tracking(self):
355-
self.store.upsert_monthly_active_user = Mock(return_value=make_awaitable(None))
358+
self.store.upsert_monthly_active_user = Mock(return_value=make_awaitable(None)) # type: ignore[assignment]
356359

357360
self.get_success(self.store.populate_monthly_active_users("@user:sever"))
358361

@@ -388,16 +391,16 @@ def test_get_monthly_active_count_by_service(self):
388391
self.store.register_user(user_id=native_user1, password_hash=None)
389392
)
390393

391-
count = self.get_success(self.store.get_monthly_active_count_by_service())
392-
self.assertEqual(count, {})
394+
count1 = self.get_success(self.store.get_monthly_active_count_by_service())
395+
self.assertEqual(count1, {})
393396

394397
self.get_success(self.store.upsert_monthly_active_user(native_user1))
395398
self.get_success(self.store.upsert_monthly_active_user(appservice1_user1))
396399
self.get_success(self.store.upsert_monthly_active_user(appservice1_user2))
397400
self.get_success(self.store.upsert_monthly_active_user(appservice2_user1))
398401

399-
count = self.get_success(self.store.get_monthly_active_count())
400-
self.assertEqual(count, 1)
402+
count2 = self.get_success(self.store.get_monthly_active_count())
403+
self.assertEqual(count2, 1)
401404

402405
d = self.store.get_monthly_active_count_by_service()
403406
result = self.get_success(d)

tests/storage/test_roommember.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@
1212
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
15+
from twisted.test.proto_helpers import MemoryReactor
1516

1617
from synapse.api.constants import Membership
1718
from synapse.rest.admin import register_servlets_for_client_rest_resource
1819
from synapse.rest.client import login, room
20+
from synapse.server import HomeServer
1921
from synapse.types import UserID, create_requester
22+
from synapse.util import Clock
2023

2124
from tests import unittest
2225
from tests.server import TestHomeServer
@@ -31,7 +34,7 @@ class RoomMemberStoreTestCase(unittest.HomeserverTestCase):
3134
room.register_servlets,
3235
]
3336

34-
def prepare(self, reactor, clock, hs: TestHomeServer):
37+
def prepare(self, reactor: MemoryReactor, clock: Clock, hs: TestHomeServer) -> None:
3538

3639
# We can't test the RoomMemberStore on its own without the other event
3740
# storage logic
@@ -44,7 +47,7 @@ def prepare(self, reactor, clock, hs: TestHomeServer):
4447
# User elsewhere on another host
4548
self.u_charlie = UserID.from_string("@charlie:elsewhere")
4649

47-
def test_one_member(self):
50+
def test_one_member(self) -> None:
4851

4952
# Alice creates the room, and is automatically joined
5053
self.room = self.helper.create_room_as(self.u_alice, tok=self.t_alice)
@@ -57,7 +60,7 @@ def test_one_member(self):
5760

5861
self.assertEqual([self.room], [m.room_id for m in rooms_for_user])
5962

60-
def test_count_known_servers(self):
63+
def test_count_known_servers(self) -> None:
6164
"""
6265
_count_known_servers will calculate how many servers are in a room.
6366
"""
@@ -68,7 +71,7 @@ def test_count_known_servers(self):
6871
servers = self.get_success(self.store._count_known_servers())
6972
self.assertEqual(servers, 2)
7073

71-
def test_count_known_servers_stat_counter_disabled(self):
74+
def test_count_known_servers_stat_counter_disabled(self) -> None:
7275
"""
7376
If enabled, the metrics for how many servers are known will be counted.
7477
"""
@@ -85,7 +88,7 @@ def test_count_known_servers_stat_counter_disabled(self):
8588
@unittest.override_config(
8689
{"enable_metrics": True, "metrics_flags": {"known_servers": True}}
8790
)
88-
def test_count_known_servers_stat_counter_enabled(self):
91+
def test_count_known_servers_stat_counter_enabled(self) -> None:
8992
"""
9093
If enabled, the metrics for how many servers are known will be counted.
9194
"""
@@ -107,7 +110,7 @@ def test_count_known_servers_stat_counter_enabled(self):
107110
# It now knows about Charlie's server.
108111
self.assertEqual(self.store._known_servers_count, 2)
109112

110-
def test_get_joined_users_from_context(self):
113+
def test_get_joined_users_from_context(self) -> None:
111114
room = self.helper.create_room_as(self.u_alice, tok=self.t_alice)
112115
bob_event = self.get_success(
113116
event_injection.inject_member_event(
@@ -161,7 +164,7 @@ def test_get_joined_users_from_context(self):
161164
)
162165
self.assertEqual(users.keys(), {self.u_alice, self.u_bob})
163166

164-
def test__null_byte_in_display_name_properly_handled(self):
167+
def test__null_byte_in_display_name_properly_handled(self) -> None:
165168
room = self.helper.create_room_as(self.u_alice, tok=self.t_alice)
166169

167170
res = self.get_success(
@@ -211,11 +214,11 @@ def test__null_byte_in_display_name_properly_handled(self):
211214

212215

213216
class CurrentStateMembershipUpdateTestCase(unittest.HomeserverTestCase):
214-
def prepare(self, reactor, clock, homeserver):
215-
self.store = homeserver.get_datastores().main
216-
self.room_creator = homeserver.get_room_creation_handler()
217+
def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
218+
self.store = hs.get_datastores().main
219+
self.room_creator = hs.get_room_creation_handler()
217220

218-
def test_can_rerun_update(self):
221+
def test_can_rerun_update(self) -> None:
219222
# First make sure we have completed all updates.
220223
self.wait_for_background_updates()
221224

tests/test_phone_home.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,24 @@
1616
from unittest import mock
1717

1818
from synapse.app.phone_stats_home import phone_stats_home
19+
from synapse.types import JsonDict
1920

2021
from tests.unittest import HomeserverTestCase
2122

2223

2324
class PhoneHomeStatsTestCase(HomeserverTestCase):
24-
def test_performance_frozen_clock(self):
25+
def test_performance_frozen_clock(self) -> None:
2526
"""
2627
If time doesn't move, don't error out.
2728
"""
2829
past_stats = [
2930
(self.hs.get_clock().time(), resource.getrusage(resource.RUSAGE_SELF))
3031
]
31-
stats = {}
32+
stats: JsonDict = {}
3233
self.get_success(phone_stats_home(self.hs, stats, past_stats))
3334
self.assertEqual(stats["cpu_average"], 0)
3435

35-
def test_performance_100(self):
36+
def test_performance_100(self) -> None:
3637
"""
3738
1 second of usage over 1 second is 100% CPU usage.
3839
"""
@@ -43,7 +44,8 @@ def test_performance_100(self):
4344
old_resource.ru_maxrss = real_res.ru_maxrss
4445

4546
past_stats = [(self.hs.get_clock().time(), old_resource)]
46-
stats = {}
47+
stats: JsonDict = {}
4748
self.reactor.advance(1)
48-
self.get_success(phone_stats_home(self.hs, stats, past_stats))
49+
# `old_resource` has type `Mock` instead of `struct_rusage`
50+
self.get_success(phone_stats_home(self.hs, stats, past_stats)) # type: ignore[arg-type]
4951
self.assertApproximates(stats["cpu_average"], 100, tolerance=2.5)

0 commit comments

Comments
 (0)