refactor(client): make terminal target outcomes authoritative

This commit is contained in:
Nils Andreas Svee committed 2026-10-04 21:48:20 +07:00
1 parent 784ce77354
commit 2cd8a7d60d
4 files changed
+82 -25

No files matched your search

@@ -454,6 +454,12 @@ fn event_loss_independence() {
let mut config = config(ManagedPacing::Staggered);
config.event_capacity = 1;
let (task, handle) = ManagedClient::task(config, vec![target("one", server.addr)]).unwrap();
let initial = handle.status();
assert_eq!(
initial.targets[0].lifecycle,
ManagedTargetLifecycle::Pending
);
assert!(initial.targets[0].outcome.is_none());
let mut events = handle.subscribe().unwrap();
let outcome = runtime().block_on(task);
assert!(matches!(
@@ -461,7 +467,31 @@ fn event_loss_independence() {
Err(broadcast::error::TryRecvError::Lagged(_))
));
assert_eq!(outcome.successful_target_outcomes, 1);
assert_eq!(handle.status().lifecycle, ManagedLifecycle::Completed);
let status = handle.status();
assert_eq!(status.lifecycle, ManagedLifecycle::Completed);
assert_eq!(status.targets.len(), 1);
let target = &status.targets[0];
assert!(target.desired);
assert_eq!(target.lifecycle, ManagedTargetLifecycle::Terminal);
let terminal = target
.outcome
.as_ref()
.expect("terminal details are durable");
assert_eq!(terminal.target, target.target);
assert_eq!(status.terminal_target_count, 1);
assert_eq!(status.total_target_outcomes, 1);
assert_eq!(status.successful_target_outcomes, 1);
assert_eq!(status.failed_target_outcomes, 0);
assert_eq!(status.peer_closed_target_outcomes, 0);
assert_eq!(status.discarded_target_outcomes, 0);
assert_eq!(
status.recent_target_outcomes.as_ref(),
&[terminal.as_ref().clone()]
);
assert_eq!(
status.recent_target_outcomes,
outcome.recent_target_outcomes
);
server.finish();
}