mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-12-10 04:52:06 -05:00
Convert storage layer to async/await. (#7963)
This commit is contained in:
parent
e866e3b896
commit
3345c166a4
10 changed files with 210 additions and 185 deletions
|
|
@ -13,6 +13,8 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from twisted.internet import defer
|
||||
|
||||
from synapse.rest.client.v1 import room
|
||||
|
||||
from tests.unittest import HomeserverTestCase
|
||||
|
|
@ -49,7 +51,9 @@ class PurgeTests(HomeserverTestCase):
|
|||
event = self.successResultOf(event)
|
||||
|
||||
# Purge everything before this topological token
|
||||
purge = storage.purge_events.purge_history(self.room_id, event, True)
|
||||
purge = defer.ensureDeferred(
|
||||
storage.purge_events.purge_history(self.room_id, event, True)
|
||||
)
|
||||
self.pump()
|
||||
self.assertEqual(self.successResultOf(purge), None)
|
||||
|
||||
|
|
@ -88,7 +92,7 @@ class PurgeTests(HomeserverTestCase):
|
|||
)
|
||||
|
||||
# Purge everything before this topological token
|
||||
purge = storage.purge_history(self.room_id, event, True)
|
||||
purge = defer.ensureDeferred(storage.purge_history(self.room_id, event, True))
|
||||
self.pump()
|
||||
f = self.failureResultOf(purge)
|
||||
self.assertIn("greater than forward", f.value.args[0])
|
||||
|
|
|
|||
|
|
@ -97,8 +97,10 @@ class RoomEventsStoreTestCase(unittest.TestCase):
|
|||
|
||||
@defer.inlineCallbacks
|
||||
def inject_room_event(self, **kwargs):
|
||||
yield self.storage.persistence.persist_event(
|
||||
self.event_factory.create_event(room_id=self.room.to_string(), **kwargs)
|
||||
yield defer.ensureDeferred(
|
||||
self.storage.persistence.persist_event(
|
||||
self.event_factory.create_event(room_id=self.room.to_string(), **kwargs)
|
||||
)
|
||||
)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
|
|
|
|||
|
|
@ -68,7 +68,9 @@ class StateStoreTestCase(tests.unittest.TestCase):
|
|||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
|
||||
yield self.storage.persistence.persist_event(event, context)
|
||||
yield defer.ensureDeferred(
|
||||
self.storage.persistence.persist_event(event, context)
|
||||
)
|
||||
|
||||
return event
|
||||
|
||||
|
|
@ -87,8 +89,8 @@ class StateStoreTestCase(tests.unittest.TestCase):
|
|||
self.room, self.u_alice, EventTypes.Name, "", {"name": "test room"}
|
||||
)
|
||||
|
||||
state_group_map = yield self.storage.state.get_state_groups_ids(
|
||||
self.room, [e2.event_id]
|
||||
state_group_map = yield defer.ensureDeferred(
|
||||
self.storage.state.get_state_groups_ids(self.room, [e2.event_id])
|
||||
)
|
||||
self.assertEqual(len(state_group_map), 1)
|
||||
state_map = list(state_group_map.values())[0]
|
||||
|
|
@ -106,8 +108,8 @@ class StateStoreTestCase(tests.unittest.TestCase):
|
|||
self.room, self.u_alice, EventTypes.Name, "", {"name": "test room"}
|
||||
)
|
||||
|
||||
state_group_map = yield self.storage.state.get_state_groups(
|
||||
self.room, [e2.event_id]
|
||||
state_group_map = yield defer.ensureDeferred(
|
||||
self.storage.state.get_state_groups(self.room, [e2.event_id])
|
||||
)
|
||||
self.assertEqual(len(state_group_map), 1)
|
||||
state_list = list(state_group_map.values())[0]
|
||||
|
|
@ -148,7 +150,9 @@ class StateStoreTestCase(tests.unittest.TestCase):
|
|||
)
|
||||
|
||||
# check we get the full state as of the final event
|
||||
state = yield self.storage.state.get_state_for_event(e5.event_id)
|
||||
state = yield defer.ensureDeferred(
|
||||
self.storage.state.get_state_for_event(e5.event_id)
|
||||
)
|
||||
|
||||
self.assertIsNotNone(e4)
|
||||
|
||||
|
|
@ -164,22 +168,28 @@ class StateStoreTestCase(tests.unittest.TestCase):
|
|||
)
|
||||
|
||||
# check we can filter to the m.room.name event (with a '' state key)
|
||||
state = yield self.storage.state.get_state_for_event(
|
||||
e5.event_id, StateFilter.from_types([(EventTypes.Name, "")])
|
||||
state = yield defer.ensureDeferred(
|
||||
self.storage.state.get_state_for_event(
|
||||
e5.event_id, StateFilter.from_types([(EventTypes.Name, "")])
|
||||
)
|
||||
)
|
||||
|
||||
self.assertStateMapEqual({(e2.type, e2.state_key): e2}, state)
|
||||
|
||||
# check we can filter to the m.room.name event (with a wildcard None state key)
|
||||
state = yield self.storage.state.get_state_for_event(
|
||||
e5.event_id, StateFilter.from_types([(EventTypes.Name, None)])
|
||||
state = yield defer.ensureDeferred(
|
||||
self.storage.state.get_state_for_event(
|
||||
e5.event_id, StateFilter.from_types([(EventTypes.Name, None)])
|
||||
)
|
||||
)
|
||||
|
||||
self.assertStateMapEqual({(e2.type, e2.state_key): e2}, state)
|
||||
|
||||
# check we can grab the m.room.member events (with a wildcard None state key)
|
||||
state = yield self.storage.state.get_state_for_event(
|
||||
e5.event_id, StateFilter.from_types([(EventTypes.Member, None)])
|
||||
state = yield defer.ensureDeferred(
|
||||
self.storage.state.get_state_for_event(
|
||||
e5.event_id, StateFilter.from_types([(EventTypes.Member, None)])
|
||||
)
|
||||
)
|
||||
|
||||
self.assertStateMapEqual(
|
||||
|
|
@ -188,12 +198,14 @@ class StateStoreTestCase(tests.unittest.TestCase):
|
|||
|
||||
# check we can grab a specific room member without filtering out the
|
||||
# other event types
|
||||
state = yield self.storage.state.get_state_for_event(
|
||||
e5.event_id,
|
||||
state_filter=StateFilter(
|
||||
types={EventTypes.Member: {self.u_alice.to_string()}},
|
||||
include_others=True,
|
||||
),
|
||||
state = yield defer.ensureDeferred(
|
||||
self.storage.state.get_state_for_event(
|
||||
e5.event_id,
|
||||
state_filter=StateFilter(
|
||||
types={EventTypes.Member: {self.u_alice.to_string()}},
|
||||
include_others=True,
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
self.assertStateMapEqual(
|
||||
|
|
@ -206,11 +218,13 @@ class StateStoreTestCase(tests.unittest.TestCase):
|
|||
)
|
||||
|
||||
# check that we can grab everything except members
|
||||
state = yield self.storage.state.get_state_for_event(
|
||||
e5.event_id,
|
||||
state_filter=StateFilter(
|
||||
types={EventTypes.Member: set()}, include_others=True
|
||||
),
|
||||
state = yield defer.ensureDeferred(
|
||||
self.storage.state.get_state_for_event(
|
||||
e5.event_id,
|
||||
state_filter=StateFilter(
|
||||
types={EventTypes.Member: set()}, include_others=True
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
self.assertStateMapEqual(
|
||||
|
|
@ -222,8 +236,8 @@ class StateStoreTestCase(tests.unittest.TestCase):
|
|||
#######################################################
|
||||
|
||||
room_id = self.room.to_string()
|
||||
group_ids = yield self.storage.state.get_state_groups_ids(
|
||||
room_id, [e5.event_id]
|
||||
group_ids = yield defer.ensureDeferred(
|
||||
self.storage.state.get_state_groups_ids(room_id, [e5.event_id])
|
||||
)
|
||||
group = list(group_ids.keys())[0]
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ class FilterEventsForServerTestCase(tests.unittest.TestCase):
|
|||
self.store = self.hs.get_datastore()
|
||||
self.storage = self.hs.get_storage()
|
||||
|
||||
yield create_room(self.hs, TEST_ROOM_ID, "@someone:ROOM")
|
||||
yield defer.ensureDeferred(create_room(self.hs, TEST_ROOM_ID, "@someone:ROOM"))
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_filtering(self):
|
||||
|
|
@ -140,7 +140,9 @@ class FilterEventsForServerTestCase(tests.unittest.TestCase):
|
|||
event, context = yield defer.ensureDeferred(
|
||||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
yield self.storage.persistence.persist_event(event, context)
|
||||
yield defer.ensureDeferred(
|
||||
self.storage.persistence.persist_event(event, context)
|
||||
)
|
||||
return event
|
||||
|
||||
@defer.inlineCallbacks
|
||||
|
|
@ -162,7 +164,9 @@ class FilterEventsForServerTestCase(tests.unittest.TestCase):
|
|||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
|
||||
yield self.storage.persistence.persist_event(event, context)
|
||||
yield defer.ensureDeferred(
|
||||
self.storage.persistence.persist_event(event, context)
|
||||
)
|
||||
return event
|
||||
|
||||
@defer.inlineCallbacks
|
||||
|
|
@ -183,7 +187,9 @@ class FilterEventsForServerTestCase(tests.unittest.TestCase):
|
|||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
|
||||
yield self.storage.persistence.persist_event(event, context)
|
||||
yield defer.ensureDeferred(
|
||||
self.storage.persistence.persist_event(event, context)
|
||||
)
|
||||
return event
|
||||
|
||||
@defer.inlineCallbacks
|
||||
|
|
|
|||
|
|
@ -638,14 +638,8 @@ class DeferredMockCallable(object):
|
|||
)
|
||||
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def create_room(hs, room_id, creator_id):
|
||||
async def create_room(hs, room_id: str, creator_id: str):
|
||||
"""Creates and persist a creation event for the given room
|
||||
|
||||
Args:
|
||||
hs
|
||||
room_id (str)
|
||||
creator_id (str)
|
||||
"""
|
||||
|
||||
persistence_store = hs.get_storage().persistence
|
||||
|
|
@ -653,7 +647,7 @@ def create_room(hs, room_id, creator_id):
|
|||
event_builder_factory = hs.get_event_builder_factory()
|
||||
event_creation_handler = hs.get_event_creation_handler()
|
||||
|
||||
yield store.store_room(
|
||||
await store.store_room(
|
||||
room_id=room_id,
|
||||
room_creator_user_id=creator_id,
|
||||
is_public=False,
|
||||
|
|
@ -671,8 +665,6 @@ def create_room(hs, room_id, creator_id):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = yield defer.ensureDeferred(
|
||||
event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
event, context = await event_creation_handler.create_new_client_event(builder)
|
||||
|
||||
yield persistence_store.persist_event(event, context)
|
||||
await persistence_store.persist_event(event, context)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue