summary refs log tree commit diff
diff options
context:
space:
mode:
authorEric Eastwood <erice@element.io>2022-09-22 22:28:56 -0500
committerEric Eastwood <erice@element.io>2022-09-22 22:28:56 -0500
commit4fa8f0534486061f59f8e34f0ea581cca0833c4f (patch)
treea3b07b636d9a1a193d96108ea5e2dd97aa4c0498
parentBetter changelog (diff)
downloadsynapse-4fa8f0534486061f59f8e34f0ea581cca0833c4f.tar.xz
Add test to make sure we can actually clear entries just by room_id
-rw-r--r--tests/storage/databases/main/test_events_worker.py29
1 files changed, 28 insertions, 1 deletions
diff --git a/tests/storage/databases/main/test_events_worker.py b/tests/storage/databases/main/test_events_worker.py
index 47ec189684..32a798d74b 100644
--- a/tests/storage/databases/main/test_events_worker.py
+++ b/tests/storage/databases/main/test_events_worker.py
@@ -105,7 +105,7 @@ class HaveSeenEventsTestCase(unittest.HomeserverTestCase):
     def test_persisting_event_invalidates_cache(self):
         """
         Test to make sure that the `have_seen_event` cache
-        is invalided after we persist an event and returns
+        is invalidated after we persist an event and returns
         the updated value.
         """
         event, event_context = self.get_success(
@@ -150,6 +150,33 @@ class HaveSeenEventsTestCase(unittest.HomeserverTestCase):
             # That should result in a single db query to lookup
             self.assertEqual(ctx.get_resource_usage().db_txn_count, 1)
 
+    def test_invalidate_cache_by_room_id(self):
+        """
+        Test to make sure that all events associated with the given `(room_id,)`
+        are invalidated in the `have_seen_event` cache.
+        """
+        with LoggingContext(name="test") as ctx:
+            # Prime the cache with some values
+            res = self.get_success(
+                self.store.have_seen_events(self.room_id, self.event_ids)
+            )
+            self.assertEqual(res, set(self.event_ids))
+
+            # That should result in a single db query to lookup
+            self.assertEqual(ctx.get_resource_usage().db_txn_count, 1)
+
+        # Clear the cache with any events associated with the `room_id`
+        self.store.have_seen_event.invalidate((self.room_id,))
+
+        with LoggingContext(name="test") as ctx:
+            res = self.get_success(
+                self.store.have_seen_events(self.room_id, self.event_ids)
+            )
+            self.assertEqual(res, set(self.event_ids))
+
+            # Since we cleared the cache, it should result in another db query to lookup
+            self.assertEqual(ctx.get_resource_usage().db_txn_count, 1)
+
 
 class EventCacheTestCase(unittest.HomeserverTestCase):
     """Test that the various layers of event cache works."""