mirror of
https://github.com/zed-industries/zed.git
synced 2025-02-06 02:37:21 +00:00
Check room invariants in Store::check_invariants
This commit is contained in:
parent
5ef342f8c4
commit
fa31c9659b
1 changed files with 52 additions and 0 deletions
|
@ -1030,6 +1030,45 @@ impl Store {
|
||||||
*user_id
|
*user_id
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(active_call) = state.active_call.as_ref() {
|
||||||
|
if let Some(active_call_connection_id) = active_call.connection_id {
|
||||||
|
assert!(
|
||||||
|
state.connection_ids.contains(&active_call_connection_id),
|
||||||
|
"call is active on a dead connection"
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
state.connection_ids.contains(&active_call_connection_id),
|
||||||
|
"call is active on a dead connection"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (room_id, room) in &self.rooms {
|
||||||
|
for pending_user_id in &room.pending_user_ids {
|
||||||
|
assert!(
|
||||||
|
self.connected_users
|
||||||
|
.contains_key(&UserId::from_proto(*pending_user_id)),
|
||||||
|
"call is active on a user that has disconnected"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
for participant in &room.participants {
|
||||||
|
assert!(
|
||||||
|
self.connections
|
||||||
|
.contains_key(&ConnectionId(participant.peer_id)),
|
||||||
|
"room contains participant that has disconnected"
|
||||||
|
);
|
||||||
|
|
||||||
|
for project_id in &participant.project_ids {
|
||||||
|
let project = &self.projects[&ProjectId::from_proto(*project_id)];
|
||||||
|
assert_eq!(
|
||||||
|
project.room_id, *room_id,
|
||||||
|
"project was shared on a different room"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (project_id, project) in &self.projects {
|
for (project_id, project) in &self.projects {
|
||||||
|
@ -1049,6 +1088,19 @@ impl Store {
|
||||||
.map(|guest| guest.replica_id)
|
.map(|guest| guest.replica_id)
|
||||||
.collect::<HashSet<_>>(),
|
.collect::<HashSet<_>>(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let room = &self.rooms[&project.room_id];
|
||||||
|
let room_participant = room
|
||||||
|
.participants
|
||||||
|
.iter()
|
||||||
|
.find(|participant| participant.peer_id == project.host_connection_id.0)
|
||||||
|
.unwrap();
|
||||||
|
assert!(
|
||||||
|
room_participant
|
||||||
|
.project_ids
|
||||||
|
.contains(&project_id.to_proto()),
|
||||||
|
"project was not shared in room"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (channel_id, channel) in &self.channels {
|
for (channel_id, channel) in &self.channels {
|
||||||
|
|
Loading…
Reference in a new issue