Преглед на файлове

Merge pull request #5746 from matrix-org/erikj/test_bg_update_currnet_state

Add unit test for current state membership bg update
tags/v1.3.0rc1
Erik Johnston преди 4 години
committed by GitHub
родител
ревизия
63eb4a1b62
No known key found for this signature in database GPG ключ ID: 4AEE18F83AFDEB23
променени са 2 файла, в които са добавени 37 реда и са изтрити 1 реда
  1. +1
    -0
      changelog.d/5746.misc
  2. +36
    -1
      tests/storage/test_roommember.py

+ 1
- 0
changelog.d/5746.misc Целия файл

@@ -0,0 +1 @@
Reduce database IO usage by optimising queries for current membership.

+ 36
- 1
tests/storage/test_roommember.py Целия файл

@@ -20,7 +20,7 @@ from twisted.internet import defer

from synapse.api.constants import EventTypes, Membership
from synapse.api.room_versions import RoomVersions
from synapse.types import RoomID, UserID
from synapse.types import Requester, RoomID, UserID

from tests import unittest
from tests.utils import create_room, setup_test_homeserver
@@ -84,3 +84,38 @@ class RoomMemberStoreTestCase(unittest.TestCase):
)
],
)


class CurrentStateMembershipUpdateTestCase(unittest.HomeserverTestCase):
def prepare(self, reactor, clock, homeserver):
self.store = homeserver.get_datastore()
self.room_creator = homeserver.get_room_creation_handler()

def test_can_rerun_update(self):
# First make sure we have completed all updates.
while not self.get_success(self.store.has_completed_background_updates()):
self.get_success(self.store.do_next_background_update(100), by=0.1)

# Now let's create a room, which will insert a membership
user = UserID("alice", "test")
requester = Requester(user, None, False, None, None)
self.get_success(self.room_creator.create_room(requester, {}))

# Register the background update to run again.
self.get_success(
self.store._simple_insert(
table="background_updates",
values={
"update_name": "current_state_events_membership",
"progress_json": "{}",
"depends_on": None,
},
)
)

# ... and tell the DataStore that it hasn't finished all updates yet
self.store._all_done = False

# Now let's actually drive the updates to completion
while not self.get_success(self.store.has_completed_background_updates()):
self.get_success(self.store.do_next_background_update(100), by=0.1)

Зареждане…
Отказ
Запис