Merge pull request #5746 from matrix-org/erikj/test_bg_update_currnet_state
Add unit test for current state membership bg updatepull/5789/head
commit
63eb4a1b62
|
@ -0,0 +1 @@
|
||||||
|
Reduce database IO usage by optimising queries for current membership.
|
|
@ -20,7 +20,7 @@ from twisted.internet import defer
|
||||||
|
|
||||||
from synapse.api.constants import EventTypes, Membership
|
from synapse.api.constants import EventTypes, Membership
|
||||||
from synapse.api.room_versions import RoomVersions
|
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 import unittest
|
||||||
from tests.utils import create_room, setup_test_homeserver
|
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)
|
||||||
|
|
Loading…
Reference in New Issue