mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-12-15 21:43:48 -05:00
Convert the message handler to async/await. (#7884)
This commit is contained in:
parent
a4cf94a3c2
commit
cc9bb3dc3f
10 changed files with 273 additions and 238 deletions
|
|
@ -41,8 +41,10 @@ class TestEventContext(unittest.HomeserverTestCase):
|
|||
serialize/deserialize.
|
||||
"""
|
||||
|
||||
event, context = create_event(
|
||||
self.hs, room_id=self.room_id, type="m.test", sender=self.user_id,
|
||||
event, context = self.get_success(
|
||||
create_event(
|
||||
self.hs, room_id=self.room_id, type="m.test", sender=self.user_id,
|
||||
)
|
||||
)
|
||||
|
||||
self._check_serialize_deserialize(event, context)
|
||||
|
|
@ -51,12 +53,14 @@ class TestEventContext(unittest.HomeserverTestCase):
|
|||
"""Test that an EventContext for a state event (with not previous entry)
|
||||
is the same after serialize/deserialize.
|
||||
"""
|
||||
event, context = create_event(
|
||||
self.hs,
|
||||
room_id=self.room_id,
|
||||
type="m.test",
|
||||
sender=self.user_id,
|
||||
state_key="",
|
||||
event, context = self.get_success(
|
||||
create_event(
|
||||
self.hs,
|
||||
room_id=self.room_id,
|
||||
type="m.test",
|
||||
sender=self.user_id,
|
||||
state_key="",
|
||||
)
|
||||
)
|
||||
|
||||
self._check_serialize_deserialize(event, context)
|
||||
|
|
@ -65,13 +69,15 @@ class TestEventContext(unittest.HomeserverTestCase):
|
|||
"""Test that an EventContext for a state event (which replaces a
|
||||
previous entry) is the same after serialize/deserialize.
|
||||
"""
|
||||
event, context = create_event(
|
||||
self.hs,
|
||||
room_id=self.room_id,
|
||||
type="m.room.member",
|
||||
sender=self.user_id,
|
||||
state_key=self.user_id,
|
||||
content={"membership": "leave"},
|
||||
event, context = self.get_success(
|
||||
create_event(
|
||||
self.hs,
|
||||
room_id=self.room_id,
|
||||
type="m.room.member",
|
||||
sender=self.user_id,
|
||||
state_key=self.user_id,
|
||||
content={"membership": "leave"},
|
||||
)
|
||||
)
|
||||
|
||||
self._check_serialize_deserialize(event, context)
|
||||
|
|
|
|||
|
|
@ -119,7 +119,9 @@ class EventsStreamTestCase(BaseStreamTestCase):
|
|||
OTHER_USER = "@other_user:localhost"
|
||||
|
||||
# have the user join
|
||||
inject_member_event(self.hs, self.room_id, OTHER_USER, Membership.JOIN)
|
||||
self.get_success(
|
||||
inject_member_event(self.hs, self.room_id, OTHER_USER, Membership.JOIN)
|
||||
)
|
||||
|
||||
# Update existing power levels with mod at PL50
|
||||
pls = self.helper.get_state(
|
||||
|
|
@ -157,14 +159,16 @@ class EventsStreamTestCase(BaseStreamTestCase):
|
|||
# roll back all the state by de-modding the user
|
||||
prev_events = fork_point
|
||||
pls["users"][OTHER_USER] = 0
|
||||
pl_event = inject_event(
|
||||
self.hs,
|
||||
prev_event_ids=prev_events,
|
||||
type=EventTypes.PowerLevels,
|
||||
state_key="",
|
||||
sender=self.user_id,
|
||||
room_id=self.room_id,
|
||||
content=pls,
|
||||
pl_event = self.get_success(
|
||||
inject_event(
|
||||
self.hs,
|
||||
prev_event_ids=prev_events,
|
||||
type=EventTypes.PowerLevels,
|
||||
state_key="",
|
||||
sender=self.user_id,
|
||||
room_id=self.room_id,
|
||||
content=pls,
|
||||
)
|
||||
)
|
||||
|
||||
# one more bit of state that doesn't get rolled back
|
||||
|
|
@ -268,7 +272,9 @@ class EventsStreamTestCase(BaseStreamTestCase):
|
|||
|
||||
# have the users join
|
||||
for u in user_ids:
|
||||
inject_member_event(self.hs, self.room_id, u, Membership.JOIN)
|
||||
self.get_success(
|
||||
inject_member_event(self.hs, self.room_id, u, Membership.JOIN)
|
||||
)
|
||||
|
||||
# Update existing power levels with mod at PL50
|
||||
pls = self.helper.get_state(
|
||||
|
|
@ -306,14 +312,16 @@ class EventsStreamTestCase(BaseStreamTestCase):
|
|||
pl_events = []
|
||||
for u in user_ids:
|
||||
pls["users"][u] = 0
|
||||
e = inject_event(
|
||||
self.hs,
|
||||
prev_event_ids=prev_events,
|
||||
type=EventTypes.PowerLevels,
|
||||
state_key="",
|
||||
sender=self.user_id,
|
||||
room_id=self.room_id,
|
||||
content=pls,
|
||||
e = self.get_success(
|
||||
inject_event(
|
||||
self.hs,
|
||||
prev_event_ids=prev_events,
|
||||
type=EventTypes.PowerLevels,
|
||||
state_key="",
|
||||
sender=self.user_id,
|
||||
room_id=self.room_id,
|
||||
content=pls,
|
||||
)
|
||||
)
|
||||
prev_events = [e.event_id]
|
||||
pl_events.append(e)
|
||||
|
|
@ -434,13 +442,15 @@ class EventsStreamTestCase(BaseStreamTestCase):
|
|||
body = "event %i" % (self.event_count,)
|
||||
self.event_count += 1
|
||||
|
||||
return inject_event(
|
||||
self.hs,
|
||||
room_id=self.room_id,
|
||||
sender=sender,
|
||||
type="test_event",
|
||||
content={"body": body},
|
||||
**kwargs
|
||||
return self.get_success(
|
||||
inject_event(
|
||||
self.hs,
|
||||
room_id=self.room_id,
|
||||
sender=sender,
|
||||
type="test_event",
|
||||
content={"body": body},
|
||||
**kwargs
|
||||
)
|
||||
)
|
||||
|
||||
def _inject_state_event(
|
||||
|
|
@ -459,11 +469,13 @@ class EventsStreamTestCase(BaseStreamTestCase):
|
|||
if body is None:
|
||||
body = "state event %s" % (state_key,)
|
||||
|
||||
return inject_event(
|
||||
self.hs,
|
||||
room_id=self.room_id,
|
||||
sender=sender,
|
||||
type="test_state_event",
|
||||
state_key=state_key,
|
||||
content={"body": body},
|
||||
return self.get_success(
|
||||
inject_event(
|
||||
self.hs,
|
||||
room_id=self.room_id,
|
||||
sender=sender,
|
||||
type="test_state_event",
|
||||
state_key=state_key,
|
||||
content={"body": body},
|
||||
)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -118,18 +118,22 @@ class RoomMemberStoreTestCase(unittest.HomeserverTestCase):
|
|||
|
||||
def test_get_joined_users_from_context(self):
|
||||
room = self.helper.create_room_as(self.u_alice, tok=self.t_alice)
|
||||
bob_event = event_injection.inject_member_event(
|
||||
self.hs, room, self.u_bob, Membership.JOIN
|
||||
bob_event = self.get_success(
|
||||
event_injection.inject_member_event(
|
||||
self.hs, room, self.u_bob, Membership.JOIN
|
||||
)
|
||||
)
|
||||
|
||||
# first, create a regular event
|
||||
event, context = event_injection.create_event(
|
||||
self.hs,
|
||||
room_id=room,
|
||||
sender=self.u_alice,
|
||||
prev_event_ids=[bob_event.event_id],
|
||||
type="m.test.1",
|
||||
content={},
|
||||
event, context = self.get_success(
|
||||
event_injection.create_event(
|
||||
self.hs,
|
||||
room_id=room,
|
||||
sender=self.u_alice,
|
||||
prev_event_ids=[bob_event.event_id],
|
||||
type="m.test.1",
|
||||
content={},
|
||||
)
|
||||
)
|
||||
|
||||
users = self.get_success(
|
||||
|
|
@ -140,22 +144,26 @@ class RoomMemberStoreTestCase(unittest.HomeserverTestCase):
|
|||
# Regression test for #7376: create a state event whose key matches bob's
|
||||
# user_id, but which is *not* a membership event, and persist that; then check
|
||||
# that `get_joined_users_from_context` returns the correct users for the next event.
|
||||
non_member_event = event_injection.inject_event(
|
||||
self.hs,
|
||||
room_id=room,
|
||||
sender=self.u_bob,
|
||||
prev_event_ids=[bob_event.event_id],
|
||||
type="m.test.2",
|
||||
state_key=self.u_bob,
|
||||
content={},
|
||||
non_member_event = self.get_success(
|
||||
event_injection.inject_event(
|
||||
self.hs,
|
||||
room_id=room,
|
||||
sender=self.u_bob,
|
||||
prev_event_ids=[bob_event.event_id],
|
||||
type="m.test.2",
|
||||
state_key=self.u_bob,
|
||||
content={},
|
||||
)
|
||||
)
|
||||
event, context = event_injection.create_event(
|
||||
self.hs,
|
||||
room_id=room,
|
||||
sender=self.u_alice,
|
||||
prev_event_ids=[non_member_event.event_id],
|
||||
type="m.test.3",
|
||||
content={},
|
||||
event, context = self.get_success(
|
||||
event_injection.create_event(
|
||||
self.hs,
|
||||
room_id=room,
|
||||
sender=self.u_alice,
|
||||
prev_event_ids=[non_member_event.event_id],
|
||||
type="m.test.3",
|
||||
content={},
|
||||
)
|
||||
)
|
||||
users = self.get_success(
|
||||
self.store.get_joined_users_from_context(event, context)
|
||||
|
|
|
|||
|
|
@ -64,8 +64,8 @@ class StateStoreTestCase(tests.unittest.TestCase):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = yield self.event_creation_handler.create_new_client_event(
|
||||
builder
|
||||
event, context = yield defer.ensureDeferred(
|
||||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
|
||||
yield self.storage.persistence.persist_event(event, context)
|
||||
|
|
|
|||
|
|
@ -22,14 +22,12 @@ from synapse.events import EventBase
|
|||
from synapse.events.snapshot import EventContext
|
||||
from synapse.types import Collection
|
||||
|
||||
from tests.test_utils import get_awaitable_result
|
||||
|
||||
"""
|
||||
Utility functions for poking events into the storage of the server under test.
|
||||
"""
|
||||
|
||||
|
||||
def inject_member_event(
|
||||
async def inject_member_event(
|
||||
hs: synapse.server.HomeServer,
|
||||
room_id: str,
|
||||
sender: str,
|
||||
|
|
@ -46,7 +44,7 @@ def inject_member_event(
|
|||
if extra_content:
|
||||
content.update(extra_content)
|
||||
|
||||
return inject_event(
|
||||
return await inject_event(
|
||||
hs,
|
||||
room_id=room_id,
|
||||
type=EventTypes.Member,
|
||||
|
|
@ -57,7 +55,7 @@ def inject_member_event(
|
|||
)
|
||||
|
||||
|
||||
def inject_event(
|
||||
async def inject_event(
|
||||
hs: synapse.server.HomeServer,
|
||||
room_version: Optional[str] = None,
|
||||
prev_event_ids: Optional[Collection[str]] = None,
|
||||
|
|
@ -72,37 +70,27 @@ def inject_event(
|
|||
prev_event_ids: prev_events for the event. If not specified, will be looked up
|
||||
kwargs: fields for the event to be created
|
||||
"""
|
||||
test_reactor = hs.get_reactor()
|
||||
event, context = await create_event(hs, room_version, prev_event_ids, **kwargs)
|
||||
|
||||
event, context = create_event(hs, room_version, prev_event_ids, **kwargs)
|
||||
|
||||
d = hs.get_storage().persistence.persist_event(event, context)
|
||||
test_reactor.advance(0)
|
||||
get_awaitable_result(d)
|
||||
await hs.get_storage().persistence.persist_event(event, context)
|
||||
|
||||
return event
|
||||
|
||||
|
||||
def create_event(
|
||||
async def create_event(
|
||||
hs: synapse.server.HomeServer,
|
||||
room_version: Optional[str] = None,
|
||||
prev_event_ids: Optional[Collection[str]] = None,
|
||||
**kwargs
|
||||
) -> Tuple[EventBase, EventContext]:
|
||||
test_reactor = hs.get_reactor()
|
||||
|
||||
if room_version is None:
|
||||
d = hs.get_datastore().get_room_version_id(kwargs["room_id"])
|
||||
test_reactor.advance(0)
|
||||
room_version = get_awaitable_result(d)
|
||||
room_version = await hs.get_datastore().get_room_version_id(kwargs["room_id"])
|
||||
|
||||
builder = hs.get_event_builder_factory().for_room_version(
|
||||
KNOWN_ROOM_VERSIONS[room_version], kwargs
|
||||
)
|
||||
d = hs.get_event_creation_handler().create_new_client_event(
|
||||
event, context = await hs.get_event_creation_handler().create_new_client_event(
|
||||
builder, prev_event_ids=prev_event_ids
|
||||
)
|
||||
test_reactor.advance(0)
|
||||
event, context = get_awaitable_result(d)
|
||||
|
||||
return event, context
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ class FilterEventsForServerTestCase(tests.unittest.TestCase):
|
|||
#
|
||||
|
||||
# before we do that, we persist some other events to act as state.
|
||||
self.inject_visibility("@admin:hs", "joined")
|
||||
yield self.inject_visibility("@admin:hs", "joined")
|
||||
for i in range(0, 10):
|
||||
yield self.inject_room_member("@resident%i:hs" % i)
|
||||
|
||||
|
|
@ -137,8 +137,8 @@ class FilterEventsForServerTestCase(tests.unittest.TestCase):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = yield self.event_creation_handler.create_new_client_event(
|
||||
builder
|
||||
event, context = yield defer.ensureDeferred(
|
||||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
yield self.storage.persistence.persist_event(event, context)
|
||||
return event
|
||||
|
|
@ -158,8 +158,8 @@ class FilterEventsForServerTestCase(tests.unittest.TestCase):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = yield self.event_creation_handler.create_new_client_event(
|
||||
builder
|
||||
event, context = yield defer.ensureDeferred(
|
||||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
|
||||
yield self.storage.persistence.persist_event(event, context)
|
||||
|
|
@ -179,8 +179,8 @@ class FilterEventsForServerTestCase(tests.unittest.TestCase):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = yield self.event_creation_handler.create_new_client_event(
|
||||
builder
|
||||
event, context = yield defer.ensureDeferred(
|
||||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
|
||||
yield self.storage.persistence.persist_event(event, context)
|
||||
|
|
|
|||
|
|
@ -603,7 +603,9 @@ class HomeserverTestCase(TestCase):
|
|||
user: MXID of the user to inject the membership for.
|
||||
membership: The membership type.
|
||||
"""
|
||||
event_injection.inject_member_event(self.hs, room, user, membership)
|
||||
self.get_success(
|
||||
event_injection.inject_member_event(self.hs, room, user, membership)
|
||||
)
|
||||
|
||||
|
||||
class FederatingHomeserverTestCase(HomeserverTestCase):
|
||||
|
|
|
|||
|
|
@ -671,6 +671,8 @@ def create_room(hs, room_id, creator_id):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = yield event_creation_handler.create_new_client_event(builder)
|
||||
event, context = yield defer.ensureDeferred(
|
||||
event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
|
||||
yield persistence_store.persist_event(event, context)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue