events: Rework the event enum hierarchy

This commit is contained in:
Jonas Platte
2022-04-04 14:19:52 +02:00
parent ca7af393d6
commit 7de3b4b649
35 changed files with 617 additions and 499 deletions

View File

@@ -18,7 +18,7 @@ use std::{
};
use criterion::{criterion_group, criterion_main, Criterion};
use event::OriginalStateEvent;
use event::PduEvent;
use js_int::{int, uint};
use maplit::{btreemap, hashmap, hashset};
use ruma_common::{
@@ -232,7 +232,7 @@ impl<E: Event> TestStore<E> {
}
}
impl TestStore<OriginalStateEvent> {
impl TestStore<PduEvent> {
#[allow(clippy::type_complexity)]
fn set_up(
&mut self,
@@ -372,7 +372,7 @@ fn to_pdu_event<S>(
content: Box<RawJsonValue>,
auth_events: &[S],
prev_events: &[S],
) -> Arc<OriginalStateEvent>
) -> Arc<PduEvent>
where
S: AsRef<str>,
{
@@ -384,7 +384,7 @@ where
let prev_events = prev_events.iter().map(AsRef::as_ref).map(event_id).collect::<Vec<_>>();
let state_key = state_key.map(ToOwned::to_owned);
Arc::new(OriginalStateEvent {
Arc::new(PduEvent {
event_id: id.try_into().unwrap(),
rest: Pdu::RoomV3Pdu(RoomV3Pdu {
room_id: room_id().to_owned(),
@@ -406,7 +406,7 @@ where
// all graphs start with these input events
#[allow(non_snake_case)]
fn INITIAL_EVENTS() -> HashMap<Box<EventId>, Arc<OriginalStateEvent>> {
fn INITIAL_EVENTS() -> HashMap<Box<EventId>, Arc<PduEvent>> {
vec![
to_pdu_event::<&EventId>(
"CREATE",
@@ -488,7 +488,7 @@ fn INITIAL_EVENTS() -> HashMap<Box<EventId>, Arc<OriginalStateEvent>> {
// all graphs start with these input events
#[allow(non_snake_case)]
fn BAN_STATE_SET() -> HashMap<Box<EventId>, Arc<OriginalStateEvent>> {
fn BAN_STATE_SET() -> HashMap<Box<EventId>, Arc<PduEvent>> {
vec![
to_pdu_event(
"PA",
@@ -541,7 +541,7 @@ mod event {
use serde::{Deserialize, Serialize};
use serde_json::value::RawValue as RawJsonValue;
impl Event for OriginalStateEvent {
impl Event for PduEvent {
type Id = Box<EventId>;
fn event_id(&self) -> &Self::Id {
@@ -631,7 +631,7 @@ mod event {
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct OriginalStateEvent {
pub struct PduEvent {
pub event_id: Box<EventId>,
#[serde(flatten)]
pub rest: Pdu,

View File

@@ -982,7 +982,7 @@ mod tests {
event_auth::valid_membership_change,
test_utils::{
alice, charlie, ella, event_id, member_content_ban, member_content_join, room_id,
to_pdu_event, OriginalStateEvent, INITIAL_EVENTS, INITIAL_EVENTS_CREATE_ROOM,
to_pdu_event, PduEvent, INITIAL_EVENTS, INITIAL_EVENTS_CREATE_ROOM,
},
Event, RoomVersion, StateMap,
};
@@ -1021,7 +1021,7 @@ mod tests {
&sender,
fetch_state(RoomEventType::RoomMember, sender.to_string()),
&requester,
None::<OriginalStateEvent>,
None::<PduEvent>,
fetch_state(RoomEventType::RoomPowerLevels, "".to_owned()),
fetch_state(RoomEventType::RoomJoinRules, "".to_owned()),
None,
@@ -1065,7 +1065,7 @@ mod tests {
&sender,
fetch_state(RoomEventType::RoomMember, sender.to_string()),
&requester,
None::<OriginalStateEvent>,
None::<PduEvent>,
fetch_state(RoomEventType::RoomPowerLevels, "".to_owned()),
fetch_state(RoomEventType::RoomJoinRules, "".to_owned()),
None,
@@ -1109,7 +1109,7 @@ mod tests {
&sender,
fetch_state(RoomEventType::RoomMember, sender.to_string()),
&requester,
None::<OriginalStateEvent>,
None::<PduEvent>,
fetch_state(RoomEventType::RoomPowerLevels, "".to_owned()),
fetch_state(RoomEventType::RoomJoinRules, "".to_owned()),
None,
@@ -1153,7 +1153,7 @@ mod tests {
&sender,
fetch_state(RoomEventType::RoomMember, sender.to_string()),
&requester,
None::<OriginalStateEvent>,
None::<PduEvent>,
fetch_state(RoomEventType::RoomPowerLevels, "".to_owned()),
fetch_state(RoomEventType::RoomJoinRules, "".to_owned()),
None,
@@ -1214,7 +1214,7 @@ mod tests {
&sender,
fetch_state(RoomEventType::RoomMember, sender.to_string()),
&requester,
None::<OriginalStateEvent>,
None::<PduEvent>,
fetch_state(RoomEventType::RoomPowerLevels, "".to_owned()),
fetch_state(RoomEventType::RoomJoinRules, "".to_owned()),
Some(&alice()),
@@ -1230,7 +1230,7 @@ mod tests {
&sender,
fetch_state(RoomEventType::RoomMember, sender.to_string()),
&requester,
None::<OriginalStateEvent>,
None::<PduEvent>,
fetch_state(RoomEventType::RoomPowerLevels, "".to_owned()),
fetch_state(RoomEventType::RoomJoinRules, "".to_owned()),
Some(&ella()),
@@ -1283,7 +1283,7 @@ mod tests {
&sender,
fetch_state(RoomEventType::RoomMember, sender.to_string()),
&requester,
None::<OriginalStateEvent>,
None::<PduEvent>,
fetch_state(RoomEventType::RoomPowerLevels, "".to_owned()),
fetch_state(RoomEventType::RoomJoinRules, "".to_owned()),
None,

View File

@@ -657,8 +657,7 @@ mod tests {
room_version::RoomVersion,
test_utils::{
alice, bob, charlie, do_check, ella, event_id, member_content_ban, member_content_join,
room_id, to_init_pdu_event, to_pdu_event, zara, OriginalStateEvent, TestStore,
INITIAL_EVENTS,
room_id, to_init_pdu_event, to_pdu_event, zara, PduEvent, TestStore, INITIAL_EVENTS,
},
Event, StateMap,
};
@@ -1043,7 +1042,7 @@ mod tests {
let _ =
tracing::subscriber::set_default(tracing_subscriber::fmt().with_test_writer().finish());
let mut store = TestStore::<OriginalStateEvent>(hashmap! {});
let mut store = TestStore::<PduEvent>(hashmap! {});
// build up the DAG
let (state_at_bob, state_at_charlie, expected) = store.set_up();
@@ -1209,7 +1208,7 @@ mod tests {
}
#[allow(non_snake_case)]
fn BAN_STATE_SET() -> HashMap<Box<EventId>, Arc<OriginalStateEvent>> {
fn BAN_STATE_SET() -> HashMap<Box<EventId>, Arc<PduEvent>> {
vec![
to_pdu_event(
"PA",
@@ -1254,7 +1253,7 @@ mod tests {
}
#[allow(non_snake_case)]
fn JOIN_RULE() -> HashMap<Box<EventId>, Arc<OriginalStateEvent>> {
fn JOIN_RULE() -> HashMap<Box<EventId>, Arc<PduEvent>> {
vec![
to_pdu_event(
"JR",

View File

@@ -29,12 +29,12 @@ use tracing::info;
use crate::{auth_types_for_event, Error, Event, Result, StateMap};
pub use event::OriginalStateEvent;
pub use event::PduEvent;
static SERVER_TIMESTAMP: AtomicU64 = AtomicU64::new(0);
pub fn do_check(
events: &[Arc<OriginalStateEvent>],
events: &[Arc<PduEvent>],
edges: Vec<Vec<Box<EventId>>>,
expected_state_ids: Vec<Box<EventId>>,
) {
@@ -77,7 +77,7 @@ pub fn do_check(
}
// event_id -> OriginalStateEvent
let mut event_map: HashMap<Box<EventId>, Arc<OriginalStateEvent>> = HashMap::new();
let mut event_map: HashMap<Box<EventId>, Arc<PduEvent>> = HashMap::new();
// event_id -> StateMap<Box<EventId>>
let mut state_at_event: HashMap<Box<EventId>, StateMap<Box<EventId>>> = HashMap::new();
@@ -245,7 +245,7 @@ impl<E: Event> TestStore<E> {
// A StateStore implementation for testing
#[allow(clippy::type_complexity)]
impl TestStore<OriginalStateEvent> {
impl TestStore<PduEvent> {
pub fn set_up(
&mut self,
) -> (StateMap<Box<EventId>>, StateMap<Box<EventId>>, StateMap<Box<EventId>>) {
@@ -387,12 +387,12 @@ pub fn to_init_pdu_event(
ev_type: RoomEventType,
state_key: Option<&str>,
content: Box<RawJsonValue>,
) -> Arc<OriginalStateEvent> {
) -> Arc<PduEvent> {
let ts = SERVER_TIMESTAMP.fetch_add(1, SeqCst);
let id = if id.contains('$') { id.to_owned() } else { format!("${}:foo", id) };
let state_key = state_key.map(ToOwned::to_owned);
Arc::new(OriginalStateEvent {
Arc::new(PduEvent {
event_id: id.try_into().unwrap(),
rest: Pdu::RoomV3Pdu(RoomV3Pdu {
room_id: room_id().to_owned(),
@@ -420,7 +420,7 @@ pub fn to_pdu_event<S>(
content: Box<RawJsonValue>,
auth_events: &[S],
prev_events: &[S],
) -> Arc<OriginalStateEvent>
) -> Arc<PduEvent>
where
S: AsRef<str>,
{
@@ -430,7 +430,7 @@ where
let prev_events = prev_events.iter().map(AsRef::as_ref).map(event_id).collect::<Vec<_>>();
let state_key = state_key.map(ToOwned::to_owned);
Arc::new(OriginalStateEvent {
Arc::new(PduEvent {
event_id: id.try_into().unwrap(),
rest: Pdu::RoomV3Pdu(RoomV3Pdu {
room_id: room_id().to_owned(),
@@ -452,7 +452,7 @@ where
// all graphs start with these input events
#[allow(non_snake_case)]
pub fn INITIAL_EVENTS() -> HashMap<Box<EventId>, Arc<OriginalStateEvent>> {
pub fn INITIAL_EVENTS() -> HashMap<Box<EventId>, Arc<PduEvent>> {
vec![
to_pdu_event::<&EventId>(
"CREATE",
@@ -534,7 +534,7 @@ pub fn INITIAL_EVENTS() -> HashMap<Box<EventId>, Arc<OriginalStateEvent>> {
// all graphs start with these input events
#[allow(non_snake_case)]
pub fn INITIAL_EVENTS_CREATE_ROOM() -> HashMap<Box<EventId>, Arc<OriginalStateEvent>> {
pub fn INITIAL_EVENTS_CREATE_ROOM() -> HashMap<Box<EventId>, Arc<PduEvent>> {
vec![to_pdu_event::<&EventId>(
"CREATE",
alice(),
@@ -567,7 +567,7 @@ pub mod event {
use crate::Event;
impl Event for OriginalStateEvent {
impl Event for PduEvent {
type Id = Box<EventId>;
fn event_id(&self) -> &Self::Id {
@@ -658,20 +658,9 @@ pub mod event {
#[derive(Clone, Debug, Deserialize, Serialize)]
#[allow(clippy::exhaustive_structs)]
pub struct OriginalStateEvent {
pub struct PduEvent {
pub event_id: Box<EventId>,
#[serde(flatten)]
pub rest: Pdu,
}
//impl OriginalStateEvent {
// pub fn state_key(&self) -> &str {
// match &self.rest {
// Pdu::RoomV1Pdu(ev) => ev.state_key.as_ref().unwrap(),
// Pdu::RoomV3Pdu(ev) => ev.state_key.as_ref().unwrap(),
// #[cfg(not(feature = "unstable-exhaustive-types"))]
// _ => unreachable!("new PDU version"),
// }
// }
//}
}