Skip to content

Commit f0e934e

Browse files
committed
Also silence tests.server (RDATA) logs for TypingStreamTestCase.test_reset
1 parent 5987c9d commit f0e934e

File tree

1 file changed

+80
-71
lines changed

1 file changed

+80
-71
lines changed

tests/replication/tcp/streams/test_typing.py

Lines changed: 80 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
# [This file includes modifications made by New Vector Limited]
1919
#
2020
#
21+
import logging
2122
from unittest.mock import Mock
2223

2324
from synapse.handlers.typing import RoomMember, TypingWriterHandler
@@ -99,75 +100,83 @@ def test_reset(self) -> None:
99100
This is emulated by jumping the stream ahead, then reconnecting (which
100101
sends the proper position and RDATA).
101102
"""
102-
typing = self.hs.get_typing_handler()
103-
assert isinstance(typing, TypingWriterHandler)
104-
105-
# Create a typing update before we reconnect so that there is a missing
106-
# update to fetch.
107-
typing._push_update(member=RoomMember(ROOM_ID, USER_ID), typing=True)
108-
109-
self.reconnect()
110-
111-
typing._push_update(member=RoomMember(ROOM_ID, USER_ID), typing=True)
112-
113-
self.reactor.advance(0)
114-
115-
# We should now see an attempt to connect to the master
116-
request = self.handle_http_replication_attempt()
117-
self.assert_request_is_get_repl_stream_updates(request, "typing")
118-
119-
self.mock_handler.on_rdata.assert_called_once()
120-
stream_name, _, token, rdata_rows = self.mock_handler.on_rdata.call_args[0]
121-
self.assertEqual(stream_name, "typing")
122-
self.assertEqual(1, len(rdata_rows))
123-
row: TypingStream.TypingStreamRow = rdata_rows[0]
124-
self.assertEqual(ROOM_ID, row.room_id)
125-
self.assertEqual([USER_ID], row.user_ids)
126-
127-
# Push the stream forward a bunch so it can be reset.
128-
for i in range(100):
129-
typing._push_update(
130-
member=RoomMember(ROOM_ID, "@test%s:blue" % i), typing=True
103+
# A huge RDATA log line is triggered in this test, which breaks trial
104+
# ref: https://github.com/twisted/twisted/issues/12482
105+
server_logger = logging.getLogger("tests.server")
106+
server_logger_was_disabled = server_logger.disabled
107+
server_logger.disabled = True
108+
try:
109+
typing = self.hs.get_typing_handler()
110+
assert isinstance(typing, TypingWriterHandler)
111+
112+
# Create a typing update before we reconnect so that there is a missing
113+
# update to fetch.
114+
typing._push_update(member=RoomMember(ROOM_ID, USER_ID), typing=True)
115+
116+
self.reconnect()
117+
118+
typing._push_update(member=RoomMember(ROOM_ID, USER_ID), typing=True)
119+
120+
self.reactor.advance(0)
121+
122+
# We should now see an attempt to connect to the master
123+
request = self.handle_http_replication_attempt()
124+
self.assert_request_is_get_repl_stream_updates(request, "typing")
125+
126+
self.mock_handler.on_rdata.assert_called_once()
127+
stream_name, _, token, rdata_rows = self.mock_handler.on_rdata.call_args[0]
128+
self.assertEqual(stream_name, "typing")
129+
self.assertEqual(1, len(rdata_rows))
130+
row: TypingStream.TypingStreamRow = rdata_rows[0]
131+
self.assertEqual(ROOM_ID, row.room_id)
132+
self.assertEqual([USER_ID], row.user_ids)
133+
134+
# Push the stream forward a bunch so it can be reset.
135+
for i in range(100):
136+
typing._push_update(
137+
member=RoomMember(ROOM_ID, "@test%s:blue" % i), typing=True
138+
)
139+
self.reactor.advance(0)
140+
141+
# Disconnect.
142+
self.disconnect()
143+
144+
# Reset the typing handler
145+
self.hs.get_replication_streams()["typing"].last_token = 0
146+
self.hs.get_replication_command_handler()._streams["typing"].last_token = 0
147+
typing._latest_room_serial = 0
148+
typing._typing_stream_change_cache = StreamChangeCache(
149+
name="TypingStreamChangeCache",
150+
server_name=self.hs.hostname,
151+
current_stream_pos=typing._latest_room_serial,
131152
)
132-
self.reactor.advance(0)
133-
134-
# Disconnect.
135-
self.disconnect()
136-
137-
# Reset the typing handler
138-
self.hs.get_replication_streams()["typing"].last_token = 0
139-
self.hs.get_replication_command_handler()._streams["typing"].last_token = 0
140-
typing._latest_room_serial = 0
141-
typing._typing_stream_change_cache = StreamChangeCache(
142-
name="TypingStreamChangeCache",
143-
server_name=self.hs.hostname,
144-
current_stream_pos=typing._latest_room_serial,
145-
)
146-
typing._reset()
147-
148-
# Reconnect.
149-
self.reconnect()
150-
self.pump(0.1)
151-
152-
# We should now see an attempt to connect to the master
153-
request = self.handle_http_replication_attempt()
154-
self.assert_request_is_get_repl_stream_updates(request, "typing")
155-
156-
# Reset the test code.
157-
self.mock_handler.on_rdata.reset_mock()
158-
self.mock_handler.on_rdata.assert_not_called()
159-
160-
# Push additional data.
161-
typing._push_update(member=RoomMember(ROOM_ID_2, USER_ID_2), typing=False)
162-
self.reactor.advance(0)
163-
164-
self.mock_handler.on_rdata.assert_called_once()
165-
stream_name, _, token, rdata_rows = self.mock_handler.on_rdata.call_args[0]
166-
self.assertEqual(stream_name, "typing")
167-
self.assertEqual(1, len(rdata_rows))
168-
row = rdata_rows[0]
169-
self.assertEqual(ROOM_ID_2, row.room_id)
170-
self.assertEqual([], row.user_ids)
171-
172-
# The token should have been reset.
173-
self.assertEqual(token, 1)
153+
typing._reset()
154+
155+
# Reconnect.
156+
self.reconnect()
157+
self.pump(0.1)
158+
159+
# We should now see an attempt to connect to the master
160+
request = self.handle_http_replication_attempt()
161+
self.assert_request_is_get_repl_stream_updates(request, "typing")
162+
163+
# Reset the test code.
164+
self.mock_handler.on_rdata.reset_mock()
165+
self.mock_handler.on_rdata.assert_not_called()
166+
167+
# Push additional data.
168+
typing._push_update(member=RoomMember(ROOM_ID_2, USER_ID_2), typing=False)
169+
self.reactor.advance(0)
170+
171+
self.mock_handler.on_rdata.assert_called_once()
172+
stream_name, _, token, rdata_rows = self.mock_handler.on_rdata.call_args[0]
173+
self.assertEqual(stream_name, "typing")
174+
self.assertEqual(1, len(rdata_rows))
175+
row = rdata_rows[0]
176+
self.assertEqual(ROOM_ID_2, row.room_id)
177+
self.assertEqual([], row.user_ids)
178+
179+
# The token should have been reset.
180+
self.assertEqual(token, 1)
181+
finally:
182+
server_logger.disabled = server_logger_was_disabled

0 commit comments

Comments
 (0)