mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-11 18:40:02 -04:00
Derive current_state_events from state groups
This commit is contained in:
parent
97efe99ae9
commit
09eb08f910
4 changed files with 138 additions and 99 deletions
|
@ -60,7 +60,7 @@ class SlavedEventStoreTestCase(BaseSlavedStoreTestCase):
|
|||
|
||||
@defer.inlineCallbacks
|
||||
def test_room_members(self):
|
||||
create = yield self.persist(type="m.room.create", key="", creator=USER_ID)
|
||||
yield self.persist(type="m.room.create", key="", creator=USER_ID)
|
||||
yield self.replicate()
|
||||
yield self.check("get_rooms_for_user", (USER_ID,), [])
|
||||
yield self.check("get_users_in_room", (ROOM_ID,), [])
|
||||
|
@ -95,15 +95,11 @@ class SlavedEventStoreTestCase(BaseSlavedStoreTestCase):
|
|||
)])
|
||||
yield self.check("get_users_in_room", (ROOM_ID,), [USER_ID_2])
|
||||
|
||||
# Join the room clobbering the state.
|
||||
# This should remove any evidence of the other user being in the room.
|
||||
yield self.persist(
|
||||
type="m.room.member", key=USER_ID, membership="join",
|
||||
reset_state=[create]
|
||||
)
|
||||
yield self.replicate()
|
||||
yield self.check("get_users_in_room", (ROOM_ID,), [USER_ID])
|
||||
yield self.check("get_rooms_for_user", (USER_ID_2,), [])
|
||||
yield self.check("get_users_in_room", (ROOM_ID,), [USER_ID_2, USER_ID])
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_get_latest_event_ids_in_room(self):
|
||||
|
@ -125,7 +121,7 @@ class SlavedEventStoreTestCase(BaseSlavedStoreTestCase):
|
|||
@defer.inlineCallbacks
|
||||
def test_get_current_state(self):
|
||||
# Create the room.
|
||||
create = yield self.persist(type="m.room.create", key="", creator=USER_ID)
|
||||
yield self.persist(type="m.room.create", key="", creator=USER_ID)
|
||||
yield self.replicate()
|
||||
yield self.check(
|
||||
"get_current_state_for_key", (ROOM_ID, "m.room.member", USER_ID), []
|
||||
|
@ -151,22 +147,6 @@ class SlavedEventStoreTestCase(BaseSlavedStoreTestCase):
|
|||
[join2]
|
||||
)
|
||||
|
||||
# Leave the room, then rejoin the room clobbering state.
|
||||
yield self.persist(type="m.room.member", key=USER_ID, membership="leave")
|
||||
join3 = yield self.persist(
|
||||
type="m.room.member", key=USER_ID, membership="join",
|
||||
reset_state=[create]
|
||||
)
|
||||
yield self.replicate()
|
||||
yield self.check(
|
||||
"get_current_state_for_key", (ROOM_ID, "m.room.member", USER_ID_2),
|
||||
[]
|
||||
)
|
||||
yield self.check(
|
||||
"get_current_state_for_key", (ROOM_ID, "m.room.member", USER_ID),
|
||||
[join3]
|
||||
)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_redactions(self):
|
||||
yield self.persist(type="m.room.create", key="", creator=USER_ID)
|
||||
|
@ -283,6 +263,12 @@ class SlavedEventStoreTestCase(BaseSlavedStoreTestCase):
|
|||
if depth is None:
|
||||
depth = self.event_id
|
||||
|
||||
if not prev_events:
|
||||
latest_event_ids = yield self.master_store.get_latest_event_ids_in_room(
|
||||
room_id
|
||||
)
|
||||
prev_events = [(ev_id, {}) for ev_id in latest_event_ids]
|
||||
|
||||
event_dict = {
|
||||
"sender": sender,
|
||||
"type": type,
|
||||
|
@ -309,12 +295,15 @@ class SlavedEventStoreTestCase(BaseSlavedStoreTestCase):
|
|||
state_ids = {
|
||||
key: e.event_id for key, e in state.items()
|
||||
}
|
||||
context = EventContext()
|
||||
context.current_state_ids = state_ids
|
||||
context.prev_state_ids = state_ids
|
||||
elif not backfill:
|
||||
state_handler = self.hs.get_state_handler()
|
||||
context = yield state_handler.compute_event_context(event)
|
||||
else:
|
||||
state_ids = None
|
||||
context = EventContext()
|
||||
|
||||
context = EventContext()
|
||||
context.current_state_ids = state_ids
|
||||
context.prev_state_ids = state_ids
|
||||
context.push_actions = push_actions
|
||||
|
||||
ordering = None
|
||||
|
@ -324,7 +313,7 @@ class SlavedEventStoreTestCase(BaseSlavedStoreTestCase):
|
|||
)
|
||||
else:
|
||||
ordering, _ = yield self.master_store.persist_event(
|
||||
event, context, current_state=reset_state
|
||||
event, context,
|
||||
)
|
||||
|
||||
if ordering:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue