mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-01 08:56:04 -04:00
Expose statistics on extrems to prometheus (#5384)
This commit is contained in:
parent
09e9a26b71
commit
6312d6cc7c
7 changed files with 331 additions and 114 deletions
|
@ -15,7 +15,6 @@
|
|||
|
||||
import os.path
|
||||
|
||||
from synapse.api.constants import EventTypes
|
||||
from synapse.storage import prepare_database
|
||||
from synapse.types import Requester, UserID
|
||||
|
||||
|
@ -23,17 +22,12 @@ from tests.unittest import HomeserverTestCase
|
|||
|
||||
|
||||
class CleanupExtremBackgroundUpdateStoreTestCase(HomeserverTestCase):
|
||||
"""Test the background update to clean forward extremities table.
|
||||
"""
|
||||
def make_homeserver(self, reactor, clock):
|
||||
# Hack until we understand why test_forked_graph_cleanup fails with v4
|
||||
config = self.default_config()
|
||||
config['default_room_version'] = '1'
|
||||
return self.setup_test_homeserver(config=config)
|
||||
Test the background update to clean forward extremities table.
|
||||
"""
|
||||
|
||||
def prepare(self, reactor, clock, homeserver):
|
||||
self.store = homeserver.get_datastore()
|
||||
self.event_creator = homeserver.get_event_creation_handler()
|
||||
self.room_creator = homeserver.get_room_creation_handler()
|
||||
|
||||
# Create a test user and room
|
||||
|
@ -42,56 +36,6 @@ class CleanupExtremBackgroundUpdateStoreTestCase(HomeserverTestCase):
|
|||
info = self.get_success(self.room_creator.create_room(self.requester, {}))
|
||||
self.room_id = info["room_id"]
|
||||
|
||||
def create_and_send_event(self, soft_failed=False, prev_event_ids=None):
|
||||
"""Create and send an event.
|
||||
|
||||
Args:
|
||||
soft_failed (bool): Whether to create a soft failed event or not
|
||||
prev_event_ids (list[str]|None): Explicitly set the prev events,
|
||||
or if None just use the default
|
||||
|
||||
Returns:
|
||||
str: The new event's ID.
|
||||
"""
|
||||
prev_events_and_hashes = None
|
||||
if prev_event_ids:
|
||||
prev_events_and_hashes = [[p, {}, 0] for p in prev_event_ids]
|
||||
|
||||
event, context = self.get_success(
|
||||
self.event_creator.create_event(
|
||||
self.requester,
|
||||
{
|
||||
"type": EventTypes.Message,
|
||||
"room_id": self.room_id,
|
||||
"sender": self.user.to_string(),
|
||||
"content": {"body": "", "msgtype": "m.text"},
|
||||
},
|
||||
prev_events_and_hashes=prev_events_and_hashes,
|
||||
)
|
||||
)
|
||||
|
||||
if soft_failed:
|
||||
event.internal_metadata.soft_failed = True
|
||||
|
||||
self.get_success(
|
||||
self.event_creator.send_nonmember_event(self.requester, event, context)
|
||||
)
|
||||
|
||||
return event.event_id
|
||||
|
||||
def add_extremity(self, event_id):
|
||||
"""Add the given event as an extremity to the room.
|
||||
"""
|
||||
self.get_success(
|
||||
self.store._simple_insert(
|
||||
table="event_forward_extremities",
|
||||
values={"room_id": self.room_id, "event_id": event_id},
|
||||
desc="test_add_extremity",
|
||||
)
|
||||
)
|
||||
|
||||
self.store.get_latest_event_ids_in_room.invalidate((self.room_id,))
|
||||
|
||||
def run_background_update(self):
|
||||
"""Re run the background update to clean up the extremities.
|
||||
"""
|
||||
|
@ -131,10 +75,16 @@ class CleanupExtremBackgroundUpdateStoreTestCase(HomeserverTestCase):
|
|||
"""
|
||||
|
||||
# Create the room graph
|
||||
event_id_1 = self.create_and_send_event()
|
||||
event_id_2 = self.create_and_send_event(True, [event_id_1])
|
||||
event_id_3 = self.create_and_send_event(True, [event_id_2])
|
||||
event_id_4 = self.create_and_send_event(False, [event_id_3])
|
||||
event_id_1 = self.create_and_send_event(self.room_id, self.user)
|
||||
event_id_2 = self.create_and_send_event(
|
||||
self.room_id, self.user, True, [event_id_1]
|
||||
)
|
||||
event_id_3 = self.create_and_send_event(
|
||||
self.room_id, self.user, True, [event_id_2]
|
||||
)
|
||||
event_id_4 = self.create_and_send_event(
|
||||
self.room_id, self.user, False, [event_id_3]
|
||||
)
|
||||
|
||||
# Check the latest events are as expected
|
||||
latest_event_ids = self.get_success(
|
||||
|
@ -154,12 +104,16 @@ class CleanupExtremBackgroundUpdateStoreTestCase(HomeserverTestCase):
|
|||
Where SF* are soft failed, and with extremities of A and B
|
||||
"""
|
||||
# Create the room graph
|
||||
event_id_a = self.create_and_send_event()
|
||||
event_id_sf1 = self.create_and_send_event(True, [event_id_a])
|
||||
event_id_b = self.create_and_send_event(False, [event_id_sf1])
|
||||
event_id_a = self.create_and_send_event(self.room_id, self.user)
|
||||
event_id_sf1 = self.create_and_send_event(
|
||||
self.room_id, self.user, True, [event_id_a]
|
||||
)
|
||||
event_id_b = self.create_and_send_event(
|
||||
self.room_id, self.user, False, [event_id_sf1]
|
||||
)
|
||||
|
||||
# Add the new extremity and check the latest events are as expected
|
||||
self.add_extremity(event_id_a)
|
||||
self.add_extremity(self.room_id, event_id_a)
|
||||
|
||||
latest_event_ids = self.get_success(
|
||||
self.store.get_latest_event_ids_in_room(self.room_id)
|
||||
|
@ -185,13 +139,19 @@ class CleanupExtremBackgroundUpdateStoreTestCase(HomeserverTestCase):
|
|||
Where SF* are soft failed, and with extremities of A and B
|
||||
"""
|
||||
# Create the room graph
|
||||
event_id_a = self.create_and_send_event()
|
||||
event_id_sf1 = self.create_and_send_event(True, [event_id_a])
|
||||
event_id_sf2 = self.create_and_send_event(True, [event_id_sf1])
|
||||
event_id_b = self.create_and_send_event(False, [event_id_sf2])
|
||||
event_id_a = self.create_and_send_event(self.room_id, self.user)
|
||||
event_id_sf1 = self.create_and_send_event(
|
||||
self.room_id, self.user, True, [event_id_a]
|
||||
)
|
||||
event_id_sf2 = self.create_and_send_event(
|
||||
self.room_id, self.user, True, [event_id_sf1]
|
||||
)
|
||||
event_id_b = self.create_and_send_event(
|
||||
self.room_id, self.user, False, [event_id_sf2]
|
||||
)
|
||||
|
||||
# Add the new extremity and check the latest events are as expected
|
||||
self.add_extremity(event_id_a)
|
||||
self.add_extremity(self.room_id, event_id_a)
|
||||
|
||||
latest_event_ids = self.get_success(
|
||||
self.store.get_latest_event_ids_in_room(self.room_id)
|
||||
|
@ -227,16 +187,26 @@ class CleanupExtremBackgroundUpdateStoreTestCase(HomeserverTestCase):
|
|||
"""
|
||||
|
||||
# Create the room graph
|
||||
event_id_a = self.create_and_send_event()
|
||||
event_id_b = self.create_and_send_event()
|
||||
event_id_sf1 = self.create_and_send_event(True, [event_id_a])
|
||||
event_id_sf2 = self.create_and_send_event(True, [event_id_a, event_id_b])
|
||||
event_id_sf3 = self.create_and_send_event(True, [event_id_sf1])
|
||||
self.create_and_send_event(True, [event_id_sf2, event_id_sf3]) # SF4
|
||||
event_id_c = self.create_and_send_event(False, [event_id_sf3])
|
||||
event_id_a = self.create_and_send_event(self.room_id, self.user)
|
||||
event_id_b = self.create_and_send_event(self.room_id, self.user)
|
||||
event_id_sf1 = self.create_and_send_event(
|
||||
self.room_id, self.user, True, [event_id_a]
|
||||
)
|
||||
event_id_sf2 = self.create_and_send_event(
|
||||
self.room_id, self.user, True, [event_id_a, event_id_b]
|
||||
)
|
||||
event_id_sf3 = self.create_and_send_event(
|
||||
self.room_id, self.user, True, [event_id_sf1]
|
||||
)
|
||||
self.create_and_send_event(
|
||||
self.room_id, self.user, True, [event_id_sf2, event_id_sf3]
|
||||
) # SF4
|
||||
event_id_c = self.create_and_send_event(
|
||||
self.room_id, self.user, False, [event_id_sf3]
|
||||
)
|
||||
|
||||
# Add the new extremity and check the latest events are as expected
|
||||
self.add_extremity(event_id_a)
|
||||
self.add_extremity(self.room_id, event_id_a)
|
||||
|
||||
latest_event_ids = self.get_success(
|
||||
self.store.get_latest_event_ids_in_room(self.room_id)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue