first pass of merging in warp (doesn't build)

This commit is contained in:
Ryan Ward
2026-07-01 16:08:58 -05:00
parent 2f64909469
commit 4770ac06b5
3662 changed files with 414574 additions and 89772 deletions
@@ -200,5 +200,5 @@ impl EventStore {
}
#[cfg(test)]
#[path = "event_store_test.rs"]
#[path = "event_store_tests.rs"]
mod tests;
@@ -1,8 +1,9 @@
use chrono::{Duration, TimeZone, Utc};
use crate::telemetry::event_store::{
EventPayload, EventStore, SESSION_CONTINUATION_THRESHOLD_SECONDS,
};
use crate::time::{get_current_time, test_offset_time};
use chrono::{Duration, TimeZone, Utc};
#[test]
fn test_initialize_session() {
@@ -0,0 +1,151 @@
use chrono::{Duration, TimeZone, Utc};
use crate::telemetry::event_store::{
EventPayload, EventStore, SESSION_CONTINUATION_THRESHOLD_SECONDS,
};
use crate::time::{get_current_time, test_offset_time};
#[test]
fn test_initialize_session() {
test_offset_time(5);
let event_store = EventStore::new();
assert_eq!(
event_store.current_session_created_at,
Utc.timestamp_opt(5, 0).unwrap()
);
}
#[test]
fn test_event_queue_empty() {
let user_id = Some("user123".to_string());
let anonymous_id = "anon-user-xyz".to_string();
let mut event_store = EventStore::new();
event_store.record_app_active(user_id.clone(), anonymous_id.clone(), get_current_time());
let session_created_at_0 = event_store.current_session_created_at;
// Queue is empty and an event comes in while session is fresh
event_store.events.clear();
test_offset_time(1);
event_store.record_app_active(user_id.clone(), anonymous_id.clone(), get_current_time());
assert_eq!(
event_store.events.back().unwrap().session_created_at,
session_created_at_0
);
// Queue is empty and an event comes in while session is stale
event_store.events.clear();
let inactivity_duration = SESSION_CONTINUATION_THRESHOLD_SECONDS as i64 + 1;
test_offset_time(inactivity_duration);
let now = get_current_time();
event_store.record_app_active(user_id, anonymous_id, get_current_time());
assert_eq!(event_store.events.back().unwrap().session_created_at, now);
}
#[test]
fn test_app_active_after_inactivity() {
let user_id = Some("user123".to_string());
let anonymous_id = "anon-user-xyz".to_string();
let mut event_store = EventStore::new();
let inactivity_duration = SESSION_CONTINUATION_THRESHOLD_SECONDS as i64 + 1;
event_store.record_app_active(user_id.clone(), anonymous_id.clone(), get_current_time());
let session_created_at_0 = event_store.current_session_created_at;
test_offset_time(inactivity_duration);
event_store.record_app_active(user_id.clone(), anonymous_id.clone(), get_current_time());
assert_eq!(
event_store.events.back().unwrap().payload,
EventPayload::AppActive {
user_id: user_id.clone(),
anonymous_id: anonymous_id.clone()
}
);
let session_created_at_1 = event_store.events.back().unwrap().session_created_at;
assert_eq!(
session_created_at_1 - session_created_at_0,
Duration::seconds(inactivity_duration)
);
test_offset_time(inactivity_duration);
event_store.record_event(
user_id.clone(),
anonymous_id.clone(),
"Block Creation".into(),
None,
false, /* contains_ugc */
get_current_time(),
);
assert_eq!(
event_store.events.back().unwrap().payload,
EventPayload::NamedEvent {
user_id,
anonymous_id,
name: "Block Creation".into(),
value: None
}
);
let session_created_at_2 = event_store.events.back().unwrap().session_created_at;
assert_eq!(
session_created_at_2 - session_created_at_1,
Duration::seconds(inactivity_duration)
);
}
#[test]
fn test_app_active_after_activity() {
let user_id = Some("user123".to_string());
let anonymous_id = "anon-user-xyz".to_string();
let mut event_store = EventStore::new();
event_store.record_app_active(user_id.clone(), anonymous_id.clone(), get_current_time());
assert_eq!(event_store.events.len(), 1);
let timestamp_0 = event_store.events.back().unwrap().timestamp;
let session_created_at_0 = event_store.events.back().unwrap().session_created_at;
// Check that the last app active event was updated
test_offset_time(5);
event_store.record_app_active(user_id.clone(), anonymous_id.clone(), get_current_time());
assert_eq!(event_store.events.len(), 1);
let timestamp_1 = event_store.events.back().unwrap().timestamp;
let session_created_at_1 = event_store.events.back().unwrap().session_created_at;
assert_eq!(session_created_at_0, session_created_at_1);
assert_eq!(timestamp_1 - timestamp_0, Duration::seconds(5));
test_offset_time(5);
event_store.record_event(
user_id.clone(),
anonymous_id.clone(),
"Block Creation".into(),
None,
false, /* contains_ugc */
get_current_time(),
);
assert_eq!(event_store.events.len(), 2);
let timestamp_2 = event_store.events.back().unwrap().timestamp;
let session_created_at_2 = event_store.events.back().unwrap().session_created_at;
assert_eq!(session_created_at_1, session_created_at_2);
assert_eq!(timestamp_2 - timestamp_1, Duration::seconds(5));
test_offset_time(5);
event_store.record_event(
user_id.clone(),
anonymous_id.clone(),
"Block Creation".into(),
None,
false, /* contains_ugc */
get_current_time(),
);
assert_eq!(event_store.events.len(), 3);
let timestamp_3 = event_store.events.back().unwrap().timestamp;
let session_created_at_3 = event_store.events.back().unwrap().session_created_at;
assert_eq!(session_created_at_2, session_created_at_3);
assert_eq!(timestamp_3 - timestamp_2, Duration::seconds(5));
test_offset_time(5);
event_store.record_app_active(user_id, anonymous_id, get_current_time());
assert_eq!(event_store.events.len(), 4);
let timestamp_4 = event_store.events.back().unwrap().timestamp;
let session_created_at_4 = event_store.events.back().unwrap().session_created_at;
assert_eq!(session_created_at_3, session_created_at_4);
assert_eq!(timestamp_4 - timestamp_3, Duration::seconds(5));
}
+4 -5
View File
@@ -1,14 +1,13 @@
mod event_store;
use chrono::{DateTime, Utc};
use lazy_static::lazy_static;
use parking_lot::Mutex;
use serde_json::Value;
use std::borrow::Cow;
use chrono::{DateTime, Utc};
use event_store::*;
pub use event_store::{Event, EventPayload};
use lazy_static::lazy_static;
use parking_lot::Mutex;
use serde_json::Value;
lazy_static! {
static ref TELEMETRY: Mutex<EventStore> = Mutex::new(EventStore::new());