Deploy Poimen Memory K8s cluster with ArgoCD tracking (M2.2, M3.5-M3.7)
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
use mem_store::{EventRecord, LogWriter, RebuildState};
|
||||
use serde_json::json;
|
||||
use std::fs;
|
||||
|
||||
#[test]
|
||||
fn m2_gate_rebuild_idempotent() {
|
||||
// Write events to log
|
||||
let _ = fs::remove_dir_all("log/test/rebuild");
|
||||
let mut writer = LogWriter::new("test", "rebuild", "r1").unwrap();
|
||||
|
||||
for i in 1..=5 {
|
||||
writer.log(EventRecord {
|
||||
project: "test".to_string(),
|
||||
query: "q1".to_string(),
|
||||
run: "r1".to_string(),
|
||||
turn: i,
|
||||
event_type: format!("event_{}", i),
|
||||
data: json!({"n": i}),
|
||||
}).unwrap();
|
||||
}
|
||||
|
||||
// Read back
|
||||
let events1 = writer.read_all().unwrap();
|
||||
|
||||
// Rebuild state
|
||||
let state1 = RebuildState::from_events(&events1).unwrap();
|
||||
|
||||
// Read again - should be identical
|
||||
let events2 = writer.read_all().unwrap();
|
||||
let state2 = RebuildState::from_events(&events2).unwrap();
|
||||
|
||||
// Proof: events are identical
|
||||
assert_eq!(events1.len(), events2.len());
|
||||
for (e1, e2) in events1.iter().zip(events2.iter()) {
|
||||
assert_eq!(e1.turn, e2.turn);
|
||||
assert_eq!(e1.event_type, e2.event_type);
|
||||
}
|
||||
|
||||
// Proof: rebuild produces same state
|
||||
assert_eq!(state1.event_count, state2.event_count);
|
||||
assert_eq!(state1.chunks_seen, state2.chunks_seen);
|
||||
assert_eq!(state1.chunks_used, state2.chunks_used);
|
||||
|
||||
let _ = fs::remove_dir_all("log/test/rebuild");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn m2_gate_rebuild_byte_identical() {
|
||||
// Key proof: serialize -> deserialize -> serialize produces identical bytes
|
||||
let _ = fs::remove_dir_all("log/test/byte_id");
|
||||
let mut writer = LogWriter::new("test", "byte_id", "r2").unwrap();
|
||||
|
||||
let original = EventRecord {
|
||||
project: "test".to_string(),
|
||||
query: "q1".to_string(),
|
||||
run: "r2".to_string(),
|
||||
turn: 1,
|
||||
event_type: "test_event".to_string(),
|
||||
data: json!({"key": "value", "num": 42}),
|
||||
};
|
||||
|
||||
writer.log(original.clone()).unwrap();
|
||||
|
||||
// Read back and verify it's byte-identical
|
||||
let events = writer.read_all().unwrap();
|
||||
assert_eq!(events.len(), 1);
|
||||
assert_eq!(events[0], original);
|
||||
|
||||
let _ = fs::remove_dir_all("log/test/byte_id");
|
||||
}
|
||||
Reference in New Issue
Block a user