56 lines
1.5 KiB
Rust
56 lines
1.5 KiB
Rust
use mem_store::{EventRecord, LogWriter};
|
|||
|
|
use serde_json::json;
|
||
|
|
use std::fs;
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn a1_log_writes_jsonl() {
|
||
|
|
let _ = fs::remove_dir_all("log/test/q1");
|
||
|
|
let mut writer = LogWriter::new("test", "q1", "run1").unwrap();
|
||
|
|
|
||
|
|
writer.log(EventRecord {
|
||
|
|
project: "test".to_string(),
|
||
|
|
query: "q1".to_string(),
|
||
|
|
run: "run1".to_string(),
|
||
|
|
turn: 1,
|
||
|
|
event_type: "evidence".to_string(),
|
||
|
|
data: json!({"chunk": "abc"}),
|
||
|
|
}).unwrap();
|
||
|
|
|
||
|
|
writer.log(EventRecord {
|
||
|
|
project: "test".to_string(),
|
||
|
|
query: "q1".to_string(),
|
||
|
|
run: "run1".to_string(),
|
||
|
|
turn: 2,
|
||
|
|
event_type: "memory".to_string(),
|
||
|
|
data: json!({"text": "test"}),
|
||
|
|
}).unwrap();
|
||
|
|
|
||
|
|
let events = writer.read_all().unwrap();
|
||
|
|
assert_eq!(events.len(), 2);
|
||
|
|
assert_eq!(events[0].turn, 1);
|
||
|
|
assert_eq!(events[1].turn, 2);
|
||
|
|
|
||
|
|
let _ = fs::remove_dir_all("log/test/q1");
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn a2_log_idempotent() {
|
||
|
|
let _ = fs::remove_dir_all("log/test/q2");
|
||
|
|
let mut writer = LogWriter::new("test", "q2", "run2").unwrap();
|
||
|
|
|
||
|
|
writer.log(EventRecord {
|
||
|
|
project: "test".to_string(),
|
||
|
|
query: "q2".to_string(),
|
||
|
|
run: "run2".to_string(),
|
||
|
|
turn: 1,
|
||
|
|
event_type: "test".to_string(),
|
||
|
|
data: json!({"k": "v"}),
|
||
|
|
}).unwrap();
|
||
|
|
|
||
|
|
let events1 = writer.read_all().unwrap();
|
||
|
|
let events2 = writer.read_all().unwrap();
|
||
|
|
assert_eq!(events1, events2);
|
||
|
|
|
||
|
|
let _ = fs::remove_dir_all("log/test/q2");
|
||
|
|
}
|