sync from monorepo @ 2452e92e

This commit is contained in:
2026-05-08 01:59:04 +02:00
commit b03dc15371
459 changed files with 129586 additions and 0 deletions
@@ -0,0 +1,76 @@
#![cfg(feature = "test-utils")]
use std::sync::Arc;
use dirigent_archivist::backend::mock::MockBackend;
use dirigent_archivist::backend::{ArchiveBackend, ArchiveCapability, CapabilitySet, HealthStatus};
use dirigent_archivist::coordinator::Archivist;
use dirigent_archivist::registry::{ArchiveRegistration, FailureMode, WritePolicy};
use dirigent_archivist::types::{MetaEventRecord, MetaEventType};
use uuid::Uuid;
fn reg(name: &str, backend: Arc<MockBackend>, priority: u32) -> Arc<ArchiveRegistration> {
Arc::new(ArchiveRegistration::new(
name.into(),
"mock",
backend as Arc<dyn ArchiveBackend>,
true,
FailureMode::Required,
priority,
true,
WritePolicy::Inline,
None,
HealthStatus::Healthy,
))
}
fn stub_meta_event(scroll_id: Uuid) -> MetaEventRecord {
MetaEventRecord {
version: 1,
event_id: Uuid::now_v7(),
session: scroll_id,
ts: chrono::Utc::now(),
event_type: MetaEventType::ClientConnected,
description: "test event".into(),
linked_session_id: None,
linked_connector_id: None,
linked_connector_title: None,
metadata: serde_json::Value::Null,
}
}
#[tokio::test]
async fn capability_filter_skips_backend_without_meta_events() {
let mut caps_with_meta = CapabilitySet::new();
caps_with_meta.insert(ArchiveCapability::MetaEvents);
caps_with_meta.insert(ArchiveCapability::SessionMapping);
caps_with_meta.insert(ArchiveCapability::ConnectorRegistry);
let with_meta = Arc::new(MockBackend::with_capabilities(caps_with_meta));
let mut caps_without_meta = CapabilitySet::new();
caps_without_meta.insert(ArchiveCapability::SessionMapping);
caps_without_meta.insert(ArchiveCapability::ConnectorRegistry);
let without_meta = Arc::new(MockBackend::with_capabilities(caps_without_meta));
let archivist = Archivist::from_registrations(vec![
reg("primary", with_meta.clone(), 0),
reg("secondary", without_meta.clone(), 10),
]);
let scroll = Uuid::new_v4();
archivist
.append_meta_events(scroll, vec![stub_meta_event(scroll)], None)
.await
.unwrap();
// Primary received the meta event.
assert!(
with_meta.has_meta_events(scroll),
"primary should receive meta event"
);
// Secondary was capability-skipped.
assert!(
!without_meta.has_meta_events(scroll),
"secondary should be skipped"
);
}