Broadcast, and FIFO are currently functional.

This commit is contained in:
Micheal Smith
2025-11-14 05:06:57 -06:00
parent 8ec4f2860c
commit 70de039610
8 changed files with 642 additions and 131 deletions

View File

@@ -65,7 +65,7 @@ async fn test_client_connects_and_receives_event() {
tokio::time::sleep(Duration::from_millis(50)).await;
// Broadcast an event
let event = Event::new("test message");
let event = Event::new("test_user", "test message");
manager.broadcast(&event).await.unwrap();
// Connect as a client
@@ -90,7 +90,7 @@ async fn test_client_receives_event_history() {
// Broadcast events BEFORE starting the listener
for i in 0..5 {
let event = Event::new(format!("historical event {}", i));
let event = Event::new("test_user", format!("historical event {}", i));
manager.broadcast(&event).await.unwrap();
}
@@ -142,7 +142,7 @@ async fn test_multiple_clients_receive_same_events() {
let mut reader3 = BufReader::new(stream3);
// Broadcast a new event
let event = Event::new("broadcast to all");
let event = Event::new("test_user", "broadcast to all");
manager.broadcast(&event).await.unwrap();
// All clients should receive the event
@@ -191,7 +191,7 @@ async fn test_late_joiner_receives_full_history() {
// Broadcast several events
for i in 0..10 {
let event = Event::new(format!("event {}", i));
let event = Event::new("test_user", format!("event {}", i));
manager.broadcast(&event).await.unwrap();
}
@@ -234,7 +234,7 @@ async fn test_client_receives_events_in_order() {
// Broadcast events rapidly
let count = 50;
for i in 0..count {
let event = Event::new(format!("sequence {}", i));
let event = Event::new("test_user", format!("sequence {}", i));
manager.broadcast(&event).await.unwrap();
}
@@ -279,7 +279,7 @@ async fn test_concurrent_broadcasts_during_client_connections() {
let broadcast_manager = Arc::clone(&manager);
let broadcast_handle = tokio::spawn(async move {
for i in 0..100 {
let event = Event::new(format!("concurrent event {}", i));
let event = Event::new("test_user", format!("concurrent event {}", i));
broadcast_manager.broadcast(&event).await.unwrap();
tokio::time::sleep(Duration::from_millis(5)).await;
}
@@ -329,7 +329,7 @@ async fn test_buffer_overflow_affects_new_clients() {
// Broadcast more than buffer max (1000)
for i in 0..1100 {
let event = Event::new(format!("overflow event {}", i));
let event = Event::new("test_user", format!("overflow event {}", i));
manager.broadcast(&event).await.unwrap();
}
@@ -387,7 +387,7 @@ async fn test_client_count_scaling(#[case] num_clients: usize, #[case] events_pe
// Broadcast events
for i in 0..events_per_client {
let event = Event::new(format!("scale event {}", i));
let event = Event::new("test_user", format!("scale event {}", i));
manager.broadcast(&event).await.unwrap();
}
@@ -426,7 +426,7 @@ async fn test_client_disconnect_doesnt_affect_others() {
// Broadcast initial event
manager
.broadcast(&Event::new("before disconnect"))
.broadcast(&Event::new("test_user", "before disconnect"))
.await
.unwrap();
@@ -440,7 +440,7 @@ async fn test_client_disconnect_doesnt_affect_others() {
// Broadcast another event
manager
.broadcast(&Event::new("after disconnect"))
.broadcast(&Event::new("test_user", "after disconnect"))
.await
.unwrap();
@@ -473,7 +473,10 @@ async fn test_json_deserialization_of_received_events() {
// Broadcast an event with special characters
let test_message = "special chars: @#$% newline\\n tab\\t quotes \"test\"";
manager.broadcast(&Event::new(test_message)).await.unwrap();
manager
.broadcast(&Event::new("test_user", test_message))
.await
.unwrap();
// Connect and deserialize
let stream = UnixStream::connect(&socket_path).await.unwrap();