diff --git a/dc/wireshark/generate-bindings.sh b/dc/wireshark/generate-bindings.sh index 0cc31b326..a287a78b2 100755 --- a/dc/wireshark/generate-bindings.sh +++ b/dc/wireshark/generate-bindings.sh @@ -79,7 +79,7 @@ OPTIONS=( mkdir -p src/wireshark_sys/ -RUST_TARGET=$(rustup show | awk 'NF' | awk 'END{print $2}') +RUST_TARGET=$(rustc -vV | grep release: | awk '{ print $2 }') # This list is filtered to roughly what our current usage requires. # It's possible there's a better way to do this -- some of the Wireshark diff --git a/quic/s2n-quic-core/events/connection.rs b/quic/s2n-quic-core/events/connection.rs index d53e1fff1..fb14fec21 100644 --- a/quic/s2n-quic-core/events/connection.rs +++ b/quic/s2n-quic-core/events/connection.rs @@ -437,6 +437,14 @@ struct DcStateChanged { state: DcState, } +#[event("transport:dc_path_created")] +/// The DC path has been created +struct DcPathCreated<'a> { + /// This is the dc::Path struct, it's just type-erased. But if an event subscriber knows the + /// type they can downcast. + path: &'a (dyn core::any::Any + Send + 'static), +} + // NOTE - This event MUST come last, since connection-level aggregation depends on it #[event("connectivity:connection_closed")] //= https://tools.ietf.org/id/draft-marx-qlog-event-definitions-quic-h3-02#5.1.3 diff --git a/quic/s2n-quic-core/src/event.rs b/quic/s2n-quic-core/src/event.rs index d2f1544b1..5151a7ccf 100644 --- a/quic/s2n-quic-core/src/event.rs +++ b/quic/s2n-quic-core/src/event.rs @@ -82,6 +82,15 @@ impl<'a> IntoEvent<&'a str> for &'a str { } } +impl<'a> IntoEvent<&'a (dyn core::any::Any + Send + 'static)> + for &'a (dyn core::any::Any + Send + 'static) +{ + #[inline] + fn into_event(self) -> Self { + self + } +} + impl IntoEvent> for RangeInclusive { #[inline] fn into_event(self) -> RangeInclusive { diff --git a/quic/s2n-quic-core/src/event/generated.rs b/quic/s2n-quic-core/src/event/generated.rs index 8f5c7f6c1..d8725ac9f 100644 --- a/quic/s2n-quic-core/src/event/generated.rs +++ b/quic/s2n-quic-core/src/event/generated.rs @@ -2655,6 +2655,25 @@ pub mod api { } #[derive(Clone, Debug)] #[non_exhaustive] + #[doc = " The DC path has been created"] + pub struct DcPathCreated<'a> { + #[doc = " This is the dc::Path struct, it's just type-erased. But if an event subscriber knows the"] + #[doc = " type they can downcast."] + pub path: &'a (dyn core::any::Any + Send + 'static), + } + #[cfg(any(test, feature = "testing"))] + impl<'a> crate::event::snapshot::Fmt for DcPathCreated<'a> { + fn fmt(&self, fmt: &mut core::fmt::Formatter) -> core::fmt::Result { + let mut fmt = fmt.debug_struct("DcPathCreated"); + fmt.field("path", &self.path); + fmt.finish() + } + } + impl<'a> Event for DcPathCreated<'a> { + const NAME: &'static str = "transport:dc_path_created"; + } + #[derive(Clone, Debug)] + #[non_exhaustive] #[doc = " Connection closed"] pub struct ConnectionClosed { pub error: crate::connection::Error, @@ -4172,6 +4191,17 @@ pub mod tracing { tracing :: event ! (target : "dc_state_changed" , parent : id , tracing :: Level :: DEBUG , { state = tracing :: field :: debug (state) }); } #[inline] + fn on_dc_path_created( + &mut self, + context: &mut Self::ConnectionContext, + _meta: &api::ConnectionMeta, + event: &api::DcPathCreated, + ) { + let id = context.id(); + let api::DcPathCreated { path } = event; + tracing :: event ! (target : "dc_path_created" , parent : id , tracing :: Level :: DEBUG , { path = tracing :: field :: debug (path) }); + } + #[inline] fn on_connection_closed( &mut self, context: &mut Self::ConnectionContext, @@ -6334,6 +6364,22 @@ pub mod builder { } } #[derive(Clone, Debug)] + #[doc = " The DC path has been created"] + pub struct DcPathCreated<'a> { + #[doc = " This is the dc::Path struct, it's just type-erased. But if an event subscriber knows the"] + #[doc = " type they can downcast."] + pub path: &'a (dyn core::any::Any + Send + 'static), + } + impl<'a> IntoEvent> for DcPathCreated<'a> { + #[inline] + fn into_event(self) -> api::DcPathCreated<'a> { + let DcPathCreated { path } = self; + api::DcPathCreated { + path: path.into_event(), + } + } + } + #[derive(Clone, Debug)] #[doc = " Connection closed"] pub struct ConnectionClosed { pub error: crate::connection::Error, @@ -7353,6 +7399,18 @@ mod traits { let _ = meta; let _ = event; } + #[doc = "Called when the `DcPathCreated` event is triggered"] + #[inline] + fn on_dc_path_created( + &mut self, + context: &mut Self::ConnectionContext, + meta: &api::ConnectionMeta, + event: &api::DcPathCreated, + ) { + let _ = context; + let _ = meta; + let _ = event; + } #[doc = "Called when the `ConnectionClosed` event is triggered"] #[inline] fn on_connection_closed( @@ -8039,6 +8097,16 @@ mod traits { (self.1).on_dc_state_changed(&mut context.1, meta, event); } #[inline] + fn on_dc_path_created( + &mut self, + context: &mut Self::ConnectionContext, + meta: &api::ConnectionMeta, + event: &api::DcPathCreated, + ) { + (self.0).on_dc_path_created(&mut context.0, meta, event); + (self.1).on_dc_path_created(&mut context.1, meta, event); + } + #[inline] fn on_connection_closed( &mut self, context: &mut Self::ConnectionContext, @@ -8473,6 +8541,8 @@ mod traits { fn on_bbr_state_changed(&mut self, event: builder::BbrStateChanged); #[doc = "Publishes a `DcStateChanged` event to the publisher's subscriber"] fn on_dc_state_changed(&mut self, event: builder::DcStateChanged); + #[doc = "Publishes a `DcPathCreated` event to the publisher's subscriber"] + fn on_dc_path_created(&mut self, event: builder::DcPathCreated); #[doc = "Publishes a `ConnectionClosed` event to the publisher's subscriber"] fn on_connection_closed(&mut self, event: builder::ConnectionClosed); #[doc = r" Returns the QUIC version negotiated for the current connection, if any"] @@ -8924,6 +8994,15 @@ mod traits { self.subscriber.on_event(&self.meta, &event); } #[inline] + fn on_dc_path_created(&mut self, event: builder::DcPathCreated) { + let event = event.into_event(); + self.subscriber + .on_dc_path_created(self.context, &self.meta, &event); + self.subscriber + .on_connection_event(self.context, &self.meta, &event); + self.subscriber.on_event(&self.meta, &event); + } + #[inline] fn on_connection_closed(&mut self, event: builder::ConnectionClosed) { let event = event.into_event(); self.subscriber @@ -9230,6 +9309,7 @@ pub mod testing { pub pacing_rate_updated: u64, pub bbr_state_changed: u64, pub dc_state_changed: u64, + pub dc_path_created: u64, pub connection_closed: u64, pub version_information: u64, pub endpoint_packet_sent: u64, @@ -9321,6 +9401,7 @@ pub mod testing { pacing_rate_updated: 0, bbr_state_changed: 0, dc_state_changed: 0, + dc_path_created: 0, connection_closed: 0, version_information: 0, endpoint_packet_sent: 0, @@ -9965,6 +10046,20 @@ pub mod testing { self.output.push(out); } } + fn on_dc_path_created( + &mut self, + _context: &mut Self::ConnectionContext, + meta: &api::ConnectionMeta, + event: &api::DcPathCreated, + ) { + self.dc_path_created += 1; + if self.location.is_some() { + let meta = crate::event::snapshot::Fmt::to_snapshot(meta); + let event = crate::event::snapshot::Fmt::to_snapshot(event); + let out = format!("{meta:?} {event:?}"); + self.output.push(out); + } + } fn on_connection_closed( &mut self, _context: &mut Self::ConnectionContext, @@ -10177,6 +10272,7 @@ pub mod testing { pub pacing_rate_updated: u64, pub bbr_state_changed: u64, pub dc_state_changed: u64, + pub dc_path_created: u64, pub connection_closed: u64, pub version_information: u64, pub endpoint_packet_sent: u64, @@ -10258,6 +10354,7 @@ pub mod testing { pacing_rate_updated: 0, bbr_state_changed: 0, dc_state_changed: 0, + dc_path_created: 0, connection_closed: 0, version_information: 0, endpoint_packet_sent: 0, @@ -10800,6 +10897,15 @@ pub mod testing { self.output.push(out); } } + fn on_dc_path_created(&mut self, event: builder::DcPathCreated) { + self.dc_path_created += 1; + let event = event.into_event(); + if self.location.is_some() { + let event = crate::event::snapshot::Fmt::to_snapshot(&event); + let out = format!("{event:?}"); + self.output.push(out); + } + } fn on_connection_closed(&mut self, event: builder::ConnectionClosed) { self.connection_closed += 1; let event = event.into_event(); diff --git a/quic/s2n-quic-core/src/event/generated/metrics.rs b/quic/s2n-quic-core/src/event/generated/metrics.rs index 45c798ae9..2e8e09171 100644 --- a/quic/s2n-quic-core/src/event/generated/metrics.rs +++ b/quic/s2n-quic-core/src/event/generated/metrics.rs @@ -70,6 +70,7 @@ pub struct Context { pacing_rate_updated: u64, bbr_state_changed: u64, dc_state_changed: u64, + dc_path_created: u64, connection_closed: u64, } impl event::Subscriber for Subscriber @@ -128,6 +129,7 @@ where pacing_rate_updated: 0, bbr_state_changed: 0, dc_state_changed: 0, + dc_path_created: 0, connection_closed: 0, } } @@ -620,6 +622,17 @@ where .on_dc_state_changed(&mut context.recorder, meta, event); } #[inline] + fn on_dc_path_created( + &mut self, + context: &mut Self::ConnectionContext, + meta: &api::ConnectionMeta, + event: &api::DcPathCreated, + ) { + context.dc_path_created += 1; + self.subscriber + .on_dc_path_created(&mut context.recorder, meta, event); + } + #[inline] fn on_connection_closed( &mut self, context: &mut Self::ConnectionContext, @@ -735,6 +748,8 @@ impl Drop for Context { .increment_counter("bbr_state_changed", self.bbr_state_changed as _); self.recorder .increment_counter("dc_state_changed", self.dc_state_changed as _); + self.recorder + .increment_counter("dc_path_created", self.dc_path_created as _); self.recorder .increment_counter("connection_closed", self.connection_closed as _); } diff --git a/quic/s2n-quic-core/src/event/generated/metrics/aggregate.rs b/quic/s2n-quic-core/src/event/generated/metrics/aggregate.rs index b149dd44c..42963119c 100644 --- a/quic/s2n-quic-core/src/event/generated/metrics/aggregate.rs +++ b/quic/s2n-quic-core/src/event/generated/metrics/aggregate.rs @@ -13,7 +13,7 @@ use crate::event::{ }, }; use alloc::{boxed::Box, vec::Vec}; -static INFO: &[Info; 162usize] = &[ +static INFO: &[Info; 163usize] = &[ info::Builder { id: 0usize, name: Str::new("application_protocol_information\0"), @@ -700,288 +700,294 @@ static INFO: &[Info; 162usize] = &[ .build(), info::Builder { id: 114usize, - name: Str::new("connection_closed\0"), + name: Str::new("dc_path_created\0"), units: Units::None, } .build(), info::Builder { id: 115usize, + name: Str::new("connection_closed\0"), + units: Units::None, + } + .build(), + info::Builder { + id: 116usize, name: Str::new("connection_closed.latency\0"), units: Units::Duration, } .build(), info::Builder { - id: 116usize, + id: 117usize, name: Str::new("connection_closed.error\0"), units: Units::None, } .build(), info::Builder { - id: 117usize, + id: 118usize, name: Str::new("version_information\0"), units: Units::None, } .build(), info::Builder { - id: 118usize, + id: 119usize, name: Str::new("endpoint_packet_sent\0"), units: Units::None, } .build(), info::Builder { - id: 119usize, + id: 120usize, name: Str::new("endpoint_packet_received\0"), units: Units::None, } .build(), info::Builder { - id: 120usize, + id: 121usize, name: Str::new("endpoint_datagram_sent\0"), units: Units::None, } .build(), info::Builder { - id: 121usize, + id: 122usize, name: Str::new("endpoint_datagram_sent.bytes\0"), units: Units::Bytes, } .build(), info::Builder { - id: 122usize, + id: 123usize, name: Str::new("endpoint_datagram_sent.bytes.total\0"), units: Units::Bytes, } .build(), info::Builder { - id: 123usize, + id: 124usize, name: Str::new("endpoint_datagram_sent.gso_offset\0"), units: Units::None, } .build(), info::Builder { - id: 124usize, + id: 125usize, name: Str::new("endpoint_datagram_received\0"), units: Units::None, } .build(), info::Builder { - id: 125usize, + id: 126usize, name: Str::new("endpoint_datagram_received.bytes\0"), units: Units::Bytes, } .build(), info::Builder { - id: 126usize, + id: 127usize, name: Str::new("endpoint_datagram_received.bytes.total\0"), units: Units::Bytes, } .build(), info::Builder { - id: 127usize, + id: 128usize, name: Str::new("endpoint_datagram_dropped\0"), units: Units::None, } .build(), info::Builder { - id: 128usize, + id: 129usize, name: Str::new("endpoint_datagram_dropped.bytes\0"), units: Units::Bytes, } .build(), info::Builder { - id: 129usize, + id: 130usize, name: Str::new("endpoint_datagram_dropped.bytes.total\0"), units: Units::Bytes, } .build(), info::Builder { - id: 130usize, + id: 131usize, name: Str::new("endpoint_datagram_dropped.reason\0"), units: Units::None, } .build(), info::Builder { - id: 131usize, + id: 132usize, name: Str::new("endpoint_connection_attempt_failed\0"), units: Units::None, } .build(), info::Builder { - id: 132usize, + id: 133usize, name: Str::new("endpoint_connection_attempt_failed.error\0"), units: Units::None, } .build(), info::Builder { - id: 133usize, + id: 134usize, name: Str::new("platform_tx\0"), units: Units::None, } .build(), info::Builder { - id: 134usize, + id: 135usize, name: Str::new("platform_tx.packets.total\0"), units: Units::None, } .build(), info::Builder { - id: 135usize, + id: 136usize, name: Str::new("platform_tx.packets\0"), units: Units::None, } .build(), info::Builder { - id: 136usize, + id: 137usize, name: Str::new("platform_tx.syscalls.total\0"), units: Units::None, } .build(), info::Builder { - id: 137usize, + id: 138usize, name: Str::new("platform_tx.syscalls\0"), units: Units::None, } .build(), info::Builder { - id: 138usize, + id: 139usize, name: Str::new("platform_tx.syscalls.blocked.total\0"), units: Units::None, } .build(), info::Builder { - id: 139usize, + id: 140usize, name: Str::new("platform_tx.syscalls.blocked\0"), units: Units::None, } .build(), info::Builder { - id: 140usize, + id: 141usize, name: Str::new("platform_tx.errors.total\0"), units: Units::None, } .build(), info::Builder { - id: 141usize, + id: 142usize, name: Str::new("platform_tx.errors\0"), units: Units::None, } .build(), info::Builder { - id: 142usize, + id: 143usize, name: Str::new("platform_tx.errors.dropped.total\0"), units: Units::None, } .build(), info::Builder { - id: 143usize, + id: 144usize, name: Str::new("platform_tx.errors.dropped\0"), units: Units::None, } .build(), info::Builder { - id: 144usize, + id: 145usize, name: Str::new("platform_tx_error\0"), units: Units::None, } .build(), info::Builder { - id: 145usize, + id: 146usize, name: Str::new("platform_rx\0"), units: Units::None, } .build(), info::Builder { - id: 146usize, + id: 147usize, name: Str::new("platform_rx.packets.total\0"), units: Units::None, } .build(), info::Builder { - id: 147usize, + id: 148usize, name: Str::new("platform_rx.packets\0"), units: Units::None, } .build(), info::Builder { - id: 148usize, + id: 149usize, name: Str::new("platform_rx.syscalls.total\0"), units: Units::None, } .build(), info::Builder { - id: 149usize, + id: 150usize, name: Str::new("platform_rx.syscalls\0"), units: Units::None, } .build(), info::Builder { - id: 150usize, + id: 151usize, name: Str::new("platform_rx.syscalls.blocked.total\0"), units: Units::None, } .build(), info::Builder { - id: 151usize, + id: 152usize, name: Str::new("platform_rx.syscalls.blocked\0"), units: Units::None, } .build(), info::Builder { - id: 152usize, + id: 153usize, name: Str::new("platform_rx.errors.total\0"), units: Units::None, } .build(), info::Builder { - id: 153usize, + id: 154usize, name: Str::new("platform_rx.errors\0"), units: Units::None, } .build(), info::Builder { - id: 154usize, + id: 155usize, name: Str::new("platform_rx.errors.dropped.total\0"), units: Units::None, } .build(), info::Builder { - id: 155usize, + id: 156usize, name: Str::new("platform_rx.errors.dropped\0"), units: Units::None, } .build(), info::Builder { - id: 156usize, + id: 157usize, name: Str::new("platform_rx_error\0"), units: Units::None, } .build(), info::Builder { - id: 157usize, + id: 158usize, name: Str::new("platform_feature_configured\0"), units: Units::None, } .build(), info::Builder { - id: 158usize, + id: 159usize, name: Str::new("platform_event_loop_wakeup\0"), units: Units::None, } .build(), info::Builder { - id: 159usize, + id: 160usize, name: Str::new("platform_event_loop_sleep\0"), units: Units::None, } .build(), info::Builder { - id: 160usize, + id: 161usize, name: Str::new("platform_event_loop_sleep.processing_duration\0"), units: Units::Duration, } .build(), info::Builder { - id: 161usize, + id: 162usize, name: Str::new("platform_event_loop_started\0"), units: Units::None, } @@ -994,7 +1000,7 @@ pub struct ConnectionContext { } pub struct Subscriber { #[allow(dead_code)] - counters: Box<[R::Counter; 76usize]>, + counters: Box<[R::Counter; 77usize]>, #[allow(dead_code)] bool_counters: Box<[R::BoolCounter; 3usize]>, #[allow(dead_code)] @@ -1029,7 +1035,7 @@ impl Subscriber { #[allow(unused_mut)] #[inline] pub fn new(registry: R) -> Self { - let mut counters = Vec::with_capacity(76usize); + let mut counters = Vec::with_capacity(77usize); let mut bool_counters = Vec::with_capacity(3usize); let mut nominal_counters = Vec::with_capacity(29usize); let mut nominal_counter_offsets = Vec::with_capacity(29usize); @@ -1089,31 +1095,32 @@ impl Subscriber { counters.push(registry.register_counter(&INFO[106usize])); counters.push(registry.register_counter(&INFO[108usize])); counters.push(registry.register_counter(&INFO[114usize])); - counters.push(registry.register_counter(&INFO[117usize])); + counters.push(registry.register_counter(&INFO[115usize])); counters.push(registry.register_counter(&INFO[118usize])); counters.push(registry.register_counter(&INFO[119usize])); counters.push(registry.register_counter(&INFO[120usize])); - counters.push(registry.register_counter(&INFO[124usize])); - counters.push(registry.register_counter(&INFO[127usize])); - counters.push(registry.register_counter(&INFO[131usize])); - counters.push(registry.register_counter(&INFO[133usize])); + counters.push(registry.register_counter(&INFO[121usize])); + counters.push(registry.register_counter(&INFO[125usize])); + counters.push(registry.register_counter(&INFO[128usize])); + counters.push(registry.register_counter(&INFO[132usize])); counters.push(registry.register_counter(&INFO[134usize])); - counters.push(registry.register_counter(&INFO[136usize])); - counters.push(registry.register_counter(&INFO[138usize])); - counters.push(registry.register_counter(&INFO[140usize])); - counters.push(registry.register_counter(&INFO[142usize])); - counters.push(registry.register_counter(&INFO[144usize])); + counters.push(registry.register_counter(&INFO[135usize])); + counters.push(registry.register_counter(&INFO[137usize])); + counters.push(registry.register_counter(&INFO[139usize])); + counters.push(registry.register_counter(&INFO[141usize])); + counters.push(registry.register_counter(&INFO[143usize])); counters.push(registry.register_counter(&INFO[145usize])); counters.push(registry.register_counter(&INFO[146usize])); - counters.push(registry.register_counter(&INFO[148usize])); - counters.push(registry.register_counter(&INFO[150usize])); - counters.push(registry.register_counter(&INFO[152usize])); - counters.push(registry.register_counter(&INFO[154usize])); - counters.push(registry.register_counter(&INFO[156usize])); + counters.push(registry.register_counter(&INFO[147usize])); + counters.push(registry.register_counter(&INFO[149usize])); + counters.push(registry.register_counter(&INFO[151usize])); + counters.push(registry.register_counter(&INFO[153usize])); + counters.push(registry.register_counter(&INFO[155usize])); counters.push(registry.register_counter(&INFO[157usize])); counters.push(registry.register_counter(&INFO[158usize])); counters.push(registry.register_counter(&INFO[159usize])); - counters.push(registry.register_counter(&INFO[161usize])); + counters.push(registry.register_counter(&INFO[160usize])); + counters.push(registry.register_counter(&INFO[162usize])); bool_counters.push(registry.register_bool_counter(&INFO[23usize])); bool_counters.push(registry.register_bool_counter(&INFO[33usize])); bool_counters.push(registry.register_bool_counter(&INFO[96usize])); @@ -1411,7 +1418,7 @@ impl Subscriber { let mut count = 0; for variant in ::VARIANTS.iter() { nominal_counters - .push(registry.register_nominal_counter(&INFO[116usize], variant)); + .push(registry.register_nominal_counter(&INFO[117usize], variant)); count += 1; } debug_assert_ne!(count, 0, "field type needs at least one variant"); @@ -1422,7 +1429,7 @@ impl Subscriber { let mut count = 0; for variant in ::VARIANTS.iter() { nominal_counters - .push(registry.register_nominal_counter(&INFO[130usize], variant)); + .push(registry.register_nominal_counter(&INFO[131usize], variant)); count += 1; } debug_assert_ne!(count, 0, "field type needs at least one variant"); @@ -1433,7 +1440,7 @@ impl Subscriber { let mut count = 0; for variant in ::VARIANTS.iter() { nominal_counters - .push(registry.register_nominal_counter(&INFO[132usize], variant)); + .push(registry.register_nominal_counter(&INFO[133usize], variant)); count += 1; } debug_assert_ne!(count, 0, "field type needs at least one variant"); @@ -1461,23 +1468,23 @@ impl Subscriber { measures.push(registry.register_measure(&INFO[103usize])); measures.push(registry.register_measure(&INFO[104usize])); measures.push(registry.register_measure(&INFO[105usize])); - measures.push(registry.register_measure(&INFO[121usize])); measures.push(registry.register_measure(&INFO[122usize])); measures.push(registry.register_measure(&INFO[123usize])); - measures.push(registry.register_measure(&INFO[125usize])); + measures.push(registry.register_measure(&INFO[124usize])); measures.push(registry.register_measure(&INFO[126usize])); - measures.push(registry.register_measure(&INFO[128usize])); + measures.push(registry.register_measure(&INFO[127usize])); measures.push(registry.register_measure(&INFO[129usize])); - measures.push(registry.register_measure(&INFO[135usize])); - measures.push(registry.register_measure(&INFO[137usize])); - measures.push(registry.register_measure(&INFO[139usize])); - measures.push(registry.register_measure(&INFO[141usize])); - measures.push(registry.register_measure(&INFO[143usize])); - measures.push(registry.register_measure(&INFO[147usize])); - measures.push(registry.register_measure(&INFO[149usize])); - measures.push(registry.register_measure(&INFO[151usize])); - measures.push(registry.register_measure(&INFO[153usize])); - measures.push(registry.register_measure(&INFO[155usize])); + measures.push(registry.register_measure(&INFO[130usize])); + measures.push(registry.register_measure(&INFO[136usize])); + measures.push(registry.register_measure(&INFO[138usize])); + measures.push(registry.register_measure(&INFO[140usize])); + measures.push(registry.register_measure(&INFO[142usize])); + measures.push(registry.register_measure(&INFO[144usize])); + measures.push(registry.register_measure(&INFO[148usize])); + measures.push(registry.register_measure(&INFO[150usize])); + measures.push(registry.register_measure(&INFO[152usize])); + measures.push(registry.register_measure(&INFO[154usize])); + measures.push(registry.register_measure(&INFO[156usize])); timers.push(registry.register_timer(&INFO[47usize])); timers.push(registry.register_timer(&INFO[48usize])); timers.push(registry.register_timer(&INFO[49usize])); @@ -1491,8 +1498,8 @@ impl Subscriber { timers.push(registry.register_timer(&INFO[110usize])); timers.push(registry.register_timer(&INFO[111usize])); timers.push(registry.register_timer(&INFO[112usize])); - timers.push(registry.register_timer(&INFO[115usize])); - timers.push(registry.register_timer(&INFO[160usize])); + timers.push(registry.register_timer(&INFO[116usize])); + timers.push(registry.register_timer(&INFO[161usize])); { #[allow(unused_imports)] use api::*; @@ -1588,31 +1595,32 @@ impl Subscriber { 48usize => (&INFO[106usize], entry), 49usize => (&INFO[108usize], entry), 50usize => (&INFO[114usize], entry), - 51usize => (&INFO[117usize], entry), + 51usize => (&INFO[115usize], entry), 52usize => (&INFO[118usize], entry), 53usize => (&INFO[119usize], entry), 54usize => (&INFO[120usize], entry), - 55usize => (&INFO[124usize], entry), - 56usize => (&INFO[127usize], entry), - 57usize => (&INFO[131usize], entry), - 58usize => (&INFO[133usize], entry), + 55usize => (&INFO[121usize], entry), + 56usize => (&INFO[125usize], entry), + 57usize => (&INFO[128usize], entry), + 58usize => (&INFO[132usize], entry), 59usize => (&INFO[134usize], entry), - 60usize => (&INFO[136usize], entry), - 61usize => (&INFO[138usize], entry), - 62usize => (&INFO[140usize], entry), - 63usize => (&INFO[142usize], entry), - 64usize => (&INFO[144usize], entry), + 60usize => (&INFO[135usize], entry), + 61usize => (&INFO[137usize], entry), + 62usize => (&INFO[139usize], entry), + 63usize => (&INFO[141usize], entry), + 64usize => (&INFO[143usize], entry), 65usize => (&INFO[145usize], entry), 66usize => (&INFO[146usize], entry), - 67usize => (&INFO[148usize], entry), - 68usize => (&INFO[150usize], entry), - 69usize => (&INFO[152usize], entry), - 70usize => (&INFO[154usize], entry), - 71usize => (&INFO[156usize], entry), + 67usize => (&INFO[147usize], entry), + 68usize => (&INFO[149usize], entry), + 69usize => (&INFO[151usize], entry), + 70usize => (&INFO[153usize], entry), + 71usize => (&INFO[155usize], entry), 72usize => (&INFO[157usize], entry), 73usize => (&INFO[158usize], entry), 74usize => (&INFO[159usize], entry), - 75usize => (&INFO[161usize], entry), + 75usize => (&INFO[160usize], entry), + 76usize => (&INFO[162usize], entry), _ => unsafe { core::hint::unreachable_unchecked() }, }) } @@ -1813,19 +1821,19 @@ impl Subscriber { let offset = *entry; let variants = ::VARIANTS; let entries = &self.nominal_counters[offset..offset + variants.len()]; - (&INFO[116usize], entries, variants) + (&INFO[117usize], entries, variants) } 27usize => { let offset = *entry; let variants = ::VARIANTS; let entries = &self.nominal_counters[offset..offset + variants.len()]; - (&INFO[130usize], entries, variants) + (&INFO[131usize], entries, variants) } 28usize => { let offset = *entry; let variants = ::VARIANTS; let entries = &self.nominal_counters[offset..offset + variants.len()]; - (&INFO[132usize], entries, variants) + (&INFO[133usize], entries, variants) } _ => unsafe { core::hint::unreachable_unchecked() }, }) @@ -1866,23 +1874,23 @@ impl Subscriber { 18usize => (&INFO[103usize], entry), 19usize => (&INFO[104usize], entry), 20usize => (&INFO[105usize], entry), - 21usize => (&INFO[121usize], entry), - 22usize => (&INFO[122usize], entry), - 23usize => (&INFO[123usize], entry), - 24usize => (&INFO[125usize], entry), - 25usize => (&INFO[126usize], entry), - 26usize => (&INFO[128usize], entry), - 27usize => (&INFO[129usize], entry), - 28usize => (&INFO[135usize], entry), - 29usize => (&INFO[137usize], entry), - 30usize => (&INFO[139usize], entry), - 31usize => (&INFO[141usize], entry), - 32usize => (&INFO[143usize], entry), - 33usize => (&INFO[147usize], entry), - 34usize => (&INFO[149usize], entry), - 35usize => (&INFO[151usize], entry), - 36usize => (&INFO[153usize], entry), - 37usize => (&INFO[155usize], entry), + 21usize => (&INFO[122usize], entry), + 22usize => (&INFO[123usize], entry), + 23usize => (&INFO[124usize], entry), + 24usize => (&INFO[126usize], entry), + 25usize => (&INFO[127usize], entry), + 26usize => (&INFO[129usize], entry), + 27usize => (&INFO[130usize], entry), + 28usize => (&INFO[136usize], entry), + 29usize => (&INFO[138usize], entry), + 30usize => (&INFO[140usize], entry), + 31usize => (&INFO[142usize], entry), + 32usize => (&INFO[144usize], entry), + 33usize => (&INFO[148usize], entry), + 34usize => (&INFO[150usize], entry), + 35usize => (&INFO[152usize], entry), + 36usize => (&INFO[154usize], entry), + 37usize => (&INFO[156usize], entry), _ => unsafe { core::hint::unreachable_unchecked() }, }) } @@ -1925,8 +1933,8 @@ impl Subscriber { 10usize => (&INFO[110usize], entry), 11usize => (&INFO[111usize], entry), 12usize => (&INFO[112usize], entry), - 13usize => (&INFO[115usize], entry), - 14usize => (&INFO[160usize], entry), + 13usize => (&INFO[116usize], entry), + 14usize => (&INFO[161usize], entry), _ => unsafe { core::hint::unreachable_unchecked() }, }) } @@ -2764,6 +2772,20 @@ impl event::Subscriber for Subscriber { let _ = event; } #[inline] + fn on_dc_path_created( + &mut self, + context: &mut Self::ConnectionContext, + meta: &api::ConnectionMeta, + event: &api::DcPathCreated, + ) { + #[allow(unused_imports)] + use api::*; + self.count(114usize, 50usize, 1usize); + let _ = context; + let _ = meta; + let _ = event; + } + #[inline] fn on_connection_closed( &mut self, context: &mut Self::ConnectionContext, @@ -2772,13 +2794,13 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(114usize, 50usize, 1usize); + self.count(115usize, 51usize, 1usize); self.time( - 115usize, + 116usize, 13usize, meta.timestamp.saturating_duration_since(context.start_time), ); - self.count_nominal(116usize, 26usize, &event.error); + self.count_nominal(117usize, 26usize, &event.error); let _ = context; let _ = meta; let _ = event; @@ -2791,7 +2813,7 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(117usize, 51usize, 1usize); + self.count(118usize, 52usize, 1usize); let _ = event; let _ = meta; } @@ -2803,7 +2825,7 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(118usize, 52usize, 1usize); + self.count(119usize, 53usize, 1usize); let _ = event; let _ = meta; } @@ -2815,7 +2837,7 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(119usize, 53usize, 1usize); + self.count(120usize, 54usize, 1usize); let _ = event; let _ = meta; } @@ -2827,10 +2849,10 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(120usize, 54usize, 1usize); - self.measure(121usize, 21usize, event.len); - self.measure(122usize, 22usize, event.len); - self.measure(123usize, 23usize, event.gso_offset); + self.count(121usize, 55usize, 1usize); + self.measure(122usize, 21usize, event.len); + self.measure(123usize, 22usize, event.len); + self.measure(124usize, 23usize, event.gso_offset); let _ = event; let _ = meta; } @@ -2842,9 +2864,9 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(124usize, 55usize, 1usize); - self.measure(125usize, 24usize, event.len); - self.measure(126usize, 25usize, event.len); + self.count(125usize, 56usize, 1usize); + self.measure(126usize, 24usize, event.len); + self.measure(127usize, 25usize, event.len); let _ = event; let _ = meta; } @@ -2856,10 +2878,10 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(127usize, 56usize, 1usize); - self.measure(128usize, 26usize, event.len); - self.measure(129usize, 27usize, event.len); - self.count_nominal(130usize, 27usize, &event.reason); + self.count(128usize, 57usize, 1usize); + self.measure(129usize, 26usize, event.len); + self.measure(130usize, 27usize, event.len); + self.count_nominal(131usize, 27usize, &event.reason); let _ = event; let _ = meta; } @@ -2871,8 +2893,8 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(131usize, 57usize, 1usize); - self.count_nominal(132usize, 28usize, &event.error); + self.count(132usize, 58usize, 1usize); + self.count_nominal(133usize, 28usize, &event.error); let _ = event; let _ = meta; } @@ -2880,17 +2902,17 @@ impl event::Subscriber for Subscriber { fn on_platform_tx(&mut self, meta: &api::EndpointMeta, event: &api::PlatformTx) { #[allow(unused_imports)] use api::*; - self.count(133usize, 58usize, 1usize); - self.count(134usize, 59usize, event.count); - self.measure(135usize, 28usize, event.count); - self.count(136usize, 60usize, event.syscalls); - self.measure(137usize, 29usize, event.syscalls); - self.count(138usize, 61usize, event.blocked_syscalls); - self.measure(139usize, 30usize, event.blocked_syscalls); - self.count(140usize, 62usize, event.total_errors); - self.measure(141usize, 31usize, event.total_errors); - self.count(142usize, 63usize, event.dropped_errors); - self.measure(143usize, 32usize, event.dropped_errors); + self.count(134usize, 59usize, 1usize); + self.count(135usize, 60usize, event.count); + self.measure(136usize, 28usize, event.count); + self.count(137usize, 61usize, event.syscalls); + self.measure(138usize, 29usize, event.syscalls); + self.count(139usize, 62usize, event.blocked_syscalls); + self.measure(140usize, 30usize, event.blocked_syscalls); + self.count(141usize, 63usize, event.total_errors); + self.measure(142usize, 31usize, event.total_errors); + self.count(143usize, 64usize, event.dropped_errors); + self.measure(144usize, 32usize, event.dropped_errors); let _ = event; let _ = meta; } @@ -2898,7 +2920,7 @@ impl event::Subscriber for Subscriber { fn on_platform_tx_error(&mut self, meta: &api::EndpointMeta, event: &api::PlatformTxError) { #[allow(unused_imports)] use api::*; - self.count(144usize, 64usize, 1usize); + self.count(145usize, 65usize, 1usize); let _ = event; let _ = meta; } @@ -2906,17 +2928,17 @@ impl event::Subscriber for Subscriber { fn on_platform_rx(&mut self, meta: &api::EndpointMeta, event: &api::PlatformRx) { #[allow(unused_imports)] use api::*; - self.count(145usize, 65usize, 1usize); - self.count(146usize, 66usize, event.count); - self.measure(147usize, 33usize, event.count); - self.count(148usize, 67usize, event.syscalls); - self.measure(149usize, 34usize, event.syscalls); - self.count(150usize, 68usize, event.blocked_syscalls); - self.measure(151usize, 35usize, event.blocked_syscalls); - self.count(152usize, 69usize, event.total_errors); - self.measure(153usize, 36usize, event.total_errors); - self.count(154usize, 70usize, event.dropped_errors); - self.measure(155usize, 37usize, event.dropped_errors); + self.count(146usize, 66usize, 1usize); + self.count(147usize, 67usize, event.count); + self.measure(148usize, 33usize, event.count); + self.count(149usize, 68usize, event.syscalls); + self.measure(150usize, 34usize, event.syscalls); + self.count(151usize, 69usize, event.blocked_syscalls); + self.measure(152usize, 35usize, event.blocked_syscalls); + self.count(153usize, 70usize, event.total_errors); + self.measure(154usize, 36usize, event.total_errors); + self.count(155usize, 71usize, event.dropped_errors); + self.measure(156usize, 37usize, event.dropped_errors); let _ = event; let _ = meta; } @@ -2924,7 +2946,7 @@ impl event::Subscriber for Subscriber { fn on_platform_rx_error(&mut self, meta: &api::EndpointMeta, event: &api::PlatformRxError) { #[allow(unused_imports)] use api::*; - self.count(156usize, 71usize, 1usize); + self.count(157usize, 72usize, 1usize); let _ = event; let _ = meta; } @@ -2936,7 +2958,7 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(157usize, 72usize, 1usize); + self.count(158usize, 73usize, 1usize); let _ = event; let _ = meta; } @@ -2948,7 +2970,7 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(158usize, 73usize, 1usize); + self.count(159usize, 74usize, 1usize); let _ = event; let _ = meta; } @@ -2960,8 +2982,8 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(159usize, 74usize, 1usize); - self.time(160usize, 14usize, event.processing_duration); + self.count(160usize, 75usize, 1usize); + self.time(161usize, 14usize, event.processing_duration); let _ = event; let _ = meta; } @@ -2973,7 +2995,7 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(161usize, 75usize, 1usize); + self.count(162usize, 76usize, 1usize); let _ = event; let _ = meta; } diff --git a/quic/s2n-quic-core/src/event/generated/metrics/probe.rs b/quic/s2n-quic-core/src/event/generated/metrics/probe.rs index 87a63f5c5..4262b3544 100644 --- a/quic/s2n-quic-core/src/event/generated/metrics/probe.rs +++ b/quic/s2n-quic-core/src/event/generated/metrics/probe.rs @@ -69,32 +69,33 @@ mod counter { 102usize => Self(pacing_rate_updated), 106usize => Self(bbr_state_changed), 108usize => Self(dc_state_changed), - 114usize => Self(connection_closed), - 117usize => Self(version_information), - 118usize => Self(endpoint_packet_sent), - 119usize => Self(endpoint_packet_received), - 120usize => Self(endpoint_datagram_sent), - 124usize => Self(endpoint_datagram_received), - 127usize => Self(endpoint_datagram_dropped), - 131usize => Self(endpoint_connection_attempt_failed), - 133usize => Self(platform_tx), - 134usize => Self(platform_tx__packets__total), - 136usize => Self(platform_tx__syscalls__total), - 138usize => Self(platform_tx__syscalls__blocked__total), - 140usize => Self(platform_tx__errors__total), - 142usize => Self(platform_tx__errors__dropped__total), - 144usize => Self(platform_tx_error), - 145usize => Self(platform_rx), - 146usize => Self(platform_rx__packets__total), - 148usize => Self(platform_rx__syscalls__total), - 150usize => Self(platform_rx__syscalls__blocked__total), - 152usize => Self(platform_rx__errors__total), - 154usize => Self(platform_rx__errors__dropped__total), - 156usize => Self(platform_rx_error), - 157usize => Self(platform_feature_configured), - 158usize => Self(platform_event_loop_wakeup), - 159usize => Self(platform_event_loop_sleep), - 161usize => Self(platform_event_loop_started), + 114usize => Self(dc_path_created), + 115usize => Self(connection_closed), + 118usize => Self(version_information), + 119usize => Self(endpoint_packet_sent), + 120usize => Self(endpoint_packet_received), + 121usize => Self(endpoint_datagram_sent), + 125usize => Self(endpoint_datagram_received), + 128usize => Self(endpoint_datagram_dropped), + 132usize => Self(endpoint_connection_attempt_failed), + 134usize => Self(platform_tx), + 135usize => Self(platform_tx__packets__total), + 137usize => Self(platform_tx__syscalls__total), + 139usize => Self(platform_tx__syscalls__blocked__total), + 141usize => Self(platform_tx__errors__total), + 143usize => Self(platform_tx__errors__dropped__total), + 145usize => Self(platform_tx_error), + 146usize => Self(platform_rx), + 147usize => Self(platform_rx__packets__total), + 149usize => Self(platform_rx__syscalls__total), + 151usize => Self(platform_rx__syscalls__blocked__total), + 153usize => Self(platform_rx__errors__total), + 155usize => Self(platform_rx__errors__dropped__total), + 157usize => Self(platform_rx_error), + 158usize => Self(platform_feature_configured), + 159usize => Self(platform_event_loop_wakeup), + 160usize => Self(platform_event_loop_sleep), + 162usize => Self(platform_event_loop_started), _ => unreachable!("invalid info: {info:?}"), } } @@ -206,6 +207,8 @@ mod counter { fn bbr_state_changed(value: u64); # [link_name = s2n_quic__event__counter__dc_state_changed] fn dc_state_changed(value: u64); + # [link_name = s2n_quic__event__counter__dc_path_created] + fn dc_path_created(value: u64); # [link_name = s2n_quic__event__counter__connection_closed] fn connection_closed(value: u64); # [link_name = s2n_quic__event__counter__version_information] @@ -324,9 +327,9 @@ mod counter { 98usize => Self(slow_start_exited__cause), 107usize => Self(bbr_state_changed__state), 113usize => Self(dc_state_changed__state), - 116usize => Self(connection_closed__error), - 130usize => Self(endpoint_datagram_dropped__reason), - 132usize => Self(endpoint_connection_attempt_failed__error), + 117usize => Self(connection_closed__error), + 131usize => Self(endpoint_datagram_dropped__reason), + 133usize => Self(endpoint_connection_attempt_failed__error), _ => unreachable!("invalid info: {info:?}"), } } @@ -458,23 +461,23 @@ mod measure { 103usize => Self(pacing_rate_updated__bytes_per_second), 104usize => Self(pacing_rate_updated__burst_size), 105usize => Self(pacing_rate_updated__pacing_gain), - 121usize => Self(endpoint_datagram_sent__bytes), - 122usize => Self(endpoint_datagram_sent__bytes__total), - 123usize => Self(endpoint_datagram_sent__gso_offset), - 125usize => Self(endpoint_datagram_received__bytes), - 126usize => Self(endpoint_datagram_received__bytes__total), - 128usize => Self(endpoint_datagram_dropped__bytes), - 129usize => Self(endpoint_datagram_dropped__bytes__total), - 135usize => Self(platform_tx__packets), - 137usize => Self(platform_tx__syscalls), - 139usize => Self(platform_tx__syscalls__blocked), - 141usize => Self(platform_tx__errors), - 143usize => Self(platform_tx__errors__dropped), - 147usize => Self(platform_rx__packets), - 149usize => Self(platform_rx__syscalls), - 151usize => Self(platform_rx__syscalls__blocked), - 153usize => Self(platform_rx__errors), - 155usize => Self(platform_rx__errors__dropped), + 122usize => Self(endpoint_datagram_sent__bytes), + 123usize => Self(endpoint_datagram_sent__bytes__total), + 124usize => Self(endpoint_datagram_sent__gso_offset), + 126usize => Self(endpoint_datagram_received__bytes), + 127usize => Self(endpoint_datagram_received__bytes__total), + 129usize => Self(endpoint_datagram_dropped__bytes), + 130usize => Self(endpoint_datagram_dropped__bytes__total), + 136usize => Self(platform_tx__packets), + 138usize => Self(platform_tx__syscalls), + 140usize => Self(platform_tx__syscalls__blocked), + 142usize => Self(platform_tx__errors), + 144usize => Self(platform_tx__errors__dropped), + 148usize => Self(platform_rx__packets), + 150usize => Self(platform_rx__syscalls), + 152usize => Self(platform_rx__syscalls__blocked), + 154usize => Self(platform_rx__errors), + 156usize => Self(platform_rx__errors__dropped), _ => unreachable!("invalid info: {info:?}"), } } @@ -602,8 +605,8 @@ mod timer { 110usize => Self(dc_state_changed__no_version_negotiated__latency), 111usize => Self(dc_state_changed__path_secrets__latency), 112usize => Self(dc_state_changed__complete__latency), - 115usize => Self(connection_closed__latency), - 160usize => Self(platform_event_loop_sleep__processing_duration), + 116usize => Self(connection_closed__latency), + 161usize => Self(platform_event_loop_sleep__processing_duration), _ => unreachable!("invalid info: {info:?}"), } } diff --git a/quic/s2n-quic-transport/src/space/session_context.rs b/quic/s2n-quic-transport/src/space/session_context.rs index 438b18e1f..214cb9053 100644 --- a/quic/s2n-quic-transport/src/space/session_context.rs +++ b/quic/s2n-quic-transport/src/space/session_context.rs @@ -31,7 +31,7 @@ use s2n_quic_core::{ dc::{self, Endpoint as _}, event::{ self, - builder::{DcState, DcStateChanged}, + builder::{DcPathCreated, DcState, DcStateChanged}, IntoEvent, }, packet::number::PacketNumberSpace, @@ -474,6 +474,12 @@ impl Config::ENDPOINT_TYPE.into_event(), ); let dc_path = self.dc.new_path(&conn_info); + + // &mut would be ideal but events currently need to be `Clone`, and we're OK with + // pushing interior mutability for now. dc is all unstable anyway. + self.publisher + .on_dc_path_created(DcPathCreated { path: &dc_path }); + crate::dc::Manager::new(dc_path, dc_version, self.publisher) } else { if Config::DcEndpoint::ENABLED { diff --git a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_handshake_self_test__events.snap b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_handshake_self_test__events.snap index 79fa6d408..56685073f 100644 --- a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_handshake_self_test__events.snap +++ b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_handshake_self_test__events.snap @@ -118,6 +118,7 @@ count#frame_received.frame|PADDING=1 count#application_protocol_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=99.999ms +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=99.999ms timer#dc_state_changed.no_version_negotiated.latency=99.999ms @@ -465,6 +466,7 @@ count#application_protocol_information=1 count#server_name_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=1µs +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=1µs timer#dc_state_changed.no_version_negotiated.latency=1µs diff --git a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_auth_failure_self_test__events.snap b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_auth_failure_self_test__events.snap index 2df227bec..3403d95ac 100644 --- a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_auth_failure_self_test__events.snap +++ b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_auth_failure_self_test__events.snap @@ -123,6 +123,7 @@ count#frame_received.frame|CRYPTO=1 count#application_protocol_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=99.999ms +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=99.999ms timer#dc_state_changed.no_version_negotiated.latency=99.999ms @@ -316,6 +317,7 @@ count#application_protocol_information=1 count#server_name_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=1µs +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=1µs timer#dc_state_changed.no_version_negotiated.latency=1µs diff --git a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_self_test__events.snap b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_self_test__events.snap index 60de1e8fa..d4e5b18cf 100644 --- a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_self_test__events.snap +++ b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_self_test__events.snap @@ -123,6 +123,7 @@ count#frame_received.frame|CRYPTO=1 count#application_protocol_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=99.999ms +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=99.999ms timer#dc_state_changed.no_version_negotiated.latency=99.999ms @@ -470,6 +471,7 @@ count#application_protocol_information=1 count#server_name_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=1µs +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=1µs timer#dc_state_changed.no_version_negotiated.latency=1µs diff --git a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_not_secret_control_packet__events.snap b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_not_secret_control_packet__events.snap index ec98d7d33..6e0287b7d 100644 --- a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_not_secret_control_packet__events.snap +++ b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_not_secret_control_packet__events.snap @@ -123,6 +123,7 @@ count#frame_received.frame|CRYPTO=1 count#application_protocol_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=99.999ms +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=99.999ms timer#dc_state_changed.no_version_negotiated.latency=99.999ms @@ -565,6 +566,7 @@ count#application_protocol_information=1 count#server_name_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=1µs +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=1µs timer#dc_state_changed.no_version_negotiated.latency=1µs diff --git a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_secret_control_packet__events.snap b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_secret_control_packet__events.snap index 1ddaacf9c..72c716ae7 100644 --- a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_secret_control_packet__events.snap +++ b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_secret_control_packet__events.snap @@ -123,6 +123,7 @@ count#frame_received.frame|CRYPTO=1 count#application_protocol_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=99.999ms +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=99.999ms timer#dc_state_changed.no_version_negotiated.latency=99.999ms @@ -561,6 +562,7 @@ count#application_protocol_information=1 count#server_name_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=1µs +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=1µs timer#dc_state_changed.no_version_negotiated.latency=1µs