feat(client): add timestamp to ClientEvent::Warning

Include a timestamp when reporting warnings to allow consumers like the machine-readable formatter to provide temporal context for troubleshooting.
This commit is contained in:
Nils Andreas Svee committed 2026-05-11 09:50:16 +07:00
1 parent 1a04f44bb5
commit 5f6bff5dcb
5 files changed
+13 -4

No files matched your search

+6 -3
View File
@@ -442,7 +442,7 @@ pub fn format_human_event_with_options(
write_human_received_stats(&mut out, *received_stats); write_human_received_stats(&mut out, *received_stats);
out out
} }
ClientEvent::Warning { kind, message } => { ClientEvent::Warning { kind, message, .. } => {
format!("warning kind={} message={message}", warning_kind(*kind)) format!("warning kind={} message={message}", warning_kind(*kind))
} }
} }
@@ -565,8 +565,9 @@ fn format_machine(event: &ClientEvent) -> String {
write_packet_meta(&mut out, *packet_meta); write_packet_meta(&mut out, *packet_meta);
out.push_str(" warning=late"); out.push_str(" warning=late");
} }
ClientEvent::Warning { kind, message } => { ClientEvent::Warning { kind, message, at } => {
write_common(&mut out, "warning"); write_common(&mut out, "warning");
write_wall(&mut out, "at", at.wall);
write!( write!(
out, out,
" warning_kind={} message={}", " warning_kind={} message={}",
@@ -637,7 +638,7 @@ fn format_simple(event: &ClientEvent) -> String {
} }
out out
} }
ClientEvent::Warning { kind, message } => { ClientEvent::Warning { kind, message, .. } => {
format!("warning kind={} message={message}", warning_kind(*kind)) format!("warning kind={} message={message}", warning_kind(*kind))
} }
} }
@@ -1205,6 +1206,7 @@ mod tests {
&ClientEvent::Warning { &ClientEvent::Warning {
kind: WarningKind::WrongToken, kind: WarningKind::WrongToken,
message: "bad".to_owned(), message: "bad".to_owned(),
at: ClientTimestamp::now()
}, },
OutputMode::RttUs OutputMode::RttUs
), ),
@@ -1475,6 +1477,7 @@ mod tests {
ClientEvent::Warning { ClientEvent::Warning {
kind: WarningKind::UntrackedReply, kind: WarningKind::UntrackedReply,
message: "untracked reply".to_owned(), message: "untracked reply".to_owned(),
at: ClientTimestamp::now(),
}, },
]; ];
+4
View File
@@ -319,6 +319,7 @@ impl Client {
return Ok(vec![ClientEvent::Warning { return Ok(vec![ClientEvent::Warning {
kind: WarningKind::MalformedOrUnrelatedPacket, kind: WarningKind::MalformedOrUnrelatedPacket,
message: "dropped malformed or unrelated packet".to_owned(), message: "dropped malformed or unrelated packet".to_owned(),
at: now,
}]); }]);
}; };
self.process_echo_reply(reply, packet_len, now, datagram.meta) self.process_echo_reply(reply, packet_len, now, datagram.meta)
@@ -415,6 +416,7 @@ impl Client {
return Ok(vec![ClientEvent::Warning { return Ok(vec![ClientEvent::Warning {
kind: WarningKind::MalformedOrUnrelatedPacket, kind: WarningKind::MalformedOrUnrelatedPacket,
message: "dropped malformed or unrelated packet".to_owned(), message: "dropped malformed or unrelated packet".to_owned(),
at: now,
}]); }]);
}; };
self.process_echo_reply(reply, packet_len, now, meta) self.process_echo_reply(reply, packet_len, now, meta)
@@ -447,6 +449,7 @@ impl Client {
"dropped reply with wrong token: expected {token:#x}, got {:#x}", "dropped reply with wrong token: expected {token:#x}, got {:#x}",
reply.token reply.token
), ),
at: now,
}]); }]);
} }
@@ -561,6 +564,7 @@ impl Client {
message: format!( message: format!(
"dropped reply with untracked seq {wire_seq} (no pending or completed entry)" "dropped reply with untracked seq {wire_seq} (no pending or completed entry)"
), ),
at: now,
}]) }])
} }
} }
@@ -1678,7 +1678,7 @@ fn receive_metadata_does_not_broaden_malformed_warning() {
assert_eq!(events.len(), 1); assert_eq!(events.len(), 1);
match &events[0] { match &events[0] {
ClientEvent::Warning { kind, message } => { ClientEvent::Warning { kind, message, .. } => {
assert_eq!(*kind, WarningKind::MalformedOrUnrelatedPacket); assert_eq!(*kind, WarningKind::MalformedOrUnrelatedPacket);
assert_eq!(message, "dropped malformed or unrelated packet"); assert_eq!(message, "dropped malformed or unrelated packet");
} }
+1
View File
@@ -96,6 +96,7 @@ pub enum ClientEvent {
Warning { Warning {
kind: WarningKind, kind: WarningKind,
message: String, message: String,
at: ClientTimestamp,
}, },
} }
+1
View File
@@ -279,6 +279,7 @@ mod tests {
ClientEvent::Warning { ClientEvent::Warning {
kind: WarningKind::UntrackedReply, kind: WarningKind::UntrackedReply,
message: format!("event-{n}"), message: format!("event-{n}"),
at: ClientTimestamp::now(),
} }
} }